Permissions

如何檢查主目錄中是否有“其他”權限

  • August 7, 2018

現在,我有一個每天執行的腳本,chmod 是主目錄,從目錄中刪除所有“其他”權限和“組”寫權限。見下文。

#Removing all other permissions on all home directories and write from group

ls /home | sed 's/ //g' |
while read i; do
 chmod -R o-rwx /home/$i
 chmod -R g-w /home/$i
done

這很好用;但是,我希望腳本檢查是否有任何文件需要更改,然後對它們採取行動,而不是每次都這樣做,不管它是否需要它。

我假設我可以將整個事情放在語句中的子函式中if,但我不知道我會在該if語句中執行什麼測試。

如何測試目錄是否需要更改?

使用查找:

find /home/* -type d -maxdepth 0 -perm /g+w,o+rwx -exec chmod g-w,o-rwx '{}' +

如果您想執行此遞歸,如您-R在範例中使用的那樣,請使用此

find /home/* -perm /g+w,o+rwx -exec chmod g-w,o-rwx '{}' +

編輯:

查找選項的簡要說明,詳細請參見man find

-perm一起/mode意味著設置任何位。

經典-exec語法是-exec command '{}' ';'. 字元{}被替換為文件名,引號是為了保護它們免受 shell 的影響,在大多數 shell 上,這不是必需的,但不會造成傷害。';'是命令的結尾,這裡引用對於大多數 shell 來說是必要的,但另一種形式是\;. 缺點是每個更改的文件都會呼叫一次 chmod。使用命令以 終止的替代形式可以避免這種情況+。這種形式呼叫 exec 有很多名字,實際上和 exec 類似xargs,甚至可以節省呼叫 exec 的成本xargs

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