一、爲什麼要管理用戶和用戶組?¶
在Linux系統中,每個用戶都有唯一的身份標識,用戶組則是用戶的集合。管理用戶和用戶組的核心目的是權限控制和資源隔離:
- 安全隔離:不同用戶擁有不同權限,防止誤操作或惡意訪問(比如普通用戶不能修改系統配置,只有root可以)。
- 協作共享:多個用戶可通過加入同一用戶組,共享文件或目錄的權限(比如開發團隊共用項目目錄)。
- 系統管理:方便批量管理用戶(如按部門劃分用戶組,統一分配權限)。
二、基礎概念解析¶
1. 用戶(User)¶
- 定義:系統的使用者,每個用戶有唯一的 UID(用戶ID)。
- 分類:
- root用戶:系統管理員,UID=0,擁有最高權限。
- 系統用戶:UID=1~999,用於運行系統服務(如
nobody用戶)。 - 普通用戶:UID≥1000,由管理員創建,用於日常操作。
2. 用戶組(Group)¶
- 定義:用戶的集合,用於批量分配權限,每個組有唯一的 GID(組ID)。
- 分類:
- 主組:用戶默認所屬的組,創建文件時默認繼承此組權限。
- 附加組:用戶額外加入的組,可臨時獲得該組權限。
三、核心配置文件¶
Linux通過以下文件存儲用戶和組的信息,初學者需瞭解基本結構:
1. /etc/passwd(用戶基本信息)¶
- 每行代表一個用戶,格式:
用戶名:密碼佔位符:UID:GID:註釋:家目錄:登錄Shell - 示例:
testuser:x:1000:1000::/home/testuser:/bin/bash x:密碼字段(實際密碼存儲在/etc/shadow)1000:用戶ID(UID),1000是普通用戶默認起始值/home/testuser:用戶家目錄(登錄後默認目錄)/bin/bash:用戶登錄後的Shell(/sbin/nologin表示禁止登錄)
2. /etc/group(用戶組信息)¶
- 每行代表一個組,格式:
組名:密碼佔位符:GID:組成員列表 - 示例:
dev:x:1001:testuser,alice dev:組名1001:組ID(GID)testuser,alice:組成員(多個用戶用逗號分隔)
3. /etc/shadow(用戶密碼)¶
- 存儲加密後的密碼,僅root可查看,格式:
用戶名:加密密碼:最後修改時間:密碼有效期:警告時間:過期時間:保留 - 示例:
testuser:$6$...:19500:0:99999:7:::
四、常用管理命令¶
1. 用戶管理¶
創建用戶:useradd¶
- 基礎用法:
useradd 用戶名 - 示例:
useradd -m testuser(-m:自動創建家目錄,否則無家目錄) - 常用參數:
-d /home/newdir:指定家目錄-g dev:指定主組(dev爲組名或GID)-G dev,testgroup:添加附加組(多個組用逗號分隔)-s /bin/bash:指定登錄Shell(默認/bin/bash)
刪除用戶:userdel¶
- 基礎用法:
userdel 用戶名(默認刪除家目錄和文件) - 保留家目錄:
userdel -r 用戶名(-r:刪除用戶時同時刪除家目錄)
修改用戶:usermod¶
- 示例:
- 修改家目錄:
usermod -d /newdir testuser - 修改主組:
usermod -g dev testuser(需確保dev組存在) - 添加附加組:
usermod -aG testgroup testuser(-a:追加,-G覆蓋原有附加組)
設置/修改密碼:passwd¶
- 修改當前用戶密碼:
passwd(直接執行,輸入原密碼) - 設置其他用戶密碼(root權限):
passwd testuser(直接輸入新密碼)
2. 用戶組管理¶
創建組:groupadd¶
- 基礎用法:
groupadd 組名 - 示例:
groupadd dev(創建名爲dev的組)
刪除組:groupdel¶
- 基礎用法:
groupdel 組名 - 注意:若組內有成員,需先刪除成員再刪除組。
查看用戶所屬組:groups¶
- 示例:
groups testuser(顯示用戶所有附加組和主組)
五、實際操作示例¶
1. 創建用戶並分配權限¶
步驟1:創建普通用戶testuser,指定主組dev
# 創建用戶並自動生成家目錄,主組爲dev(需先創建dev組)
groupadd dev
useradd -m -g dev -s /bin/bash testuser
步驟2:設置密碼
passwd testuser # 輸入兩次密碼
步驟3:切換到普通用戶
su - testuser # 切換到testuser,-表示切換環境變量
步驟4:將用戶加入附加組testgroup
groupadd testgroup
usermod -aG testgroup testuser # 追加到testgroup
步驟5:查看用戶信息
id testuser # 輸出:uid=1000(testuser) gid=1001(dev) groups=1001(dev),1002(testgroup)
2. 刪除用戶但保留文件¶
若需刪除用戶但保留其創建的文件(如日誌或配置),需:
userdel -r testuser # 保留家目錄?-r參數會刪除家目錄,此處矛盾!
# 正確做法:先刪除用戶但保留家目錄,再手動清理
userdel testuser # 僅刪除用戶,不刪家目錄
rm -rf /home/testuser # 手動刪除家目錄
六、常見問題與注意事項¶
1. 忘記用戶密碼?¶
- root用戶可重置密碼:
passwd --stdin testuser(CentOS/RHEL需先安裝policycoreutils) - 或:
passwd testuser,輸入新密碼
2. 無法登錄用戶?¶
- 檢查Shell是否正確:
cat /etc/passwd | grep testuser(最後一列應爲/bin/bash而非/sbin/nologin)
3. 多用戶共享目錄權限?¶
- 方法:將所有用戶加入同一組,設置目錄屬組爲該組,並開啓組寫入權限
# 示例:創建共享目錄/data/project,用戶組爲dev
mkdir -p /data/project
chgrp dev /data/project
chmod g+rwx /data/project # 組內用戶可讀寫執行
總結¶
用戶與用戶組管理是Linux系統安全與協作的基礎。通過本文,你已掌握核心命令(創建、刪除、修改)、配置文件(passwd/group/shadow)及實際操作流程。日常管理中,需結合id、groups等命令排查權限問題,避免誤刪用戶或組。實踐中多嘗試創建用戶、切換用戶,逐步熟悉權限分配邏輯,就能熟練掌控Linux用戶體系。