Permissions
如何檢查主目錄中是否有“其他”權限
現在,我有一個每天執行的腳本,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
。