編輯

編輯

我已經使用 Linux 很久了仍然我對文件權限的實際工作原理完全一無所知。考慮到這一點,是否有人有任何書籍或詳盡的指南可供我閱讀以真正完全理解事物?我已經完成了系統管理方面的工作,所以我知道一些簡單的事情,例如使目錄可讀可寫、使文件可執行以及更改文件的所有者,但是在跨用戶共享文件時,我迷失了。

這是我的主要問題。我有很多台機器,我打算在它們之間同步我的音樂庫。我已經使用 Unison 一段時間了,它是一個不錯的選擇,因為我可以在我剛剛設定的本地網路上透過 SSH 輕鬆運行它。雙贏。

到目前為止,我一直在使用 2TB 外部硬碟同步​​電腦。 (電腦 1 統一到高清,電腦 2 統一到高清,等等)這充其量是乏味的,特別是因為我對驅動器進行了加密,使得將其連接到我的所有電腦並同步它成為一個巨大的麻煩。無論如何,驅動器運行的是 ext4(在 TrueCrypt 中),因此它維護所有 Unix 檔案系統信息,例如所有者和群組。我剛剛設定了一台新機器,然後 Unison 了它以獲取音樂,我意識到現在我的所有權限都是 fubar。我必須以 root 身分執行 Unison,因為這是我可以從外部磁碟機中取出檔案的唯一方法。顯然,由於我在這台機器上使用的用戶名與我在所有機器上常用的「rfkrocktk」不同,這實際上為齒輪帶來了巨大的影響。

這是我的用例。這台筆記型電腦有兩個有效用戶,「leandra」和「rfkrocktk」。我想在這兩個用戶之間共享音樂,因此我符號連結 /home/rfkrocktk/Music 以指向 /home/leandra/Music。我如何 (a) 允許兩個使用者存取該資料夾中的讀取/寫入/刪除文件,以及 (b) 使所有內容保持良好同步而不弄亂文件所有權?


編輯

我能夠讓事情開始運作,但還沒有完全完成。我將音樂目錄的群組 ID 設定為我的群組media-users,並將我的主用戶rfkrocktk和共享使用者新增mt-daapd至該群組。現在,rfkrocktk可以完美存取文件,但mt-daapd看不到目錄中的任何內容。這是我的 ID:

$ id rfkrocktk
> uid=1000(rfkrocktk) gid=1000(rfkrocktk) groups=1000(rfkrocktk),4(adm),20(dialout),24(cdrom),29(audio),46(plugdev),104(lpadmin),115(admin),120(sambashare),124(vboxusers),1001(jupiter),2002(media-users)

$ id mt-daapd
> uid=123(mt-daapd) gid=65534(nogroup) groups=65534(nogroup),2002(media-users)

我嘗試將mt-daap的主組 id 設定為該media-users組,但它沒有改變任何內容。

這是我對該/home/rfkrocktk/Music目錄的權限:

drwxr-Sr-- 201 rfkrocktk media-users 12288 2011-01-13 12:26 Music

跑步sudo -i -u mt-daapd ls -l /home/rfkrocktk/Music不會產生任何結果。我怎樣才能解決這個問題?

答案1

我將檔案擁有者設為 root,將群組設定為“音樂”之類的名稱,然後使它們都是“音樂”群組的成員。然後,將音樂目錄設定為setgid(這意味著在目錄中建立的項目將繼承目錄本身的群組所有權)。然後,將檔案權限設定為0660,一切就完成了。

檔案權限是使用者、群組、世界,通常顯示為八進制數(例如 0660),其中:

1 - 執行 2 - 寫入 4 - 讀取

這些是可以添加的,例如0751表示文件所有者可以讀取、寫入、執行;組可以讀取和執行;其他人只能執行。

答案2

名字並不重要。 Unix 檔案和群組所有權儲存在檔案系統中,並按數字存儲,而不是按名稱儲存。從您的原始電腦以普通使用者身分開啟一個終端機並輸入:

id -u

這將為您提供您的用戶的數位 ID。檢查文件所有權時,會比較您登入的使用者 ID 和檔案系統中的 ID。顯示使用者名稱時,透過查詢 passwd 將 ID 轉換為文本,從而得到您的本地名稱。

在您的新機器上執行與上述相同的步驟。身分證不一樣嗎​​?如果不同,那麼新電腦上的「您」就不是文件的擁有者。在兩台機器上,類似地,如果你說

id -G

您將獲得您的使用者所屬群組 ID 的清單。每個文件的群組必須與這些 ID 之一匹配,否則它不屬於您的群組。您可以使用ls -nd file或取得文件的實際數位使用者和群組stat file

在大多數情況下,兩個不同的系統不會具有相同的使用者 ID。您可以透過編輯 passwd 來手動同步它們,但隨後您必須仔細更新系統上的所有文件,以將任何舊 ID 轉換為等效的新 ID。在系統之間同步 ID 是一項複雜的任務,大多數家庭用戶不會費心;這是 LDAP、NIS 和其他類似解決方案的領域。

為了解決您的問題,您需要使兩個系統上都存在的群組 ID 擁有所有文件,然後確保兩個系統上的使用者都是該群組的成員,然後chmod g+rw向該群組授予讀取/寫入存取權限 ( ) 。

答案3

您可以將 Music 目錄(及其所有檔案和子目錄)設定為具有 775 權限,以便檔案的擁有者以及同一群組中的任何人都可以對檔案執行任何他們想要的操作。然後下一個技巧是使用您想要的任何名稱(例如共享)建立一個新群組,並將 Music 目錄(及其所有檔案和子目錄)chgrp 到新群組。現在您只需確保您授予共享文件讀取/寫入存取權限的使用者位於「共用」群組中。如果您需要在其他電腦上進行此操作,只需注意共用群組在所有電腦中具有相同的數位 ID 即可。

答案4

這裡我發現有用的權限解釋。 這個, 也。

相關內容