首页 > 技术技巧 > find -perm参数的简单记忆办法

find -perm参数的简单记忆办法

2008年5月6日 wgzhao 发表评论 阅读评论

这应该算是一篇凑数的帖子,就是记录一下怎么记住find里命令-perm参数后面带的数字以及数字前面的+号和-号是什么意思。我这里主要是想说setuid和setgid的问题。

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

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

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

原创文章,转载请注明: 转载自Linux|系统管理|WEB开发

本文链接地址: find -perm参数的简单记忆办法

分类: 技术技巧 标签: , , ,
  1. taoge
    2010年1月11日12:45 | #1

    受教了,谢谢。

    回复回复
  2. xiwang
    2010年4月8日01:31 | #2

    同受教了。
    我一般找setuid和setgid是用
    find . -type -f -perm /u+s

    回复回复
  1. 本文目前尚无任何 trackbacks 和 pingbacks.