
我注意到,在許多 Linux 發行版上,每當創建新使用者時,它就會被分配到一個具有自己名稱的主要群組。
例如。如果我建立一個名為“testuser”的用戶,它將在預設情況下分配給“testuser”主要群組。
這導致所有用戶都有自己獨特的主要群組。所有這些群組也只會有 1 個用戶,因為將其他用戶加入這些群組實際上沒有意義。這有點違反直覺,因為「組」通常意味著「超過 1」。
當嘗試向檔案/資料夾分配權限時,這些使用者主要群組通常也是無用的。
有什麼原因這是發行版上的預設行為嗎?這種行為實際上有用的任何用例嗎?為什麼不將所有新用戶分配到「用戶」主要群組?
答案1
將使用者置於自己的群組中的原因(據我所知,這是唯一的原因)是為了進行umask 002
合理umask 007
的預設設定。
這遮罩是新建立檔案的預設權限的遮罩。數字意義與 中相同chmod
;第一個數字代表用戶,第二個數字代表組,第三個數字代表其他人。如果 umask 中的某個位元為 1,則會從新建立的檔案的權限中刪除(屏蔽)該位元。例如,如果應用程式建立一個沒有特定隱私要求的非可執行文件,它將傳遞 666 作為文件權限,並且 umask 002 的應用程式將產生一個具有權限 664 的文件(0666 & ~002
類似 C 的表示法),即每個人都可讀且只能由使用者和群組( )寫入的檔案rw-rw-r--
。
使用 umask 022,預設情況下檔案是所有人可讀的,但只能由其作者寫入。使用 umask 002,檔案的擁有者也可以對其進行寫入。如果用戶的主要群組是唯一用戶,且 umask 為 002,則:
- 預設情況下,檔案只能由其作者寫入,因為儘管權限為
rw-rw-r--
,但群組中沒有其他使用者俱有寫入權限。 - 要允許某個群組的成員修改文件,作者只需使用
chgrp
.如果文件是在以下位置建立的,這甚至可以自動發生帶有 setgid 位元的目錄或同等的前十字韌帶。
相對於 022 umask 的優點是,在該設定中,為了讓檔案可供使用者編輯,作者必須做兩件事:設定群組和擴充權限 ( chmod g+w
)。人們往往會忘記第二步(或唯一的一步,在 setgid 目錄中)。
具有特定隱私要求的文件範例:加密金鑰;電子郵件;公共目錄中的任何文件,例如/tmp
.
答案2
習慣上將所有用戶添加到群組中users
,但這使得以受控方式共享文件變得很尷尬(開放群組權限,每個人都可以訪問)。如今,一個進程當時可以屬於多個群組,只需為每個使用者提供自己的群組來關閉存取權限,並透過為此添加明確群組來共享檔案即可。或(如果可用)使用ACL。