我正在嘗試使用 來設定我的目錄結構的預設權限acl
。我希望分別對目錄和文件具有以下預設權限:
drwx--x---
-rw-r-----
但是當我將預設權限設為group
僅x
時:
setfacl -R -d -m g::x my_dir
然後新建立的目錄具有我想要的權限,但新建立的檔案具有-rw-------
而不是-rw-r-----
.換句話說,我試圖刪除r
目錄的權限,同時保留r
檔案的權限。
我怎樣才能做到這一點?
答案1
Linux/Solaris ACL 不支援此功能。您不能為檔案和目錄設定不同的預設 ACL。
擁有可以遍歷但其內容無法列出(可執行但不可讀)的目錄很少有用。事實上,它確實有效,這有點歷史上的偶然。是的,它偶爾會很有用——但你真的需要它嗎? (您可能想將其作為一個單獨的問題來問。)
如果您確實需要具有不同權限的目錄和文件,您可以考慮以下幾種可能性:
- 讓您的應用程式變更其建立的檔案的所有權,而不是依賴固有的檔案系統屬性。
預設將所有內容設為私有 (
setfacl -d -m group:mygroup:X
) 並使用中的建議之一Group+rx 權限僅在使用 ACL 的目錄中?:- 透過綁定安裝而不是直接公開群組公共文件。
- 使用 inotify 觀察樹並
setfacl
在新的常規文件上運行。
答案2
看來你不能用 或 來做到這一點setfacl
,umask
因為它們似乎都不允許檔案和目錄有單獨的預設值。有關其他選項,請參閱此類似問題。如果你想強制某些應用程式建立沒有讀取權限的目錄和具有讀取權限的文件,你可以修改它,或者嘗試僅給定一個二進位檔案的 LD_PRELOAD (儘管為此編寫一個庫可能有點大材小用)。