Kickstart 自动化安装中的密码管理:rootpw 与 chpasswd 完全指南

在 Red Hat 系 Linux(如 CentOS 8)的自动化部署中,密码配置是安全性的关键一环。Kickstart 提供了 rootpw 命令设置 root 密码,而 chpasswd 则可以在安装后期批量修改或新增用户密码。本文将系统梳理这两种方法,涵盖明文、密文、哈希生成、后安装脚本等实用技巧。


一、rootpw:设置 root 密码

rootpw 命令位于 Kickstart 文件的主配置段,用于定义 root 用户的初始密码。

1.1 明文方式(不推荐)

bash 复制代码
rootpw --plaintext "YourPlainPassword"
# 或者简写
rootpw "YourPlainPassword"
  • 特点:密码以可读形式存储在 Kickstart 文件中。
  • 风险 :任何能查看 KS 文件的人均可直接获取 root 密码;若密码包含 #$ 等特殊字符,可能被误解析。
  • 适用场景:仅限完全隔离的测试环境,且 KS 文件受严格权限控制。

1.2 密文方式(强烈推荐)

bash 复制代码
rootpw --iscrypted "EncryptedPasswordString"
  • 特点:密码经哈希算法(如 SHA-512)加密,即使 KS 文件泄露,攻击者也无法轻易还原原始密码。
  • 安全增强 :建议配合 authauthselect 命令明确哈希算法。
bash 复制代码
authselect select sssd --force
# 或旧版语法
auth --enableshadow --passalgo=sha512

1.3 生成密文密码的三种方法

① Python(最通用,无需额外包)
bash 复制代码
python3 -c 'import crypt; print(crypt.crypt("你的密码", crypt.mksalt(crypt.METHOD_SHA512)))'

输出示例:$6$saltstring$hashedresult

② mkpasswd(需安装 expect)
bash 复制代码
sudo dnf install expect -y
mkpasswd -m sha-512 "你的密码"
③ openssl
bash 复制代码
openssl passwd -6 "你的密码"

参数 -6 代表 SHA-512 算法。


二、chpasswd:批量修改或创建用户密码

chpasswd 不是一个 Kickstart 直接命令,而是 Linux 系统中的一个实用工具。在自动化安装中,通常通过 Kickstart 的 %post 脚本调用它,以实现以下场景:

  • 为普通用户(非 root)设置初始密码。
  • 批量修改多个用户的密码。
  • 在安装结束后强制首次登录修改密码。

2.1 基本用法

chpasswd 从标准输入读取 用户名:密码 格式的行,并为这些用户更新密码。

bash 复制代码
echo "user1:password123" | chpasswd

默认情况下,密码会被视为明文 。如果需要使用密文,可以加上 -e--encrypted 选项。

2.2 在 Kickstart %post 中使用 chpasswd

bash 复制代码
%post --log=/root/post_install.log
# 创建普通用户(如果尚未存在)
useradd -m -G wheel developer

# 明文方式设置密码(不推荐)
echo "developer:Dev@2026" | chpasswd

# 更安全:先生成密文,再用 chpasswd -e
ENCRYPTED_PASS=$(python3 -c 'import crypt; print(crypt.crypt("Dev@2026", crypt.mksalt(crypt.METHOD_SHA512)))')
echo "developer:$ENCRYPTED_PASS" | chpasswd -e

# 强制用户首次登录修改密码
passwd -e developer
%end

2.3 批量处理多个用户

创建一个包含多行的文本文件,每行格式 username:password,然后:

bash 复制代码
cat /tmp/userlist.txt | chpasswd

在 Kickstart 中可提前通过 %includewget 获取该文件。

2.4 chpasswd 常用选项

选项 说明
-e 密码字段已经是加密过的哈希值
-c 指定加密算法(如 SHA512),需配合 -e 使用时注意
-h 显示帮助

三、安全最佳实践

3.1 密码存储原则

  • 永不使用明文 :无论是 rootpw 还是 chpasswd,都应优先采用密文形式。
  • 隔离 KS 文件:将 Kickstart 文件放在仅部署服务器可读的位置(如 HTTP 服务器设 IP 访问控制,或使用 HTTPS + 认证)。
  • 动态生成密码:对于生产环境,可结合自动化工具(如 Ansible、Hashicorp Vault)在部署时动态生成一次性密码,安装后再强制重置。

