批量更新密码
命令语法格式
chpasswd [options]
命令描述
命令chpasswd从标准输入中读取用户名和密码对的列表,并使用此信息更新一组现有用户。每行的格式如下:
默认情况下,密码必须以明文形式提供,并由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 创建文章