緯育 2026-0402.2
出自頂極製作所
帳號與群組的管理概念
群組基本管理指令
- 新增群組 (groupadd)
- 基本用法:groupadd [群組名稱]。
- 指定 GID:groupadd -g [GID] [群組名稱]。
- 建立後可透過 cat /etc/group 檢視。
- 修改群組 (groupmod)
- 更改群組名稱:groupmod -n [新群組名稱] [原群組名稱]。
- 更改 GID:groupmod -g [新GID] [群組名稱]。
- 刪除群組 (groupdel)
- 基本用法:groupdel [群組名稱]。
- 若有成員正在使用該群組,系統會提示無法刪除。可使用 -f 強制刪除,但可能導致使用者程式出現問題。
- 刪除後,使用者無法再透過 newgrp 登入該群組。
群組成員與密碼管理
- 管理群組成員 (groupmems)
- 新增成員:groupmems -a [使用者帳號] -g [群組名稱]。
- 移除成員:groupmems -d [使用者帳號] -g [群組名稱]。
- 列出成員:groupmems -l -g [群組名稱]。
- 管理群組密碼與成員 (gpasswd)
- 設定/變更群組密碼:gpasswd [群組名稱]。講師建議非必要不設定密碼,因不設密碼反而更安全。
- 新增成員:gpasswd -a user1,user2 [群組名稱] 或 gpasswd -M user1,user2 [群組名稱] 可一次加入多位成員。注意:此操作會覆蓋原有的成員列表。
- 移除成員:gpasswd -d [使用者帳號] [群組名稱]。
- 設定群組管理者:gpasswd -A [管理者帳號] [群組名稱]。
- 群組設定檔案
- /etc/group:儲存群組基本資訊,包括群組名稱、GID 及成員列表。
- /etc/gshadow:儲存群組的加密密碼與管理者資訊。使用指令管理會自動同步這兩個檔案。
群組切換與權限應用
- 切換與識別使用者群組
- groups [使用者名稱]:查詢指定使用者所屬的所有群組。不加參數則顯示當前使用者。
- id:查看目前使用者詳細的群組資訊。
- newgrp [群組名稱]:切換有效群組。若使用者已是群組成員,無需密碼;若非成員,且群組設有密碼,則需輸入密碼才能切換。
- newgrp -:切換回使用者的主要群組。
- exit:登出當前切換的群組,返回上一層狀態。
- 群組管理者權限
- 群組管理者的唯一功能是新增或移除群組內的其他成員(例如使用 gpasswd -d)。一般群組成員無此權限。
- 應用場景與權限設定
- 共享唯讀資料:將檔案權限設為群組唯讀(如 chmod 640 file),非群組成員則無權限。群組成員無需切換即可讀取。
- 共用可讀寫專案:為實現群組協作(成員間可互相修改檔案),可建立一個共用目錄(如 chmod 770 dir),並要求成員使用 newgrp 切換到該群組後再建立檔案。這樣,新檔案的所屬群組會是共用群組,而非建立者個人的主要群組,確保了其他成員的寫入權限。
- 管理需求:將一般使用者加入特定管理群組(如 netplan 目錄所屬群組),使其在不改變帳號本質的情況下,獲得該資源的管理能力。
使用者帳號建立補充
- useradd -m 的重要性
- 建立使用者時應使用 useradd -m [帳號],-m 參數會自動為使用者建立家目錄 (/home/[帳號])。
- 若省略 -m,則需手動建立家目錄、複製設定檔、並修正擁有者與權限,過程繁瑣。
- 家目錄預設檔案來源 (/etc/skel)
- 新使用者家目錄中的預設檔案(如 .bashrc)是從 /etc/skel 目錄複製而來的。管理員可客製化此目錄以統一新使用者的預設環境。
- 使用者預設值設定檔 (/etc/default/useradd)
- useradd 指令的預設行為(如預設 Shell、家目錄根路徑等)定義在此檔案中。