在 Linux 系統中,用戶管理是系統管理員的核心工作之一,涉及用戶賬號的創建、修改、刪除、權限分配等操作。Linux 采用多用戶多任務機制,通過嚴格的用戶和組管理確保系統安全性和資源分配合理性。以下是 Linux 用戶操作的詳細介紹:
一、用戶賬號的基本概念
用戶類型
- 超級用戶(root):擁有系統最高權限(UID=0),可執行所有操作。
- 系統用戶:用于運行服務(如
nginx
、mysql
),通常不允許登錄,UID 范圍一般為 1-999(不同發行版可能不同)。 - 普通用戶:由 root 創建的用戶,權限受限制,UID 范圍通常從 1000 開始。
用戶標識
- UID(User ID):系統識別用戶的唯一數字標識(如 root 的 UID 為 0)。
- GID(Group ID):用戶所屬主組的唯一標識。
- 用戶名:用戶登錄時使用的字符串(如
alice
、bob
)。
關鍵配置文件
/etc/passwd
:存儲用戶賬號基本信息(用戶名、UID、GID、家目錄等)。/etc/shadow
:存儲用戶密碼哈希及密碼策略(權限為 000,僅 root 可讀取)。/etc/group
:存儲組信息(組名、GID、成員列表)。/etc/gshadow
:存儲組密碼信息(較少使用)。
二、用戶賬號管理命令
1. 創建用戶(useradd
)
用于新建用戶賬號,語法:
useradd [選項] 用戶名
常用選項:
-u <UID>
:指定用戶的 UID(需確保唯一)。-g <GID/組名>
:指定用戶的主組(默認會創建與用戶名同名的組)。-G <組1,組2>
:指定用戶的附加組(逗號分隔多個組)。-d <家目錄>
:指定用戶的家目錄(默認/home/用戶名
)。-s <shell路徑>
:指定用戶的登錄 shell(默認/bin/bash
,禁止登錄可設為/sbin/nologin
)。-m
:自動創建家目錄(默認創建,部分發行版需顯式指定)。-c <注釋>
:添加用戶注釋(如全名、用途)。
示例:
# 創建用戶alice,主組為users,附加組為sudo,家目錄為/home/alice,shell為bash
useradd -g users -G sudo -d /home/alice -s /bin/bash -c "Alice Smith" alice
2. 設置 / 修改密碼(passwd
)
用于管理用戶密碼,語法:
passwd [選項] 用戶名 # 不指定用戶名則修改當前用戶密碼
常用選項:
-l
:鎖定用戶(密碼前加!
,禁止登錄)。-u
:解鎖用戶。-d
:刪除用戶密碼(允許空密碼登錄,不推薦)。-e
:強制用戶下次登錄時修改密碼。-n <天數>
:設置密碼最小有效期(不能提前修改)。-x <天數>
:設置密碼最大有效期(過期需修改)。
示例:
# 為alice設置密碼(輸入時無回顯)
passwd alice# 強制alice下次登錄修改密碼
passwd -e alice
3. 修改用戶信息(usermod
)
用于修改已有用戶的屬性,語法:
usermod [選項] 用戶名
常用選項(與useradd
類似,新增關鍵選項):
-aG <組>
:追加附加組(需配合-G
,否則會覆蓋原有附加組)。-l <新用戶名>
:修改用戶名(家目錄和 UID 不變)。-m -d <新家目錄>
:移動家目錄到新路徑并更新配置。-s <新shell>
:修改登錄 shell。
示例:
# 將alice的附加組新增docker
usermod -aG docker alice# 修改alice的用戶名為alice_new,并移動家目錄到/home/alice_new
usermod -l alice_new -m -d /home/alice_new alice
4. 刪除用戶(userdel
)
用于刪除用戶賬號,語法:
userdel [選項] 用戶名
常用選項:
-r
:刪除用戶時同時刪除家目錄和郵件目錄(默認僅刪除賬號信息)。
示例:
# 徹底刪除alice(包括家目錄)
userdel -r alice
?? 注意:刪除正在登錄的用戶可能導致文件殘留,建議先確認用戶已退出。
5. 查看用戶信息
id
:查看用戶 UID、GID 及所屬組:id alice # 輸出:uid=1001(alice) gid=100(users) groups=100(users),27(sudo),998(docker)
finger
(需安裝):查看用戶詳細信息(全名、登錄時間等):finger alice
getent
:從系統數據庫中查詢用戶 / 組信息(兼容 NIS/LDAP 等):getent passwd alice # 等價于查看/etc/passwd中alice的行
三、用戶組管理
用戶組用于批量管理權限,每個用戶至少屬于一個主組,可加入多個附加組。
1. 創建組(groupadd
)
語法:
groupadd [選項] 組名
選項:
-g <GID>
:指定組的 GID。
示例:
# 創建GID為1005的組dev
groupadd -g 1005 dev
2. 修改組信息(groupmod
)
語法:
groupmod [選項] 組名
選項:
-g <新GID>
:修改組的 GID。-n <新組名>
:修改組名。
示例:
# 將組dev改名為development
groupmod -n development dev
3. 刪除組(groupdel
)
語法:
groupdel 組名 # 需確保組不是任何用戶的主組,否則需先修改用戶主組
4. 管理組成員(gpasswd
)
語法:
gpasswd [選項] 組名
常用選項:
-a <用戶名>
:添加用戶到組。-d <用戶名>
:從組中刪除用戶。-M <用戶1,用戶2>
:批量設置組成員(覆蓋原有成員)。
示例:
# 將alice添加到development組
gpasswd -a alice development# 批量設置development組的成員為alice和bob
gpasswd -M alice,bob development
四、用戶切換與權限提升
1. 切換用戶(su
)
用于切換到其他用戶身份,語法:
su [選項] 用戶名 # 不指定用戶名默認切換到root
選項:
-
?或?-l
:模擬完整登錄環境(加載目標用戶的環境變量)。-c <命令>
:以目標用戶身份執行單個命令后返回當前用戶。
示例:
# 切換到root并加載環境變量
su - root# 以alice身份執行ls命令
su - alice -c "ls /home/alice"
2. 權限提升(sudo
)
允許普通用戶以 root 權限執行指定命令(需配置sudoers
文件)。
配置方法:
- 執行?
visudo
?打開sudoers
配置文件(自動校驗語法,比直接編輯更安全)。 - 添加規則:
bash
# 允許alice執行所有命令(需輸入alice自己的密碼) alice ALL=(ALL) ALL# 允許sudo組成員執行所有命令(無需密碼) %sudo ALL=(ALL) NOPASSWD: ALL
使用示例:
# 以root權限安裝軟件
sudo apt install nginx
五、用戶登錄相關操作
1. 查看當前登錄用戶(who
/w
)
who
:顯示登錄用戶的用戶名、終端、登錄時間和 IP:bash
who # 輸出:alice pts/0 2025-08-04 10:00 (192.168.1.100)
w
:在who
基礎上增加用戶當前運行的命令和系統負載:bash
w # 顯示更詳細的登錄用戶活動信息
2. 強制用戶 logout(pkill
/kill
)
若需強制踢掉登錄用戶,先通過who
獲取其終端(如pts/0
),再發送終止信號:
pkill -kill -t pts/0 # 強制終止pts/0終端的所有進程
六、用戶管理最佳實踐
- 最小權限原則:普通用戶僅授予必要權限,避免直接使用 root 操作。
- 密碼策略:通過
passwd
設置密碼有效期,禁止空密碼,推薦使用復雜密碼(字母 + 數字 + 符號)。 - 定期清理:刪除無用賬號(
userdel -r
),鎖定長期不使用的賬號(passwd -l
)。 - 使用 sudo 替代 su:通過
sudoers
精細控制權限,便于審計操作日志(日志位于/var/log/sudo.log
或/var/log/auth.log
)。 - 避免修改系統用戶:系統用戶(如
bin
、sys
)用于服務運行,隨意修改可能導致服務異常。
通過上述命令和概念,可完成 Linux 用戶從創建到刪除、權限配置的全生命周期管理。合理的用戶管理是保障系統安全和穩定運行的關鍵。