Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux 用戶與群組管理核心配置文件深度解析:/etc/passwd、shadow、group、gshadow

編輯:Linux 系統常見問題解答

Linux 多用戶、多任務的基石是 UID/GID 權限模型。本文深度解析四大核心配置文件的欄位含義、影子機制、一致性檢查與自動化管理工具,助你建立穩健的身份治理體系。

四大文件關係圖

/etc/passwd     → 用戶基本屬性(公開可讀)
/etc/shadow     → 用戶密碼雜湊與過期策略(僅 root 可讀)
/etc/group      → 群組基本屬性與成員(公開可讀)
/etc/gshadow    → 群組密碼與管理員(僅 root 可讀)

1. /etc/passwd — 用戶身份證

root:x:0:0:root:/root:/bin/bash
nginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin
欄位說明範例
1. 登入名用戶名,唯一nginx
2. 密碼佔位x 表示密碼在 /etc/shadowx
3. UID用戶識別碼,0=root,1-999 系統保留996
4. GID主要群組 ID994
5. GECOS註解/描述(指纋、全名、電話等)Nginx web server
6. 家目錄登入後預設工作目錄/var/lib/nginx
7. Shell登入啟動的解釋器,/sbin/nologin 禁止互動登入/sbin/nologin

2. /etc/shadow — 密碼金庫

nginx:$6$rounds=656000$salt$hash:19500:0:99999:7:::
欄位說明
1. 登入名對應 /etc/passwd
2. 加密密碼$id$salt$hash,id=6 為 SHA-512,可含 rounds
3. 最後修改日自 1970-01-01 起天數
4. 最小間隔天數,0=可隨時改
5. 最大壽命天數,99999=永不過期
6. 警告天數過期前幾天開始警告
7. 非活動期限過期後幾天鎖定帳號
8. 絕對過期日自 1970 起天數,帳號完全失效
9. 保留未使用

特殊值:! / !! / * = 帳號鎖定(無法用密碼登入);空值 = 無密碼(極度危險)。

3. /etc/group — 群組名冊

docker:x:995:alice,bob,charlie
欄位說明
1. 群組名唯一
2. 群組密碼x 表示在 /etc/gshadow
3. GID群組識別碼
4. 附屬成員逗號分隔的用戶名列表

4. /etc/gshadow — 群組安全擴展

docker:!:alice:alice,bob
欄位說明
1. 群組名
2. 群組密碼可為空/!/雜湊,極少使用
3. 群組管理員可執行 gpasswd -a user group 的用戶
4. 群組成員同 /etc/group 第 4 欄

用戶角色三分類

角色UID 範圍特徵典型帳號
root0唯一、全權限、可登入root
系統/虛擬用戶1-999無登入 Shell、運行服務、不互動nginx, mysql, systemd-timesync
普通用戶≥1000可登入、受權限約束、家目錄隔離alice, bob, deploy

管理工具鏈

任務指令關鍵參數
新增用戶useradd / adduser (Debian 互動式)-m 建家目錄, -s 指定 shell, -G 附屬群組
修改用戶usermod-l 改名, -d 遷移家目錄, -L/-U 鎖/解鎖, -aG 追加群組
刪除用戶userdel-r 連家目錄一起刪
設定密碼passwd-l 鎖定, -u 解鎖, -e 強制下次改密, -S 狀態
新增群組groupadd-g 指定 GID
修改群組groupmod-n 改名, -g 改 GID
群組成員維護gpasswd-a 加入, -d 移除, -A 設管理員
一致性檢查pwck / grpck-r 唯讀檢查, -s 排序

自動化最佳實踐

# 1. 建立服務帳號(系統用戶、無家目錄、禁止登入)
useradd -r -s /sbin/nologin -c "Prometheus Exporter" node_exporter

# 2. 建立部署帳號(普通用戶、有家目錄、加入 docker 群組)
useradd -m -s /bin/bash -G docker -c "CI/CD Deploy" deploy
echo "deploy:$(openssl rand -base64 16)" | chpasswd

# 3. 批量同步群組成員(從 CMDB API)
mapfile -t USERS < <(curl -s $API | jq -r '.[]')
groupmod -G $(IFS=,; echo "${USERS[*]}") docker

# 4. 定期審計
pwck -r && grpck -r
awk -F: '$3==0 && $1!="root" {print "WARNING: UID 0 user:", $1}' /etc/passwd
awk -F: '$2!~/^[$!]/ {print "WARNING: no password hash:", $1}' /etc/shadow

結語: 四大文件是 Linux 身份體系的「戶政系統」。熟悉欄位含義、善用 useradd/usermod/gpasswd 而非手動 vim、定期跑 pwck/grpck 審計,才能在百台伺服器叢集中保持身份資料乾淨、一致、可追溯。

Copyright © Windows教程網 All Rights Reserved