passwd - 更改用户密码
概要
passwd [选项] [登录名]
描述
passwd 命令更改用户帐户的密码。普通用户只能更改其自身的密码,而超级用户可以更改任何帐户的密码。passwd 还会更改帐户或关联密码的有效期。
密码更改
如果帐户具有非空密码,系统首先提示用户输入其当前密码。输入的密码将被加密并与存储的值进行比较。用户只有一次尝试输入正确密码的机会。超级用户可以跳过此步骤,以允许更改忘记的密码。
密码输入后,将检查密码老化信息,以确定用户是否允许在此时间更改密码。如果不允许,passwd 将拒绝更改密码并退出。
然后,系统会提示用户两次输入新的密码。第二次输入将与第一次输入进行比较,并且为了更改密码,两者都需要匹配。
然后,系统会对密码进行复杂性测试。passwd 会拒绝不符合复杂性要求的密码。不要包含系统默认的删除或终止字符。
用户密码提示
密码的安全性取决于加密算法的强度和密钥空间的大小。遗留的 UNIX 系统加密方法基于 NBS DES 算法。现在建议使用更新的方法(请参见 ENCRYPT_METHOD)。密钥空间的大小取决于所选密码的随机性。
密码安全方面的漏洞通常是由粗心的密码选择或处理造成的。因此,不应选择出现在词典中的密码,也不应选择必须写下的密码。密码也不应是人名、您的许可证号、出生日期或街道地址。这些都可能被用作猜测来破坏系统安全。
作为一般指导原则,密码应该很长且随机。如果这有助于记住更长的密码,可以使用简单的字符集,例如仅由小写字母组成的密码。对于仅由随机选择的小写英文字母组成的密码,长度为 32,则有 26^32(大约 2^150)个不同的组合。由于这是一个指数方程,因此很明显,指数(长度)比基数(字符集的大小)更重要。
您可以在以下网址找到有关如何选择强密码的建议: https://en.wikipedia.org/wiki/Password_strength
选项
适用于 passwd 命令的选项包括:
-a, --all
此选项只能与 -S 一起使用,用于显示所有用户的状态。
-d, --delete
删除用户的密码,使其变为空。此命令将帐户设置为无密码。
-e, --expire
立即使帐户的密码失效。实际上,这可以强制用户在下次登录时更改密码。
-h, --help
显示帮助消息并退出。
-i, --inactive INACTIVE
此选项用于在密码过期一定天数后禁用帐户。在用户帐户的密码过期 INACTIVE 天后,用户将不再能够登录该帐户。
-k, --keep-tokens
指示密码更改应仅针对过期的身份验证令牌(密码)执行。用户希望保留其未过期的令牌不变。
-l, --lock
锁定指定帐户的密码。此选项通过将密码更改为与任何可能的加密值不匹配的值(在密码开头添加一个“!”)来禁用密码。
请注意,这不会禁用帐户。用户仍然可以使用其他身份验证令牌(例如 SSH 密钥)登录。要禁用帐户,管理员应使用 usermod --expiredate 1(这将帐户的过期日期设置为 1970-01-02)。
具有已锁定密码的用户不允许更改其密码。
-n, --mindays MIN_DAYS
设置密码更改之间的最短天数为 MIN_DAYS。此字段的值为零表示用户可以随时更改密码。
-q, --quiet
静默模式。
-r, --repository REPOSITORY
在 REPOSITORY 存储库中更改密码
-R, --root CHROOT_DIR
在 CHROOT_DIR 目录中应用更改,并使用来自 CHROOT_DIR 目录的配置文件。仅支持绝对路径。
-P, --prefix PREFIX_DIR
将更改应用于在根文件系统中位于 PREFIX_DIR 目录下的配置文件。此选项不执行 chroot,而是用于准备交叉编译目标。存在一些限制:NIS 和 LDAP 用户/组未经过验证。不支持 PAM。不支持 SELINUX。
-S, --status
显示帐户状态信息。状态信息由 7 个字段组成。第一个字段是用户的登录名。第二个字段指示用户帐户是否具有锁定的密码 (L)、没有密码 (NP) 还是具有可用的密码 (P)。第三个字段是上次密码更改的日期。接下来的四个字段分别是密码的最小年龄、最大年龄、警告期和不活动期,以天为单位。
-u, --unlock
解锁指定帐户的密码。此选项通过将密码恢复到其先前值(在应用 -l 选项之前的状态)来重新启用密码。
-w, --warndays WARN_DAYS
设置在需要更改密码之前的天数。WARN_DAYS 选项是在用户收到密码即将到期警告之前的天数。
-x, --maxdays MAX_DAYS
设置密码的有效最大天数。超过 MAX_DAYS 后,需要更改密码。
将 -1 作为 MAX_DAYS 传递会移除密码有效性检查。
-s, --stdin
此选项用于指示 passwd 应该从标准输入读取新密码, 这可以是管道。
注意事项
密码复杂性检查可能因站点而异。 建议用户选择一个他们认为足够复杂的密码。
如果启用了 NIS 并且用户未登录到 NIS 服务器,则用户可能无法在系统上更改其密码。
passwd 使用 PAM 来验证用户并更改其密码。
文件
/etc/passwd
用户帐户信息。
/etc/shadow
安全的用户帐户信息。
/etc/pam.d/passwd
passwd 的 PAM 配置文件。
退出值
passwd 命令以以下值退出:
0 成功
1 权限被拒绝
2 选项的无效组合
3 意外失败,未执行任何操作
4 passwd 文件丢失,发生意外失败
5 passwd 文件繁忙,请重试
6 选项的参数无效
10 [pam]({filename}../../pam)(3) 返回了一个错误
参见
chpasswd(8), makepasswd(1), passwd(5), shadow(5), usermod(8)。
以下网页以幽默(但准确)的方式比较了两种选择密码的方法的强度:“https://xkcd.com/936/”