1. 認識 Linux 中的群組
在 Linux 作業系統中,群組能幫助按興趣、職責或其他標準將用戶聚合在一起,並分配給他們共同的訪問權限。今天我們來聊聊如何處理群組、向其中添加用戶以及如何合理地進行管理。準備好了嗎?那麼我們開始吧!
讓我們從一個生活中的比喻開始。想像一下,你在玩一個線上遊戲,裡面有公會。每個公會有自己的成員,他們可以訪問公共資源:倉庫、聊天和戰略房間。在 Linux 中,群組扮演了相同的角色。群組允許你:
- 簡化對多位用戶同時訪問文件和資源的管理。
- 根據角色或任務將用戶分組為團隊。
- 減少系統管理員的煩惱。
當系統檢查用戶是否可以訪問文件時,它會查看三個級別的權限:文件所有者、群組和其他人。如果用戶屬於文件中指定的群組,並且該群組有訪問權限,那麼用戶會開心,管理員也會滿意。
2. 群組管理的基礎指令
Linux 提供了一些簡單又強大的工具來操作群組:groupadd, usermod, groups, groupdel 和 gpasswd。我們會一步步來學習。
1. 建立新的群組 groupadd
在系統中建立新群組非常簡單。可以用 groupadd 指令。比如,如果我們想建立一個名為 developers 的群組,執行以下命令:
sudo groupadd developers
搞定!群組已建立。為了確保它真的存在,可以查看檔案 /etc/group —— 這就像系統中所有群組的聯絡人列表:
cat /etc/group | grep developers
你會看到類似下面的行:
developers:x:1001:
這裡面每個部分的含義是:
developers— 群組名稱。x— 密碼欄位(通常不用)。1001— 唯一的 Group ID (GID)。- 雙冒號後的空白部分 — 用於列出該群組內的使用者。
如果 GID 是群組的電話號碼,那麼 /etc/group 就是群組的電話簿。
2. 將使用者新增到群組 usermod -aG
現在讓我們把開發者加入到新群組 developers 裡。可以使用帶有選項 -aG 的 usermod 指令。例如,新增使用者 john:
sudo usermod -aG developers john
這裡有幾個重點要注意:
- 參數
-a表示 append (新增)。如果省略它,可能會不小心把該使用者從所有群組中移除,只留下指定的新群組。 - 參數
-G指定了新增使用者的群組。
可以用命令 groups 檢查使用者加入了哪些群組:
groups john
或者用 id 指令檢查更詳細的資訊:
id john
輸出大概會是這樣的格式:
uid=1002(john) gid=1002(john) groups=1002(john),1001(developers)
3. 從群組中移除使用者
當你的 "開發者" 決定改行當 barista 的時候,你需要把他從群組中移除。可以用指令 gpasswd:
sudo gpasswd -d john developers
執行後,使用者 john 就不再屬於 developers 群組。別忘了用 groups john 檢查確認他已經正式退出了。
4. 刪除群組 groupdel
如果群組已不再需要,可以用 groupdel 指令刪除。例如:
sudo groupdel developers
如果群組中還有使用者,他們並不會因此受到影響。只是他們不再能夠引用這個群組。
3. 實作任務
我們來實際嘗試一下,像真正的管理員一樣創建和設置群組吧。
場景:
- 創建一個群組
designers。 - 創建兩個新用戶:
alice和bob。 - 添加這些用戶到
designers群組。 - 檢查用戶是否被成功添加到群組。
- 從
designers群組中刪除用戶alice。
解決方案:
步驟 1. 創建群組
sudo groupadd designers
步驟 2. 創建用戶
sudo adduser alice
sudo adduser bob
步驟 3. 添加用戶到群組
sudo usermod -aG designers alice
sudo usermod -aG designers bob
步驟 4. 驗證添加
groups alice
groups bob
步驟 5. 從群組刪除 alice
sudo gpasswd -d alice designers
4. 特點和常見錯誤
處理群組就像處理小貓:看起來簡單又輕鬆,但稍不注意,就會搞出一團亂:
選項
-aG。忘記加-a,你會意外地從所有群組中刪除用戶,只留下新群組的成員。這特別“有趣”,如果該用戶本來是系統群組的成員,比如sudo。更改需要重新登入後生效。如果用戶在被添加到新群組後看不到它的效果——別慌!他需要退出系統並重新登入,才能獲得新權限。
注意命名規則。不要在群組名稱中使用空格或特殊字符。像
awesome@group這樣的名稱運行起來會有問題,還會讓管理員抓狂。檢查訪問權限。群組已創建並添加?沒錯,但如果文件沒有為群組設置權限,用戶的期望就會落空。記住這一點:權限需要單獨檢查並分配。
現實生活中
在真實項目中,群組管理可以用來:
- 為開發人員、測試人員和管理員劃分服務器資源的訪問權限。
- 為團隊設置共享的工作目錄。
- 管理對資料庫、配置文件、腳本的訪問權限,還有(當然)咖啡機的訪問權限(好吧,在這方面 Linux 暫時救不了我們)。
現在,當你知道如何在 Linux 中創建和管理群組後,你已經準備好優雅而高效地管理你的系統了。
GO TO FULL VERSION