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的程序。

    这是在做安全维护的时候,应该常使用的一个指令
  • 相关阅读:
    java 的 四 个 基 本 特 性 ——封装 继承 多态 抽象
    java中的对象 方法 引用 等一些抽象的概念是什么意思呢?
    谈谈java中的并发(一)
    来说说Java中String 类的那些事情
    Alibaba SpringCloud (一) Nacos 集群环境搭建
    Window 环境下SonarQube的安装与部署
    Windows 环境下MySQL 8.0.15 安装配置指南
    Docker 入门
    Springboot中,Tomcat启动war包的流程
    SpringCloud入门(十一):Sleuth 与 Zipkin分布式链路跟踪
  • 原文地址:https://www.cnblogs.com/guigujun/p/6149858.html
Copyright © 2011-2022 走看看