zoukankan      html  css  js  c++  java
  • 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的程序。

    这是在做安全维护的时候,应该常使用的一个指令
  • 相关阅读:
    什么是函数式编程
    红包算法
    laravel中查看执行的SQL语句
    身份证号信息后台匹配
    在函数内部访问外部的变量
    设计模式-观察者模式
    laravel查询构造器操作数据库
    linux根目录文件夹的作用
    关于laravel连接数据库报错
    设定起始日期,遍历到今天的日期
  • 原文地址:https://www.cnblogs.com/guigujun/p/6149858.html
Copyright © 2011-2022 走看看