Shell

如何“查找”所有具有 0** 權限的文件和文件夾?

  • August 28, 2018

我遇到了一個奇怪的情況,我發現許多文件和文件夾設置了 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

使用GNUfind,您可以通過查找與“為所有者設置的任何位”不匹配的文件來做到這一點:

find . ! -perm /700

例如FreeBSDfind中的相同是

find . ! -perm +700

兩者的工作方式相同。如果設置了任何所有者權限位,則匹配-perm /700;如果沒有設置所有者權限位,則否定,所以或匹配。其他位被忽略。-perm +700``!``! -perm /700``! -perm +700

引用自:https://unix.stackexchange.com/questions/465081