Shell
如何“查找”所有具有 0** 權限的文件和文件夾?
我遇到了一個奇怪的情況,我發現許多文件和文件夾設置了 000 權限。這很容易通過以下方式修復:
sudo find . -perm 000 -type f -exec chmod 664 {} \; sudo find . -perm 000 -type d -exec chmod 775 {} \;
不幸的是,我突然意識到問題有點複雜,有一些奇怪的權限,比如 044 和一些其他奇怪的設置。事實證明,這些都是散落的和不可預測的。
有沒有辦法搜尋諸如 0** 或其他非常有限的權限配置之類的權限?
我會使用這樣的東西:
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
使用GNU
find
,您可以通過查找與“為所有者設置的任何位”不匹配的文件來做到這一點:find . ! -perm /700
例如FreeBSD
find
中的相同是find . ! -perm +700
兩者的工作方式相同。如果設置了任何所有者權限位,則匹配
-perm /700
;如果沒有設置所有者權限位,則否定,所以或匹配。其他位被忽略。-perm +700``!``! -perm /700``! -perm +700