Linux

如何設置目錄的組讀/執行訪問權限

  • May 13, 2016

我正在執行 Arch 並且剛剛安裝了 XAMPP。我已將文件根目錄更改為 /srv,這是一個單獨的 EXT4 分區。我已將 Apache HTTP 伺服器設置為使用名為“http”的組。我已將我的使用者添加到 http 組。我希望 /srv 文件夾中創建的每個文件都分配給 HTTP 組,並且所有文件都具有組讀取和執行訪問權限。

我已經執行了以下命令:

sudo chgrp -R http /srv/
sudo chmod -R g+rwxs /srv/

並將我的 ~/.bashrc 底部的 umask 設置為:

遮罩 002

但是我注意到兩件事:

  1. 當我提取一個歸 http 組所有的 zip 文件時,我的存檔應用程序創建的直接文件夾的組歸 http 所有,但所有子目錄和文件仍歸預設的“使用者”組所有。
  2. 用 nano 創建一個新文件給了我一個不同的權限(-rw-rw—-),而不是用 Gedit 創建一個(-rw-r–r–)。

我應該使用什麼 umask 來強制user - all, group - read/execute, others - none

無論什麼程序在那裡創建它們,如何強制所有文件歸 http 所有?

這不是人們可能猜到的那麼容易的問題。重點是

  1. 目錄的粘性位
  2. 遮罩
  3. 甚至 ACL(和richacls)

只是預設值。注意可防止程序在創建文件或目錄後更改這些值。存檔程序甚至可能對恢復原始值感興趣。

我無法重現你的zip經歷。我有 Zip 3.0 (openSUSE 13.1)。到這裡父文件夾的粘性組就成功繼承了。

將 ACL 用於預設 ACL(顯式添加組,即不是作為文件組 (ACL_GROUP_OBJ) 而是作為純 ACL 條目)不會阻止應用程序進行修改,但根據我的經驗,這種情況很少發生。

唯一安全的方法是一個特權守護程序,它要麼定期檢查新文件/目錄,要麼隨時收到 FAM 的通知。然後,該守護程序可以更改文件所有權,以便正常程序只能修改(也可能刪除)文件,但不能再更改其訪問權限。也許這也可以用 FUSE 來完成。

引用自:https://unix.stackexchange.com/questions/116158