![組密碼的典型用例](https://rvso.com/image/50720/%E7%B5%84%E5%AF%86%E7%A2%BC%E7%9A%84%E5%85%B8%E5%9E%8B%E7%94%A8%E4%BE%8B.png)
我檢查了半個多世紀的 Unix 經驗,我的同事和我自己都沒有為群組設定過密碼(sg
和gpasswd
)。群組密碼的典型用例是什麼,或者它幾乎只是因為歷史原因而存在?
答案1
我也從來沒有看過這個功能被使用過,一次也沒有。大多數 SA 甚至不知道該設施的存在。在查看手冊頁時,gpasswd
有這樣一條註釋:
關於組密碼的注意事項
Group passwords are an inherent security problem since more than one person is permitted to know the password. However, groups are a useful tool for permitting co-operation between different users.
它們為何存在
我認為模仿使用者擁有密碼的模型是一個自然的想法,將用例模型複製到群組也是有意義的。但實際上它們並沒有什麼用處。
使用群組密碼的想法是,如果您需要存取特定群組(您沒有被列為其成員的群組),您可以使用該newgrp
命令來執行此操作,並透過密碼來獲取存取權限給這些另類群體。
它們的一個大問題是,每個群組只有一個密碼,因此當多個人需要存取這個特定群組時,迫使人們共享這個密碼。
團體
我遇到的大多數環境通常將人們放入輔助群組中,然後授予這些群組存取檔案系統上的檔案的權限,這幾乎滿足了需要發生的所有使用情況。
須藤
隨著附加權限的出現,sudo
可以根據需要向群組授予權限,從而進一步破壞群組密碼可能提供的任何用例。如果您需要允許使用者更多權限,那麼建立角色sudo
然後只允許他們所在的使用者名稱或群組、權限來提升這些權限以便他們可以執行特定任務會更容易。
ACL
最後,建立存取控制清單 (ACL) 的能力確實提供了使用者/群組/其他權限模型無法單獨提供的最後一點靈活性,從而消除了對群組密碼的任何可能需求。
答案2
這是我在工作伺服器上為自己實現的群組密碼的實際用途,因為日誌表明我的帳戶正在被暴力破解(或者可能是字典攻擊)。
我分別使用ssh-keygen
和puttygen
產生密鑰對以供我的工作站和家庭電腦使用。我在家使用的鑰匙需要密碼。我將兩個公鑰添加到,創建了一個帶有密碼但沒有成員的.ssh/authorized_keys
群組。marionette
作為 root,我曾經visudo
添加以下幾行。
Cmnd_Alias SUDOING = /bin/bash, /usr/bin/sudo -i
%marionette ALL=NOPASSWD:SUDOING
我已經停用了我的帳戶密碼,任何人都無法透過這種方式登入。我現在僅使用我的金鑰登錄,並進入受密碼保護的群組,newgrp marionette
允許我使用 成為 root sudo -i
。
如果沒有該NOPASSWD:
選項,它將需要您使用者帳號密碼。如果它已停用且該群組沒有NOPASSWD
,您將無法進行sudo -i
。它還需要您的使用者帳號密碼(如果您的命令清單沒有/bin/bash
或您的 root 預設使用的任何 shell)。
雖然這確實使 sudoing 的路徑更長了幾個步驟,但它增加了良好的安全層。如果您選擇像這樣建立所有帳戶,請建立一個具有密碼和 sudo 權限的本機帳戶,但/etc/ssh/sshd_config
透過新增以下內容來拒絕其 ssh 存取:
DenyUsers root caan
DenyGroups root daleks
這是本機存取所必需的,以防您重新安裝並忘記備份存取金鑰。
答案3
我也從未見過該密碼的用例。這就是大約 20 年的 *nix 經驗。
我想到的唯一用例是將其設為“!” - 鎖定,因此任何人(不是該群組的成員)都無法使用該命令更改該newgrp
群組。
如果我查看 SLES 上的 /etc/group 或基於 RedHat 的系統上的 /etc/gshadow,這似乎是「典型」用例。 SLES 甚至懶得為該密碼創建影子機制。
答案4
讓我建議一個用例。
首先我要說的是,我們已經習慣了「用戶」這個詞,甚至沒有想到它。但「用戶」並不是真正的使用者。例如,我們家裡有三台電腦——我妻子的筆記型電腦、我的筆記型電腦和普通的桌上型電腦。當我使用我妻子的筆記型電腦時,我使用她的使用者帳戶登入。當她使用我的筆記型電腦時,她使用我的使用者帳戶登入。如果有人需要桌面,他或她就使用一個通用帳戶。我們在這裡看到,電腦系統所說的「使用者」並不是真正的使用者。使用者但是一個工作流程- 一組活動。
問題是:為什麼我不能有一項以上的活動──我所從事的每一項不同的工作都有一項活動?我可以。在我的工作電腦上,我(實驗性地)創建了許多不同的用戶,這樣我就可以專注於當前的任務。我將所有這些用戶放在同一個群組中,這樣無論我目前使用哪個用戶,我都可以存取我的文件。
那麼 gpasswd 哪裡適合呢?
Ubuntu 的預設行為是為每個使用者建立一個特殊的群組。
如果我們決定將這些主要群體視為使用者並將系統使用者視為工作流程?
這些新用戶需要密碼才能登入,對嗎?這裡是gpasswd的地方。我仍然需要弄清楚如何登入該群組(到目前為止,我知道如果您已經登錄,您可以使用 gpasswd 切換群組)。