passwd 命令

用途

更改用户密码。

语法

密码 [ -R 加载模块 ] [  -f  |   -s -a ] [ 用户 ]

描述

passwd 命令设置和更改用户密码。 使用此命令更改自己或者另一个用户的密码。 使用 passwd 命令也能更改与登录名关联的全名 (gecos) 和用来作为操作系统界面的 shell。

根据用户的定义,用户的密码可以存在于本地或远程。 本地密码存在于 /etc/security/passwd 数据库中。 远程密码存储在由远程域提供的数据库中。

要更改自己的密码,请输入 passwd 命令。 passwd 命令提示非 root 用户输入旧密码(如果存在),然后提示输入两次新密码。 (密码不显示在屏幕上。) 如果两次新密码的输入不一致,passwd 命令提示重新输入新密码。
注: 对于本地和 NIS 密码, 密码 命令仅使用密码的前 8 个字符。 密码只支持七位字符。 因此,在密码中不允许使用全球化代码点。 您可以设置最多 255 个字符的密码。

要更改另一个用户的密码,请输入 passwd 命令和用户的登录名(User 参数)。 只有 root 用户或者安全组成员才允许更改另一个用户的密码。 passwd 命令提示输入用户的旧密码以及用户的新密码。 对于本地密码,passwd 命令并不提示 root 用户输入用户旧密码或者 root 用户密码。 对于远程密码,在缺省情况下,将会提示 root 用户输入旧的密码,这样远程域就能够决定是使用该密码还是忽略它。 要更改此行为,请参阅 /usr/lib/security/methods.cfg 文件中的 rootrequiresopw 选项。 passwd 命令并不对 root 用户强加任何密码限制。

/etc/passwd 文件记录全名和使用的 shell 的路径名。 要更改记录名,请输入 passwd -f 命令。 要更改登录 shell,请输入 passwd -s 命令。

根据密码限制,在 /etc/security/user 配置文件中构造本地定义的密码。 此文件包含下列限制:
描述
dictionlist 指定更改密码时要检查的字典文件列表。
histexpire 指定用户不能重用密码的周数。
histsize 指定用户不能重用的前几个密码的数目。
maxage 指定密码的最大寿命。 密码必须在指定的周数后更改。
maxexpired 指定超过以下值的最大周数:maxage可以由用户更改密码的值。
maxrepeats 指定在密码中单个字符使用的最大次数。
minalpha 指定字母字符的最小数目。
minother 指定其他字符的最小数目。
minlen 指定字符的最小数目。
注: 此值由以下任一项确定:minalpha值加上minother值或minlen值,以较大者为准。
mindiff 指定出现在新密码中但没出现在旧密码中的字符的最小数。
注: 此限制不考虑位置。 如果新密码为abcd并且旧密码是edcb,不同字符的数量为 1。
minage 指定密码能够更改的最小寿命。 密码必须保持一个最小周期。 此值用周来评测。
minloweralpha 指定小写字母字符的最小数目。
minupperalpha 指定大写字母字符的最小数目。
mindigit 指定数字的最小数目。
minspecialchar 指定特殊字符的最小数目。
pwdchecks 指定更改密码时要调用的外部密码限制方法的列表。

如果 root 用户添加了 NOCHECK 属性到在 /etc/security/passwd 文件中的标志条目中,密码就不必满足这些限制。 另外,root 用户也可指定新密码给其他用户而不遵循密码的限制。

如果 root 用户在标志条目中添加了 ADMIN 属性或者如果在 /etc/passwd 文件中的 password 字段包含 *(星号),那么只有 root 用户才能更改密码。 如果在 /etc/passwd 中的 password 字段包含有 !(感叹号) 和在 /etc/security/passwd 文件中的 password 字段包含有 *(星号),那么 root 用户拥有更改您的密码的超级特权。

如果 root 用更改您的密码,那么 ADMCHG 属性就会自动地添加到在 /etc/security/passwd 文件中的标志条目上。 这种情况下,您必须在下次登录时更改密码。

如果 /etc/security/user 文件中用户的 registry 值是 DCE 或 NIS,那么密码更改只能在指定的数据库中进行。

若密钥库不存在,且用户的 efs_keystore_access 属性值不为passwd 命令将创建用户密钥库。 密钥库与 /etc/security/user 文件中找到的加密文件系统 (EFS) 属性一起创建。 如果 旧密码可以打开密钥库,它也将更改密钥库密码。 换言之,如果登录和密钥库密码相同,那么 passwd 命令就更改两个密码。 如果文件系统是加密文件系统 (EFS),那么将执行该命令,如已指定 -a 标志一样。 如果指定了 -a 标志,结果将是在密码更改后,EFS 密码与用户登录密码不再同步。 因此,下次登录时,不再自动装入密钥库。

标志

描述
在所有模块(compat、LDAP 和 NIS 等等)中更改用户密码。
-f 更改由 finger 命令访问的用户信息。 可以使用此标志提供在 /etc/passwd 文件中的全名。
-s 更改登录 shell。
-R 加载模块 指定可装入 I&A 模块,来更改用户的密码。

安全性

passwd 命令是支持 PAM 的带有服务名称 passwd 的应用程序。 在 /etc/security/login.cfgusw 节中,通过修改 auth_type 属性值来将要使用 PAM 进行认证的系统范围配置设置为作为 root 用户的 PAM_AUTH

启用 PAM 时使用的认证机制取决于 /etc/pam.conf 中 passwd 服务的配置。 passwd 命令需要密码模块类型的 /etc/pam.conf 条目。 以下列出了 /etc/pam.conf 中 passwd 服务的建议配置。
#
# AIX passwd configuration
#

passwd password required /usr/lib/security/pam_aix

RBAC 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关权限与特权的更多信息,请参阅安全性中的“特权限定的命令数据库”。 有关与该命令相关联的特权和权限的列表,请参阅 lssecattr 命令或 getcmdattr 子命令。

示例

  1. 如果要更改密码,请输入以下命令:
    passwd
    passwd 命令提示输入旧密码,如果它存在并且您不是 root 用户。 输入旧密码后,命令提示输入两次新密码。
  2. 如果要更改 /etc/passwd 文件中的全名,请输入以下命令:
    passwd  -f
    passwd 命令显示为您的用户标识存储的名称。 例如,对于登录名:sam密码 命令可能显示以下消息:
    sam's current gecos:
                 "Sam Smith"
    Change (yes) or no)? >
    如果您输入Y对于 "是" , 密码 命令将提示您输入新名称。 passwd 命令记录输入的名称到 /etc/passwd 文件中。
  3. 如果要在下次登录时使用不同的 shell,请输入以下命令:
    passwd -s
    passwd 命令列出可用的和当前使用的 shell 的路径名。 此命令也显示提示:
    Change (yes) or (no)? >
    如果您输入Y对于 "是" , 密码 命令会提示您输入要使用的 shell。 下次登录时系统提供在此指定的 shell。

文件

描述
/usr/bin/passwd 包含 passwd 命令。
/etc/passwd 包含用户标识、用户名、主目录、登录 shell 和 finger 的信息
/etc/security/passwd 包含加密密码和安全性信息。