linux中给用户加密码的命令是什么

来源:建站教程作者:上海GEO公司头衔:草根站长
导读:本期聚焦于小伙伴创作的《linux中给用户加密码的命令是什么》,敬请观看详情。把新建的Linux账号直接拿来远程登录,系统却提示认证失败,根源往往是该用户根本没有口令。Linux里负责设定或修改用户密码的核心指令是passwd,它直接改写/etc/shadow里的加密串。执行passwd用户名就能交互式录入新密码,而echo密码管道给passwd可批量初始化,但明文会留在历史记录里。root能改任意账户,普通用户只能改自己且受复杂度策略限制。理解shadow文件格式与PAM校验链,才能避免锁死账号或留下弱口令隐患。

在Linux系统管理当中,给用户设置登录口令最常用且标准的命令就是passwd。无论是刚用useradd创建的新账户,还是系统中已存在但需要定期更换口令的老账户,都可以通过这个命令完成密码的写入与更新。passwd背后操作的是/etc/shadow文件,把用户输入的明文经过crypt算法加密后存为哈希串,供后续登录认证使用。

linux中给用户加密码的命令是什么

一、passwd命令的基本用法

最基础的场景是管理员为指定用户添加密码。在终端中以root身份执行以下命令,系统会提示连续输入两次新密码,两次一致后才生效:

# 为名为devuser的用户设置密码
passwd devuser

# 执行后终端交互示例:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

如果不带任何参数直接输入passwd,则是修改当前登录用户自己的密码。普通用户修改自身口令时,系统首先会要求输入旧密码,通过后再设新密码,这是为了防止会话被他人冒用后随意篡改。

从实现机制看,passwd命令会调用PAM(可插拔认证模块)中的pam_unix.so,由它负责校验复杂度、写入shadow文件。因此密码策略如最小长度、不能含用户名等,实际是在/etc/pam.d/common-password里配置的,而不是passwd自身写死的逻辑。

二、非交互式批量加密码

在自动化运维中,我们经常需要一键给多个用户初始化口令。这时可以用管道把密码喂给passwd的stdin模式:

# 使用chpasswd批量设置,格式为 用户名:密码
echo 'devuser:Abc123456' | chpasswd

# 或使用passwd的stdin参数
echo 'Abc123456' | passwd --stdin devuser

需要注意,上面两种写法里明文密码会出现在shell历史或进程列表(ps)中,在多用户主机上有泄露风险。更安全的做法是先生成加密哈希,再写进shadow:

# 用openssl生成sha512加密串
openssl passwd -6 'Abc123456'

# 输出类似:$6$randomsalt$abcdef...
# 随后用usermod写入
usermod -p '$6$randomsalt$abcdef...' devuser

chpasswd命令默认读取标准输入中的“用户:密码”行,支持一次处理多行,适合在初始化脚本里使用。但它同样不要在公享终端直接敲,建议从权限受限的文件重定向读取。

三、/etc/shadow文件结构说明

理解passwd修改了什么,有助于排查“命令执行了却登不进”的问题。shadow文件每一行对应一个用户,用冒号分隔九个字段:

字段序号含义示例
1用户名devuser
2加密密码(!或*表示锁定)$6$salt$hash
3上次修改日期(距1970天数)19500
4最小间隔天数0
5最大有效天数99999
6警告天数7
7失效宽限天数0
8账户过期日期
9保留字段

如果字段二是感叹号开头(如! $6$...),说明账户被锁定,即便有哈希也不能登录。用passwd -u可解锁,useradd创建用户未设密码时默认就是!,所以新用户必须跑一次passwd才能用。

通过直接观察shadow,我们能确认密码是否真的写进去了,也能看出密码过期策略。比如最大有效天数是30的话,每隔一个月用户就被迫改密,这对安全合规很有用,但也可能造成脚本账号突然失效,需要提前规划。

四、常见误区与权限控制

一个常见错误是以为useradd的-p参数可以直接写明文密码。实际上-p后面跟的必须是已经加密的哈希,写明文会导致登录永远失败:

# 错误示范:把明文当哈希写入,登录必失败
useradd -p 'Abc123456' test1

# 正确示范:先加密再传入
useradd -p "$(openssl passwd -6 'Abc123456')" test2

另外,普通用户执行passwd只能改自己,且新密码若太简单会被PAM拒绝;root则不受复杂度限制,但随意设弱密码会拖垮整台机器安全。建议管理员用pwgen或openssl随机生成,再通过加密串下发。

当系统启用了SELinux或严格审计时,passwd还会受上下文约束,比如在chroot环境里直接跑可能报无法访问shadow。此时应先挂载相关proc与securityfs,或改用chroot内的完整工具链,避免半途锁死账户。

五、锁定与过期管理配合

加密码只是账户生命周期的一步。配合passwd的其他参数,能实现更细粒度控制:

  • passwd -l 用户名:锁定账户,在shadow密码前加!
  • passwd -u 用户名:解锁账户
  • passwd -e 用户名:强制用户下次登录改密
  • passwd -x 30 用户名:设置密码30天最长有效期

比如新员工入职,先由脚本用chpasswd设初始密码,再passwd -e强制其首次登录自己改掉,既保证可登录又避免密码长期不变。这种组合比单纯加密码更符合企业安全规范。

从整体看,Linux给用户加密码的命令以passwd为核心,辅以chpasswd和usermod的-p选项。掌握它们与shadow、PAM的关系,才能既快又稳地完成系统账户管理,不踩明文泄露或锁定失效的坑。

linuxpasswduser_password修改时间:2026-08-06 22:30:18

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。