Skip to Content
Building Os镜像内用户

镜像内用户

用户记录位于 os.users。它们在镜像内创建账户; 与 OpenFactory 网站账户或组织角色无关。

规范形状

{ "os": { "users": [ { "username": "deploy", "full_name": "Deployment Operator", "groups": ["sudo"], "shell": "/bin/bash" } ] } }

支持的字段包括 username、可选的 passwordfull_namegroupsshell,以及 Elster/Vyatta 镜像使用的目标特定 level。包含 homecomment 的旧示例不符合规范模型,可能会被忽略。

用户名和组名受限于安全的 Linux 账户字符和长度。shell 必须是不含空白或 shell 元字符的绝对路径。

密码行为

不设置 password 会创建密码已锁定的账户。对于仅密钥 SSH、首次引导登记或部署时身份集成,这是首选的配方状态。

如果包含明文密码,它会成为敏感构建输入,并可能通过保存的配方、日志或导出暴露。不要在配方中使用真实的生产凭据。Phone 配方必须在设备上收集凭据,而不是把它们烘焙进镜像。

在禁用 SSH 密码认证之前,确认已批准的公钥或其他访问方法存在且经过测试。否则,正确加固的镜像可能无法进入。

组与特权

  • sudowheel 可按发行版授予管理权限。
  • docker 通常通过守护进程套接字授予等效于 root 的控制。
  • kvm 在存在时授予对虚拟化设备的访问。
  • adm 可能暴露敏感日志。

把这些当作特权组,只授予账户所需的内容。发行版特定的组名不可移植。

服务账户

对于非交互服务账户,选择目标上可用的禁止登录 shell,并省略管理组。确认生成器和服务单元保留了预期身份; 如果省略 groups,配方默认可能会添加 sudo,因此在适当时提供明确的空组列表。

验证

测试真正重要的属性:

  • 账户存在于预期 UID 范围内;
  • 主组和附加组正确;
  • 登录 shell 和密码锁定状态正确;
  • 若在其他地方生成,家目录和文件所有权正确;
  • 未授权的 sudo 和服务访问被拒绝; 以及
  • 已批准的登录或登记路径成功。

不要仅从账户创建推断最小特权。