Linux
讓程序以任意深度讀取和寫入某個目錄內的所有文件
我有一個由我擁有的目錄(例如
/sync
)和一個由我執行的程序,我希望擁有對該目錄的完全讀寫訪問權限(在我的情況下,該程序是 Resilio Sync,以前稱為 BitTorrent Sync)。此目錄中的所有文件都是個人項目和文件。其中 99% 歸我所有,但有時,出於不可避免的原因,某些目錄和文件是由 root 創建的。我將如何以某種方式讓程序更改、移動和/或刪除此類目錄和文件?我嘗試了粘性位(設置
g+s
on/sync
,以便所有文件繼承該組)和自定義 ACL 規則(嘗試讓粘性位自動傳播到新創建的目錄)的組合,但是,如本答案及其評論,如果沒有 inotify 就無法完成(為簡單起見,我想避免這樣做)。但是,我想知道,也許還有其他方法可以解決這個問題?就像在某個目錄及其中的所有內容中賦予一個特定程序更多權力,而忽略所有文件權限?如果這是可能的,是否有任何我需要注意的安全隱患?
我不認為這個目標需要粘性位。假設程序以使用者身份執行
resilio
,而您的使用者帳戶是olegs
。(我看到執行該過程的是您的帳戶;我添加這個是為了展示。)# Change all ownership to root:root chown -R root:root /sync # Make sure only root (and group members of root) can get a directory listing. chmod 0750 /sync # Now, let's augment standard permissions with ACLs. # Set default masks for all new file system objects in /sync. # (The root user already has permission.) setfacl -d -m u:resilio:7 /sync setfacl -d -m u:olegs:7 /sync # Apply a mask to all existing files (and dirs) to give full control # to the directory contents to olegs and resilio. setfacl -m -R u:resilio:7 /sync setfacl -m -R u:olegs:7 /sync
現在,這些使用者可以完全控制目錄:
root
、olegs
和resilio
. 否則,沒有其他使用者可以看到/sync
目錄的內容。儘管遮罩指定7
(讀/寫/執行),但目錄變為 rwx,文件實際上變為6
(讀/寫)。