3.2 哈希算法的选择

  • 推荐 SHA-512$6$ 标识),它是当前 RHEL/CentOS 8 的默认算法。
  • 避免使用 MD5($1$)或 DES,它们已被认为不安全。

3.3 密码强度要求

即使使用密文存储,弱密码仍会被暴力破解。建议:

  • 最小长度 12 字符。
  • 包含大写、小写、数字、特殊符号。
  • 定期轮换(尤其在批量部署的测试环境中)。

3.4 安装后强制修改密码

对于 root 用户:

bash 复制代码
%post
passwd -e root   # 强制 root 首次登录时修改密码
%end

对于普通用户,同样使用 passwd -e username


四、完整 Kickstart 示例

以下是一个整合了 rootpw 密文和 chpasswd 设置普通用户密码的示例片段:

bash 复制代码
# 主配置部分
rootpw --iscrypted "$6$m0c9JvZ4kLqE5XyG$W5zV3pQ8rT1uI2oN7sD4fG6hJ9kL2mP0vB3yR6tU8xY1eZ4aH7"
authselect select sssd --force

# 安装后脚本
%post --log=/root/post.log
# 创建运维用户
useradd -m -G wheel ops

# 使用 python 生成密文并设置密码(密码:Ops@CentOS8)
ENCRYPTED=$(python3 -c 'import crypt; print(crypt.crypt("Ops@CentOS8", crypt.mksalt(crypt.METHOD_SHA512)))')
echo "ops:$ENCRYPTED" | chpasswd -e

# 强制用户 ops 首次登录修改密码
passwd -e ops

# 禁止 root 直接 SSH 登录(可选)
echo "PermitRootLogin no" >> /etc/ssh/sshd_config
systemctl restart sshd
%end

五、常见问题与排错

问题 可能原因 解决方法
rootpw --iscrypted 不生效 密文字符串包含 $ 符号未被转义 确保整个密文字符串用双引号包裹,且无多余空格
chpasswd 提示 Invalid password 密码字段包含冒号或换行符 使用引号包裹密码,或通过 \: 转义
安装后 root 无法登录 密文生成时使用了错误的盐值或算法 重新生成并确认使用 SHA-512;检查 KS 中是否有 auth 冲突
%post 中 chpasswd 找不到命令 系统最小化安装未包含 chpasswd chpasswd 属于 shadow-utils,通常默认安装。若缺失可 dnf install -y shadow-utils

六、总结

方法 命令 适用场景 安全级别
rootpw 明文 rootpw "plain" 临时测试 ⚠️ 低
rootpw 密文 rootpw --iscrypted "hash" 生产部署 ✅ 高
chpasswd 明文 `echo "user:pass" chpasswd` 仅限内部可信环境
chpasswd 密文 `echo "user:hash" chpasswd -e` 批量设置用户密码

在自动化部署中,密码管理是安全的第一道防线。强烈建议:

  1. 始终使用 --iscryptedchpasswd -e
  2. 通过脚本或密码管理工具自动生成并注入哈希值。
  3. 配合安装后强制密码过期策略,实现首次登录必须修改。

通过本文介绍的 rootpw 和 chpasswd 组合,你可以在 CentOS 8 / RHEL 8 的 Kickstart 全自动安装中,安全、高效地完成所有用户的密码配置。

相关推荐
Black蜡笔小新2 小时前
花屏/蓝屏/黑屏/画面抖动/冻结/模糊检测,聊聊EasyCVR的视频质量诊断插件,解决运维人的实际烦恼
运维·音视频
Bert.Cai2 小时前
Linux cat命令详解
linux·运维
xcLeigh2 小时前
KES数据库表空间目录自动创建特性详解与存储运维最佳实践
大数据·运维·服务器·数据库·表空间·存储
weixin_449310842 小时前
电商对账革命:破解效率困局,拥抱自动化转型
运维·自动化
Agent产品评测局2 小时前
企业工单处理自动化落地,派单回访全流程闭环实现:2026架构升级与多方案全景盘点
运维·人工智能·ai·架构·自动化
问简2 小时前
ubuntu 输入法优化
linux·运维·ubuntu
实在智能RPA3 小时前
Agent 在审计合规场景有哪些应用?——2026年企业智能自动化合规落地全解析
网络·人工智能·ai·自动化
Bert.Cai3 小时前
Linux tail命令详解
linux·运维
舒一笑3 小时前
AI 系统落地难的,从来不只是模型:一次企业级部署实施复盘
运维·后端·程序员