![-perm -1000 和 -perm /1000 会产生相同的结果来查找设置了粘性位的文件吗?](https://linux22.com/image/221828/-perm%20-1000%20%E5%92%8C%20-perm%20%2F1000%20%E4%BC%9A%E4%BA%A7%E7%94%9F%E7%9B%B8%E5%90%8C%E7%9A%84%E7%BB%93%E6%9E%9C%E6%9D%A5%E6%9F%A5%E6%89%BE%E8%AE%BE%E7%BD%AE%E4%BA%86%E7%B2%98%E6%80%A7%E4%BD%8D%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%97%EF%BC%9F.png)
手册页指出:
-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 ...+... {} +