• find命令中参数perm的用法


    按照文件权限模式用-perm选项,按文件权限模式来查找文件的话。最好使用八进制的权限表示法。

    如在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件,可以用:

    de>$ find . -perm 755 -printde>
    还有一种表达方法:在八进制数字前面要加一个横杠-,表示都匹配,如-007就相当于777,-006相当于666

    de># ls -l
    -rwxrwxr-x    2 sam      adm             0 10月 31 01:01 http3.conf
    -rw-rw-rw-    1 sam      adm         34890 10月 31 00:57 httpd1.conf
    -rwxrwxr-x    2 sam      adm             0 10月 31 01:01 httpd.conf
    drw-rw-rw-    2 gem      group        4096 10月 26 19:48 sam
    -rw-rw-rw-    1 root     root         2792 10月 31 20:19 temp

    # find . -perm 006
    # find . -perm -006
    ./sam
    ./httpd1.conf
    ./tempde>
    -perm mode:文件许可正好符合mode

    -perm +mode:文件许可部分符合mode

    -perm -mode: 文件许可完全符合mode

    我们首先创建下面的一个例子

    #ls -l ./testdir
    ——S— 1 root root 0 2008-05-06 10:39 2000
    —S—— 1 root root 0 2008-05-06 10:39 4000
    —S–S— 1 root root 0 2008-05-06 10:39 6000
    -rwS–S— 1 root root 0 2008-05-06 10:39 6600


    我创建了4个文件,都具有suid/sgid位。
    假定我执行
    find . -type f -perm 6000
    那么我们显然可以得到下面的结果
    ./60000
    这属于完全匹配。

    如果执行find . -type f -perm -6000呢,其结果是:

    ./6000
    ./6600

    这里的-号表示有1的位置一定要正确匹配,其他无所谓。这里要转成二进制来说,首先6000转成三位的二进制是下面这个样子
    110 000 000 000 
    这表示前面两个1一定要匹配,其他无所谓。那能匹配的就是6000,6600两个文件,其权限二进制转换过来分别是

    110 000 000 000
    110 110 000 000


    而如果是执行find . -type f -perm +6000呢,结果会怎样?

    我们看看结果

    ./6000
    ./2000
    ./4000
    ./6600

    +号的意思是,只要有一个1匹配就行了,也就是说前2位中,只要有一个1就行,所以上面的都符合要求,因为翻译成二进制变成

    110 000 000 000
    010 000 000 000
    100 000 000 000
    110 110 000 000


    所以,从上面的结果可以看出,命令find . -type f -perm +6000就是指定目录下所有具有suid/sgid的程序。

    这是在做安全维护的时候,应该常使用的一个指令。我们首先创建下面的一个例子

    #ls -l ./testdir
    ——S— 1 root root 0 2008-05-06 10:39 2000
    —S—— 1 root root 0 2008-05-06 10:39 4000
    —S–S— 1 root root 0 2008-05-06 10:39 6000
    -rwS–S— 1 root root 0 2008-05-06 10:39 6600

    我创建了4个文件,都具有suid/sgid位。
    假定我执行
    find . -type f -perm 6000
    那么我们显然可以得到下面的结果
    ./60000
    这属于完全匹配。

    如果执行find . -type f -perm -6000呢,其结果是:

    ./6000
    ./6600

    这里的-号表示有1的位置一定要正确匹配,其他无所谓。这里要转成二进制来说,首先6000转成三位的二进制是下面这个样子
    110 000 000 000 
    这表示前面两个1一定要匹配,其他无所谓。那能匹配的就是6000,6600两个文件,其权限二进制转换过来分别是

    110 000 000 000
    110 110 000 000
    而如果是执行find . -type f -perm +6000呢,结果会怎样?
    我们看看结果

    ./6000
    ./2000
    ./4000
    ./6600

    +号的意思是,只要有一个1匹配就行了,也就是说前2位中,只要有一个1就行,所以上面的都符合要求,因为翻译成二进制变成

    110 000 000 000
    010 000 000 000
    100 000 000 000
    110 110 000 000


    所以,从上面的结果可以看出,命令find . -type f -perm +6000就是指定目录下所有具有suid/sgid的程序。

    这是在做安全维护的时候,应该常使用的一个指令
  • 相关阅读:
    UVa 1349 (二分图最小权完美匹配) Optimal Bus Route Design
    UVa 1658 (拆点法 最小费用流) Admiral
    UVa 11082 (网络流建模) Matrix Decompressing
    UVa 753 (二分图最大匹配) A Plug for UNIX
    UVa 1451 (数形结合 单调栈) Average
    UVa 1471 (LIS变形) Defense Lines
    UVa 11572 (滑动窗口) Unique Snowflakes
    UVa 1606 (极角排序) Amphiphilic Carbon Molecules
    UVa 11054 Wine trading in Gergovia
    UVa 140 (枚举排列) Bandwidth
  • 原文地址:https://www.cnblogs.com/guigujun/p/6149858.html
Copyright © 2020-2023  润新知