我遇到了一个奇怪的情况,我发现许多文件和文件夹的权限设置为 000。这很容易通过以下方式修复:
sudo find . -perm 000 -type f -exec chmod 664 {} \;
sudo find . -perm 000 -type d -exec chmod 775 {} \;
不幸的是,我突然意识到问题有点复杂,有一些奇怪的权限,例如 044 和其他一些奇怪的设置。事实证明,这些都是散落的,不可预测的。
有没有办法搜索 0** 等权限或其他此类非常有限的权限配置?
答案1
我会用这样的东西:
find . ! -perm -u=r ! -perm -u=w ! -perm -u=x -ls
或者,如果您更喜欢八进制表示法:
find . ! -perm -400 ! -perm -200 ! -perm -100 -ls
不幸的是,不知道如何将其作为一种-perm
选择。
上面的语法是标准的,除了您可以在不支持获得类似输出的系统上-ls
替换的部分(常见但不是 POSIX)之外。-exec ls -disl {} +
find
-ls
答案2
答案3
如果您使用sfind
或任何程序使用libfind
或 如果您使用BSD find
,您可以使用:
find path -perm +0xxx
查找设置了模式中提到的任何位的文件,因此
find . ! -perm +0700
应该适合你的情况。顺便说一句:这也受到GNU find
.
请注意,这是一个在 POSIX 中未提及或在基于 SVr4 的系统中实现的扩展find
。