You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下如何通过bash脚本为用户设置随机新密码

实现方法

你可以通过Linux系统自带的chpasswd工具非交互式完成用户密码设置,不需要额外依赖,适配绝大多数发行版。
基于你现有pwgen生成密码的逻辑,优化后的实现如下,不建议先把密码写入临时文件再读取,避免密码在磁盘明文留存带来泄露风险:

# 替换为你要修改密码的实际用户名
TARGET_USER="your_username"
# 生成13位安全随机密码,直接存入内存变量
NEW_PASSWORD=$(pwgen -s 13 1)
# 非交互设置用户密码,需要root权限执行
echo "${TARGET_USER}:${NEW_PASSWORD}" | chpasswd
# 如果确实需要留存密码记录,写入文件后严格设置权限
echo "${NEW_PASSWORD}" > pasChange.txt
chmod 600 pasChange.txt

注意:如果你的系统需要指定密码哈希算法,可以给chpasswd加参数,比如用SHA512哈希就写chpasswd -c SHA512,兼容更老的系统版本。

其他可选实现方案
  • 用passwd的stdin参数(适配Debian/Ubuntu、RHEL/CentOS等主流发行版)
    TARGET_USER="your_username"
    NEW_PASSWORD=$(pwgen -s 13 1)
    echo "${NEW_PASSWORD}" | passwd --stdin "${TARGET_USER}"
    
    这个方式和chpasswd逻辑类似,缺点是部分小众发行版的passwd命令没有--stdin参数,兼容性稍差。
  • 不依赖pwgen的内置方案(适合最小化安装、没有预装pwgen的环境)
    直接调用系统的随机设备/dev/urandom生成密码,不需要额外装软件包:
    TARGET_USER="your_username"
    # 生成13位包含大小写字母、数字的随机密码
    NEW_PASSWORD=$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 13)
    echo "${TARGET_USER}:${NEW_PASSWORD}" | chpasswd
    
  • 高安全场景用openssl生成密码
    如果对密码随机性要求更高,可以用openssl生成随机源:
    TARGET_USER="your_username"
    NEW_PASSWORD=$(openssl rand -base64 18 | tr -dc 'A-Za-z0-9@#$%' | head -c13)
    echo "${TARGET_USER}:${NEW_PASSWORD}" | chpasswd
    

安全提示:不要把明文密码直接作为命令行参数传递(例如直接执行passwd 用户名 密码),这类操作的参数可以通过ps命令被系统内其他用户获取,存在密码泄露风险;存储密码的文件必须设置600权限,仅允许所有者读写。

内容的提问来源于stack exchange,提问作者eylon levi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 21:33:28