2012年3月31日 星期六

利用 setfacl 設定預設的群組 umask

要讓新檔案繼承資料夾的 group id 可以用 chmod g+s 來執行 setgid,但光是這樣還是沒辦法達到群組共享的效果,因為群組成員無法寫入其他人的檔案(umask == 0022)。

為了解決這個問題,我們需要 ACL 功能來針對特定資料夾設定 umask。首先你必須在掛載選項上加上 acl 標籤,例如「discard,noatime,defaults,acl」。要注意的是如果你有一些用 bind 的掛載點,記得最上層的那個掛載點的掛載選項一定要加 acl,只加 bind 掛載點的話沒辦法設定預設值(出現 Operation not supported 錯誤)。

加上選項並重掛載以後,可以用 setfacl 調整資料夾的 default umask:

setfacl -dm u::rwx,g::rwx,o::r-x [your_shared_folder]