核心概念:UID 與 GID
Linux 內核不識別用戶名,僅識別數值型 ID:
- UID (User ID):0 = root 超級用戶;1–999 系統保留帳號;≥1000 普通用戶
- GID (Group ID):群組識別碼,對應
/etc/group
/etc/passwd:用戶基本屬性庫
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
七欄位詳細說明
| 欄位 | 名稱 | 說明 |
| 1 | 登入名 | 用戶名稱,唯一 |
| 2 | 密碼佔位符 | x 表示密碼存於 /etc/shadow;* 或 ! 表示鎖定 |
| 3 | UID | 用戶識別碼 |
| 4 | GID | 初始群組 ID(登入時的有效群組) |
| 5 | GECOS | 備註資訊(全名、辦公室、電話等),供 finger 顯示 |
| 6 | 家目錄 | 登入後預設工作目錄 |
| 7 | Shell | 登入程式,/sbin/nologin 禁止互動登入 |
/etc/shadow:加密密碼與老化策略(僅 root 可讀,權限 000/600)
root:$6$salt$hash:19000:0:99999:7:::
九欄位解析
| 欄位 | 含義 | 備註 |
| 1 | 登入名 | 對應 passwd |
| 2 | 加密密碼 | $id$salt$hash,id=6 為 SHA-512 |
| 3 | 最後修改日 | 1970-01-01 起算天數 |
| 4 | 最小間隔 | 0 = 可隨時改;>0 防止立即改回舊密碼 |
| 5 | 最大壽命 | 99999 ≈ 永不過期 |
| 6 | 警告天數 | 過期前開始提醒 |
| 7 | 寬限天數 | 過期後仍可登入並強制改密碼 |
| 8 | 帳號失效日 | 絕對天數,到期完全禁用 |
| 9 | 保留欄位 | 暫無用途 |
/etc/group:群組定義
docker:x:999:user1,user2,user3
四欄位
- 群組名
- 群組密碼佔位符(
x 表示使用 /etc/gshadow)
- GID
- 成員清單(逗號分隔,不含以此為初始群組的用戶)
/etc/gshadow:群組密碼與管理員
docker:!:admin1,admin2:user1,user2
四欄位
- 群組名
- 加密群組密碼(
! 表示無密碼)
- 群組管理員(可用
gpasswd 管理成員)
- 群組成員
群組類型與切換機制
初始群組 vs 有效群組
- 初始群組:
/etc/passwd 第 4 欄 GID,登入時自動生效
- 有效群組:當前建立檔案所屬群組,可用
newgrp groupname 臨時切換
- 附加群組:
/etc/group 第 4 欄列出的群組,授權存取權限用
查看與切換指令
groups # 顯示當前用戶所有群組,第一個為有效群組
groups user1 # 查看指定用戶群組
id user1 # 完整 UID/GID/群組資訊
newgrp docker # 切換有效群組至 docker(開啟新 Shell)
sg docker -c "cmd" # 以 docker 群組身份執行單條命令
系統帳號 vs 普通帳號
| 特徵 | 系統帳號 | 普通帳號 |
| UID 範圍 | 1–999(視發行版而定) | ≥1000 |
| Shell | /sbin/nologin, /bin/false | /bin/bash, /bin/zsh |
| 家目錄 | 通常無或 /var/lib/服務名 | /home/username |
| 用途 | 服務進程身份隔離 | 人工登入操作 |
實務管理工具
vipw / vigr:鎖定檔案並用編輯器安全修改
pwck / grpck:檢查 passwd/shadow/group/gshadow 一致性
pwconv / grpunconv:passwd ↔ shadow 同步轉換