您的位置:首页 > 其它

find命令中参数perm的用法

2016-02-28 14:51 190 查看
按照文件权限模式用-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的程序。

这是在做安全维护的时候,应该常使用的一个指令。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: