「chpasswd(8)」-

  LINUX MANUAL PAGES

批量更新密码

命令语法格式

chpasswd [options]

命令描述

命令chpasswd从标准输入中读取用户名和密码对的列表,并使用此信息更新一组现有用户。每行的格式如下:

username:password

默认情况下,密码必须以明文形式提供,并由chpasswd加密。密码时效也将更新(如果存在)。

默认情况下,密码由PAM加密,但(即使不推荐)您可以使用-e、-m、-c选项选择不同的加密方法。

除了使用PAM加密密码外,chpasswd首先更新​​内存中的所有密码,然后在没有任何错误发生的情况下将所有更改提交到磁盘。

当PAM用于加密密码(并更新系统数据库中的密码)时,如果密码无法更新,chpasswd将继续更新下一个用户的密码,并在退出时返回错误代码。

此命令旨在用于一次创建许多帐户的大型系统环境中。

命令支持的选项及含义

命令chpasswd支持如下选项:

-c, –crypt-method METHOD
使用指定的方法加密密码。如果你的libc支持这些方法,可用的METHOD是DES,MD5,NONE,SHA256,SHA512。

-s, –sha-rounds ROUNDS
使用指定的轮数加密密码。值为0表示系统将选择crypt方法的默认轮数(5000)。将强制执行最小值1,000和最大值999,999,999。您只能将此选项与SHA256或SHA512加密方法一起使用。

默认情况下,用PAM加密密码。

-e, –encrypted
告诉chpasswd密码是加密的形式。

-m, –md5
当提供的密码未加密时,使用MD5加密,而不是DES。

默认情况下,轮数是由/etc/login.defs中的SHA_CRYPT_MIN_ROUNDS和SHA_CRYPT_MAX_ROUNDS变量定义。

-R, –root CHROOT_DIR
在CHROOT_DIR中应用更改,并使用CHROOT_DIR目录中的配置文件。

-h, –help
显示帮助信息并退出。

注意事项

请记住设置适当的权限或umask值,以防止其他用户对未加密文件的读取。

配置文件

在/etc/login.defs中的以下配置变量会影响命令chpasswd的行为:

SHA_CRYPT_MIN_ROUNDS (number), SHA_CRYPT_MAX_ROUNDS (number)
当ENCRYPT_METHOD设置为SHA256或SHA512时,这两个配置项定义了默认情况下加密算法使用的SHA轮数(当命令行中未指定轮数(-s)时)。

当轮次有很多时,暴力破解密码会更难。但请注意,在验证用户时也需要消耗更多的CPU资源。

如果仅设置了SHA_CRYPT_MIN_ROUNDS、SHA_CRYPT_MAX_ROUNDS值中的一个,则将使用此值。如果SHA_CRYPT_MIN_ROUNDS > SHA_CRYPT_MAX_ROUNDS,将使用最高值。如果未指定,则libc将选择默认轮数(5000)。值必须在1000-999,999,999范围内。

注意:这仅影响组密码的生成。 用户密码的生成由PAM完成,并受PAM配置的约束。 建议将此变量与PAM配置保持一致。

相关文件

/etc/passwd
用户账户信息。

/etc/shadow
安全的用户帐号信息。

/etc/pam.d/passwd
用于passwd的PAM配置。

/etc/login.defs
软件包Shadow中各个命令的配置文件。

相关手册

passwd(1), newusers(8), login.defs(5), useradd(8).

参考文献

  • man 8 chpasswd, Version shadow-utils 4.4

更新日志

  • 07/16/2018 创建文章