>touch 2000
>touch 4000
>touch 6000
>touch 6600
>ls -l
-rw-r--r-- 1 root root 0 Sep 1 23:17 2000
-rw-r--r-- 1 root root 0 Sep 1 23:17 4000
-rw-r--r-- 1 root root 0 Sep 1 23:17 6000
-rw-r--r-- 1 root root 0 Sep 1 23:17 6600
>chmod 2000 2000
>chmod 4000 4000
>chmod 6000 6000
>chmod 6600 6600
>ls -l
------S--- 1 root root 0 Sep 1 23:17 2000
---S------ 1 root root 0 Sep 1 23:17 4000
---S--S--- 1 root root 0 Sep 1 23:17 6000
-rwS--S--- 1 root root 0 Sep 1 23:17 6600
--创建4个文件,都具有不同suid/sgid位。
>find /home -type f -perm 6000
/home/6000
--完全匹配
>find /home -type f -perm -6000
/home/6000
/home/6600
--这里的-号表示有1的位置一定要正确匹配。
转成二进制来说:
首先6000转成三位的二进制是下面这个样子 110 000 000 000
表示前面两个1一定要匹配,能匹配的就是6000,6600两个文件,
其权限二进制转换过来分别是 110 000 000 000
110 110 000 000
>find /home -type f -perm +6000
/home/6000
/home/2000
/home/4000
/home/6600
--这里+号表示,只要有一个1匹配就行了。
也就是说前2位中,只要有一个1就行,4个文件都符合要求。
翻译成二进制变成 110 000 000 000
010 000 000 000
100 000 000 000
110 110 000 000
从结果可以看出,命令find . -type f -perm +6000就是指定目录下所有具有suid/sgid的程序。
阅读(915) | 评论(0) | 转发(0) |