找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3041

积分

0

好友

411

主题
发表于 11 小时前 | 查看: 9| 回复: 0

在 Linux 系统管理中,用户密码的修改是一项基础且频繁的操作。无论是个人用户更新自己的密码,还是系统管理员管理服务器上的众多账户,掌握高效且安全的密码修改方法都至关重要。在云栈社区的运维板块,我们经常讨论此类基础而关键的技能。本文将为你详细介绍三种常用的命令行方法,并附带安全实践建议,帮助你更专业地处理密码管理任务。

使用 passwd 命令

在Linux系统中,passwd 无疑是修改用户密码最直接、最常用的命令。它的具体行为会根据执行用户的权限而有所不同。

当你以 root 身份登录时,权限是最大的。如果直接在终端输入 passwd 命令而不带任何参数,系统会默认修改 root 用户自身的密码。更重要的是,root 用户可以为任何其他用户修改密码,且无需知道该用户的旧密码,命令格式为 passwd [用户名]

[root@localhost ~]# passwd jacktian
更改用户 jacktian 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

如果你以普通用户身份登录,权限则受到限制。此时输入 passwd 命令,只能修改当前登录用户自己的密码。系统会要求你先输入一次旧密码进行验证,通过后才能设置新密码。

[jacktian@localhost ~]$ passwd
更改用户 jacktian 的密码 。
为 jacktian 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

无论哪种情况,新密码通常都需要满足一定的复杂度规则以提高系统安全性。大多数 Linux 发行版会要求密码长度至少为 6 到 8 位,并鼓励混合使用大小写字母、数字和特殊字符。输入时,为了安全起见,密码字符不会回显在屏幕上,因此务必确保两次输入的新密码完全一致,否则修改会失败。

使用 chpasswd 命令

chpasswd 命令的设计初衷是为了批量修改密码,非常适合系统管理员在初始化环境或重置大量用户密码时使用。该命令从标准输入读取用户名和密码对,其格式必须严格为 用户名:密码

一种常见的用法是先将用户名和新密码(明文)编辑在一个文本文件中,例如 passwords.txt

user1:newpasswd1
user2:newpasswd2

然后通过管道将文件内容传递给 chpasswd 命令:

cat /home/jacktian/passwords.txt | chpasswd

执行后,文件中列出的用户密码就会被批量更新。

重要安全提醒:由于密码在该文件中以明文形式存在,必须确保该文件只有 root 用户可读,并且在完成操作后立即删除或移至安全位置,以防密码泄露。

除了批量操作,chpasswd 也可以用于以非交互式的方式修改单个用户的密码,避免手动重复输入:

echo “user:newpasswd” | chpasswd

使用 usermod 命令

usermod 命令通常用于修改用户账户的各项属性,其 -p–password 选项可以直接设置用户的密码。但这里有一个关键点:usermod -p 要求提供的密码是已经加密过的字符串,而不是明文密码。

因此,流程分为两步:

  1. 生成加密密码:使用 openssl passwd 等工具生成加密后的密码字符串。
  2. 应用加密密码:将生成的加密字符串通过 usermod -p 赋给对应用户。

例如,我们可以用以下命令生成一个用 MD5 算法加密的密码(newpassword 替换为你的实际密码):

openssl passwd -1 -salt $(date +%s) newpassword

这条命令使用当前 Unix 时间戳作为“盐值”(salt),对密码进行 MD5 加密。命令会输出一个类似 $1$<salt>$<encrypted_password> 格式的字符串,这就是加密后的密码。

接着,使用 usermod 命令应用这个加密密码:

usermod -p ‘$1$1678889200$X4h2V8q9Y3fZ1A...’ username

将单引号内的加密字符串和 username 替换为对应的值即可。

安全实践总结

虽然 chpasswdusermod -p 在脚本自动化中很有用,但必须警惕其安全风险:

  • 避免密码明文出现在命令行历史或脚本中:上述方法中的密码(无论是明文还是加密字符串)都可能被 history 命令或进程查看工具捕获。
  • 首选交互式 passwd 命令:对于日常操作,尤其是在有多人在场的环境中,使用 passwd 命令交互式地输入密码是更安全的选择,因为密码不会以任何形式显示在屏幕上或记录在明文中。
  • 加密字符串并非绝对安全usermod -p 使用的加密字符串虽然不可逆,但如果被他人获取,可以直接用于登录,无需解密。

因此,在自动化脚本中,更安全的做法是结合 expect 脚本或使用 SSH 密钥认证等免密方式。对于手动操作,养成良好的习惯,遵循系统正常的密码修改流程,是保障账户安全的第一道防线。




上一篇:基于 RPM 包在 Linux 上安装与配置 RabbitMQ 单机及集群
下一篇:SSH登录详解:命令行直接嵌入密码参数的方法与安全实践
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-7 17:25 , Processed in 0.579116 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表