Linux
如何設置目錄的組讀/執行訪問權限
我正在執行 Arch 並且剛剛安裝了 XAMPP。我已將文件根目錄更改為 /srv,這是一個單獨的 EXT4 分區。我已將 Apache HTTP 伺服器設置為使用名為“http”的組。我已將我的使用者添加到 http 組。我希望 /srv 文件夾中創建的每個文件都分配給 HTTP 組,並且所有文件都具有組讀取和執行訪問權限。
我已經執行了以下命令:
sudo chgrp -R http /srv/ sudo chmod -R g+rwxs /srv/
並將我的 ~/.bashrc 底部的 umask 設置為:
遮罩 002
但是我注意到兩件事:
- 當我提取一個歸 http 組所有的 zip 文件時,我的存檔應用程序創建的直接文件夾的組歸 http 所有,但所有子目錄和文件仍歸預設的“使用者”組所有。
- 用 nano 創建一個新文件給了我一個不同的權限(-rw-rw—-),而不是用 Gedit 創建一個(-rw-r–r–)。
我應該使用什麼 umask 來強制
user - all
,group - read/execute
,others - none
?無論什麼程序在那裡創建它們,如何強制所有文件歸 http 所有?
這不是人們可能猜到的那麼容易的問題。重點是
- 目錄的粘性位
- 遮罩
- 甚至 ACL(和richacls)
只是預設值。注意可防止程序在創建文件或目錄後更改這些值。存檔程序甚至可能對恢復原始值感興趣。
我無法重現你的
zip
經歷。我有 Zip 3.0 (openSUSE 13.1)。到這裡父文件夾的粘性組就成功繼承了。將 ACL 用於預設 ACL(顯式添加組,即不是作為文件組 (ACL_GROUP_OBJ) 而是作為純 ACL 條目)不會阻止應用程序進行修改,但根據我的經驗,這種情況很少發生。
唯一安全的方法是一個特權守護程序,它要麼定期檢查新文件/目錄,要麼隨時收到 FAM 的通知。然後,該守護程序可以更改文件所有權,以便正常程序只能修改(也可能刪除)文件,但不能再更改其訪問權限。也許這也可以用 FUSE 來完成。