手册页指出:
-perm -mode
表示模式中的所有权限位均已为该文件设置。
-perm /mode
意味着模式中的任何权限位都为该文件设置。
当我使用和/tmp
权限创建两个目录并使用这些命令时,发现这两个目录都具有和权限。1777
1755
1777
1755
find / -perm -1000 -type d
find / -perm /1000 -type d
这就是我感到困惑的原因。我使用 CentOS 7 作为我的发行版。
答案1
八进制 8#1000 是二进制 2#1_000_000_000,它只设置了一位,即粘性位, 所以全部或者任何没有什么区别。
/tmp
已设置所有该一位,并且已设置任何一位。
您会发现至少设置了 2 位的值存在差异,例如在-perm -5000
vs中-perm /5000
(8#5000 是设置了 2 位的 2#101_000_000_000),其中前者返回同时设置了 setuid 和 Sticky 位的文件,而后者返回了其中一个(或两个)设置。
您通常用于/
诸如-perm /111
(可由某人执行)-perm /444
(可由某人读取)或-perm /6000
(setuid 或 setgid,即危险)之类的东西,以及诸如(可由所有人执行)-
之类的东西, (可由其所有者读取和写入)取反 ( )。-perm -111
-perm -600
! -perm -... -exec chmod ...+... {} +