映像內使用者
使用者記錄位於 os.users。它們在映像內建立帳戶; 與 OpenFactory 網站帳戶或組織角色無關。
規範形狀
{
"os": {
"users": [
{
"username": "deploy",
"full_name": "Deployment Operator",
"groups": ["sudo"],
"shell": "/bin/bash"
}
]
}
}支援的欄位包括 username、選用的 password、full_name、groups、shell,以及 Elster/Vyatta 映像使用的目標特定 level。包含 home 或 comment 的舊範例不符合規範模型,可能會被忽略。
使用者和群組名稱受限於安全的 Linux 帳戶字元和長度。shell 必須是不含空白或 shell 中繼字元的絕對路徑。
密碼行為
不設定 password 會建立密碼已鎖定的帳戶。對於僅金鑰 SSH、首次開機登錄或部署時身分整合,這是首選的配方狀態。
如果包含明文密碼,它會成為敏感建置輸入,並可能透過儲存的配方、日誌或匯出暴露。不要在配方中使用真實的正式環境憑證。Phone 配方必須在裝置上收集憑證,而不是把它們烘焙進映像。
在停用 SSH 密碼驗證之前,確認已核准的公開金鑰或其他存取方法存在且經過測試。否則,正確強化的映像可能無法進入。
群組與特權
sudo和wheel可按發行版授予管理權限。docker通常透過守護程式通訊端授予等效於 root 的控制。kvm在存在時授予對虛擬化裝置的存取。adm可能暴露敏感日誌。
把這些當作特權群組,只授予帳戶所需的內容。發行版特定的群組名稱不可移植。
服務帳戶
對於非互動服務帳戶,選擇目標上可用的禁止登入 shell,並省略管理群組。確認產生器和服務單元保留了預期身分; 如果省略 groups,配方預設可能會新增 sudo,因此在適當時提供明確的空群組清單。
驗證
測試真正重要的屬性:
- 帳戶存在於預期 UID 範圍內;
- 主群組和附加群組正確;
- 登入 shell 和密碼鎖定狀態正確;
- 若在其他地方產生,家目錄和檔案擁有權正確;
- 未授權的 sudo 和服務存取被拒絕; 以及
- 已核准的登入或登錄路徑成功。
不要僅從帳戶建立推斷最小特權。