我遇到了一个奇怪的情况,我发现许多文件和文件夹设置了 000 权限。这很容易通过以下方式修复:
sudo find . -perm 000 -type f -exec chmod 664 {} \;
sudo find . -perm 000 -type d -exec chmod 775 {} \;
不幸的是,我突然意识到问题有点复杂,有一些奇怪的权限,比如 044 和一些其他奇怪的设置。事实证明,这些都是散落的和不可预测的。
有没有办法搜索诸如 0** 或其他非常有限的权限配置之类的权限?
我会使用这样的东西:
或者,如果您更喜欢八进制表示法:
不幸的是,不知道如何将其作为一种
-perm
选择。上面的语法是标准的,除了可以在不支持获得类似输出的系统上
-ls
替换的部分(常见但不是 POSIX) 。-exec ls -disl {} +
find
-ls
使用GNU
find
,您可以通过查找与“为所有者设置的任何位”不匹配的文件来做到这一点:例如FreeBSD
find
中的相同是两者的工作方式相同。如果设置了任何所有者权限位,则匹配
-perm /700
;如果没有设置所有者权限位,则否定,所以或匹配。其他位被忽略。-perm +700
!
! -perm /700
! -perm +700
如果您使用
sfind
或任何程序使用libfind
或如果您使用BSD find
,您可以使用:查找设置了模式中提到的任何位的文件,所以
应该适用于您的情况。顺便说一句:这也受
GNU find
.请注意,这是一个既未在 POSIX 中提及,也未在基于 SVr4 的
find
.