yll*_*ate 3 osx shell permissions find
我遇到了一个奇怪的情况,我发现了许多设置了 000 权限的文件和文件夹。这很容易通过以下方式修复:
sudo find . -perm 000 -type f -exec chmod 664 {} \;
sudo find . -perm 000 -type d -exec chmod 775 {} \;
Run Code Online (Sandbox Code Playgroud)
不幸的是,我突然意识到问题有点复杂,有一些奇怪的权限,比如 044 和其他一些奇怪的设置。事实证明,这些都是散布和不可预测的。
有没有办法搜索诸如 0** 或其他此类非常有限的权限配置之类的权限?
小智 9
我会使用这样的东西:
find . ! -perm -u=r ! -perm -u=w ! -perm -u=x -ls
Run Code Online (Sandbox Code Playgroud)
或者,如果您更喜欢八进制表示法:
find . ! -perm -400 ! -perm -200 ! -perm -100 -ls
Run Code Online (Sandbox Code Playgroud)
不幸的是,不知道如何将其作为一种-perm
选择。
上面的语法是标准的,除了-ls
您可以-exec ls -disl {} +
在find
不支持-ls
获得类似输出的系统上替换的部分(常见但不是 POSIX)。
使用GNUfind
,您可以通过查找与“为所有者设置的任何位”不匹配的文件来执行此操作:
find . ! -perm /700
Run Code Online (Sandbox Code Playgroud)
在例如FreeBSD 中find
相同的是
find . ! -perm +700
Run Code Online (Sandbox Code Playgroud)
这两者的工作方式相同。-perm /700
或-perm +700
匹配,如果任何拥有者的许可位被设置的; 如果没有设置所有者权限位,则!
否定,所以! -perm /700
或! -perm +700
匹配。其他位被忽略。
归档时间: |
|
查看次数: |
2307 次 |
最近记录: |