当前位置:首页 > Linux > linux基础

Linux命令find -perm使用方法

来源:智启教程|时间:2017-03-01 17:25:44

   按照文件权限模式用-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的程序。

  这是在做安全维护的时候,应该常使用的一个指令。

栏目最新

相关文章

关于我们 - 广告合作 - 联系我们 - 免责声明 - 网站地图 - 投诉建议 - 在线投稿

严禁网站镜像,否则追究法律责任 CopyRight © 2014 智启教程 zhiqinet.com , All Rights Reserved.