Linux 文件/文件夾權限
我有多個文件夾需要多個使用者訪問。具體來說,美杜莎(我用它來跟踪我還沒有備份的電視節目的劇集)、Plex(我用來將我的數字備份流式傳輸到我家周圍的各種設備)和媒體(這是我的使用者登錄名)使用 ssh 進入機器。我遇到的問題是,無論我做什麼,我都無法讓所有三個使用者同時訪問該文件夾。
我已將所有使用者添加到一個組,設置文件/文件夾權限以允許使用者、組和每個人設置的完整 rwx 權限,但似乎仍然無法讓所有三個同時工作。
所有文件/文件夾都在第二個硬碟驅動器 (sdb1) 上,而不是在引導驅動器上,以防萬一這很重要。硬碟驅動器的掛載點是 /media/media/storage2 但是我從 /media/ 開始執行所有命令,因為由於某種原因,如果我不這樣做,使用者最終將無法訪問驅動器上的任何內容。
sudo chown -R plex:server /media/
當我想觀看某些內容時,我使用該命令將文件的 owner:groupOwner 更改為 plex。server 是我創建的包含所有使用者的組。我使用該命令
sudo find /media/ -type d -exec chmod 777 {} \;
更改所有文件夾和sudo find /media/ -type f -exec chmod 777 {} \;
所有文件的權限。我確實意識到 777 對安全性不利,我原本打算使用 775,但在我弄清楚這一點之前,我希望 777 能解決這個問題,但事實並非如此。
我不確定我還能嘗試什麼來實現這一點。
編輯: 嘗試了 JHuffard 的建議,執行了
sudo chown -R plex /media/
,儘管顯示所有相關目錄和文件的sudo chgrp -R server /media/
權限sudo chmod -R 777 /media/
,但一切仍被鎖定。drwxrwxrwx
這些 ACL 命令僅適用於 Linux。首先,將所有所有權和權限設置為標準。
chown -R root:root /media find /media -type d -exec chmod 0755 {} + find /media -type f -exec chmod 0644 {} +
文件
接下來,決定如何正確使用訪問控制列表 (ACL)。(您知道有關哪些使用者和/或組需要對哪些文件或目錄進行讀取或寫入訪問的詳細資訊,但問題中沒有指定這些。)以下是一些範例。請記住,每個範例都設置了顯式 ACL,以便為文件(還不是目錄)正確定義 ACL。稍後,可以將 ACL和預設 ACL 應用於目錄。下面
-m
是要塗抹的面膜。# Give medusa user (u) read-write; give group_name (g) read; give others (o) read. find /media -type f -exec setfacl -m u:medusa:rw-,g:group_name:r--,o:r-- # Give plex user (u) read-write. find /media -type f -exec setfacl -m u:plex:rw- # Give server group (g) read-write. find /media -type f -exec setfacl -m g:server:rw- # Give media user (u) read-write. find /media -type f -exec setfacl -m u:media:rw- # Give media user (u) read-write, server group (g) read-write, others (o) read. find /media -type f -exec setfacl -m u:media:rw-,g:server:rw-,o:r--
目錄
應用於文件的任何 ACL 也可以應用於目錄,但略有不同的是,也可以設置預設 ACL (
-d
)。通過使用該-d
開關,目錄中的所有新文件系統對像都會自動繼承定義的 ACL。重要的是要記住,如果自動將 ACL 應用於新文件,則必須為目錄本身設置 ACL*和預設 ACL。*另請注意,在下面,執行 (x
inrwx
) 是更改目錄 (cd
) 所必需的;但是,這並不意味著執行位適用於文件。相反,執行位僅適用於新目錄。# For each directory itself: find /media -type d -exec setfacl -m u:media:rwx,g:server:rwx,o:r-x {} + # To set a default ACL in each directory - the same command as above with the `-d` switch: find /media -type d -exec setfacl -d -m u:media:rwx,g:server:rwx,o:r-x {} +
對每個 ACL 重複上述兩個命令,根據目標更改使用者和/或組。此操作堆疊 ACL,以便可以根據需要添加任意數量的 ACL,並為每個新文件系統對象自動分配 ACL。
可以使用“ugo”方法(例如:rwx)或八進制(例如:7)。
rwx
r--
rw-
r-x
7
4
6
5
換句話說,以下命令是等效的。
setfacl -m u:media:rwx,g:server:rwx,o:r-x {} + setfacl -m u:media:7,g:server:7,o:5 {} +
組和其他遮罩的工作方式相同:
g:groupname:---
或組合如下。u:username:---,g:groupname:---,o::---
我注意到一個冒號似乎也適用於“其他”。
u:username:---,g:groupname:---,o:---
不指定使用者名或組名會將遮罩應用於目前使用者/組所有權。
不確切知道哪些使用者或組需要什麼級別的訪問權限,很難更準確。可能需要首先進行分析,可能需要在目錄樹的更深處開始該過程。在第一次使用 ACL 時了解如何將它們全部刪除可能會有所幫助:
setfacl -Rb /media
. 此外,人們可能會使用info
和/或man
閱讀關於setfacl
、getfacl
和的手冊acl
。還有很多關於 ACL 的問答。請務必辨別 ACL Q/A 是否適用於 Linux,因為那是有問題的作業系統。(根據主要的作業系統變體,ACL 的實現方式不同。)在此答案頂部設置的標準所有權和權限將由 ACL 增強。無論 ACL 存在於何處,您都會注意到+
標誌存在 - 類似於下面的樣機。drwxr-xr-x 2 root root 4096 Jul 8 16:00 dir_without_acl drwxr-xr-x+ 2 root root 4096 Jul 8 16:00 dir_with_acl
訪問這些文件的服務可能需要重新啟動。