linux設定檔案許可權(find+chmod)
要求是把一個目錄下的所有目錄及其子目錄設定成555,把所有php檔案設定成444,但是data目錄不變
=。= 最後只能想到這樣的...
find ~/Desktop/test -path ~/Desktop/test/data -prune -o -exec chmod 555 {} \;
find ~/Desktop/test -name "*.php" -exec chmod 444 {} \;
find /home/www/ -type f -exec chmod 644 {} \;
find /home/www/ -type d -exec chmod 755 {} \;
chmod -R 755 /home/www
chmod 644 /home/www
linux系統預設許可權:資料夾的755 下的檔案是644
find命令的引數
pathname: find命令所查詢的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。-print: find命令將匹配的檔案輸出到標準輸出。
-exec: find命令對匹配的檔案執行該引數所給出的shell命令。相應命令的形式為'command' { } \;,注意{ }和\;之間的空格。
-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該引數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓使用者來確定是否執行。 比較有趣的是-prune引數 用來忽略某個目錄find ~/Desktop/test -print 列印全部find ~/Desktop/test -path ~/Desktop/test/data -prune -o -print 列印除data目錄的是 find ~/Desktop/test -path ~/Desktop/test/data -a -prune -o -print 的縮寫-a(邏輯與)和-o(邏輯或)都是短路求值 可以用偽程式碼表示為if path ~/Desktop/test/data then -prune else -print避開多個目錄使用 find ~/Desktop/test \(-path /dir1 -o -path /dir2 \) -prune -o -print chmod命令的引數chmod abc file a,b,c各為一個數字,分別表示User、Group、及Other的許可權
r:讀取許可權,數字代號為4
w:寫入許可權,數字代號為2
x:執行許可權,數字代號為1
-:不具任何許可權,數字代號為0許可權通過邏輯或計算-rw------- (600) -- 只有屬主有讀寫許可權
-rw-r--r-- (644) -- 只有屬主有讀寫許可權;而屬組使用者和其他使用者只有讀許可權
-rwx------ (700) -- 只有屬主有讀、寫、執行許可權
-rwxr-xr-x (755) -- 屬主有讀、寫、執行許可權;而屬組使用者和其他使用者只有讀、執行許可權
-rwx--x--x (711) -- 屬主有讀、寫、執行許可權;而屬組使用者和其他使用者只有執行許可權
-rw-rw-rw- (666) -- 所有使用者都有檔案讀、寫許可權。這種做法不可取
-rwxrwxrwx (777) -- 所有使用者都有讀、寫、執行許可權。更不可取的做法