chpasswd 批量更新用户口令

chpasswd - update passwords in batch mode

  • chpasswd 是一个批量更新用户口令的命令
  • chpasswd 会从标准输入批量读取成对的用户名和密码,并使用这些信息来更新现有的一组
    用户
  • 从标准输入读取的每行数据格式应为 username:password 即用户名和密码用冒号分隔开
  • 默认情况下所提供的密码必须是明文,并通过chpasswd进行加密
  • chpasswd 首先在内存中更新密码,在没有任何错误的情况下才会将更改的密码更新到磁盘中
  • chpasswd 的应用场景主要是在一个比较大的系统环境下,同一时间创建了多个用户的情况
  • 默认的加密算法可以通过修改/etc/login.defs中ENCRYPT_METHOD变量的值(默认值SHA512),可以通过-e,-m,-c选项覆盖默认的加密算法

常用选项如下:

-c 使用指定的方法来加密密码,可用的方法是DES、MD5、NONE、SHA512(前提是你的系统支持这些加密算法)
-e 输入的密码是加密后的密码
-m 当提供的密码没有加密时,使用MD5代替DES加密
-s 使用指定的rounds数值加密密码(SHA加密算法)
  • 如果指定的数值为0将使用默认的rounds数值5000
  • 数值的范围在1000到999999999之间
  • 可以使用-s参数跟上SHA256或SHA512
  • 默认的最小和最大rounds定义在/etc/login.defs文件的SHA_CRYPT_MIN_ROUNDS和SHA_CRYPT_MAX_ROUNDS变量中
    配置说明:下面列出的所有配置项都可以通过修改/etc/login.defs中的配置来生效
ENCRYPT_METHOD 该值定义了chpasswd默认的加密算法,该变量的值可以定义为:DES(默认)、MD5、SHA256、SHA512
SHA_CRYPT_MIN_ROUNDS 当ENCRYPT_METHOD的值定义为SHA256或SHA512时,将使用该变量的值作为SHA加密算法的最小rounds值
SHA_CRYPT_MAX_ROUNDS 当ENCRYPT_METHOD的值定义为SHA256或SHA512时,将使用该变量的值作为SHA加密算法的最大rounds值
  • SHA_CRYPT_MIN_ROUNDS 和 SHA_CRYPT_MAX_ROUNDS 默认没有在/etc/login.defs文件中定义,一旦定义将被采用,如果没有定义则使用5000作为默认的rounds值
  • SHA_CRYPT_MIN_ROUNDS 和 SHA_CRYPT_MAX_ROUNDS的取值范围为1000-999999999
  • 如果SHA_CRYPT_MIN_ROUNDS > SHA_CRYPT_MAX_ROUNDS,将取SHA_CRYPT_MIN_ROUNDS的值作为默认rounds值

基本使用:

[root@prenv ~]# useradd chtest
[root@prenv ~]# chpasswd
chtest:123456
[root@prenv ~]# echo "chtest:123456" > passwd.txt
[root@prenv ~]# chpasswd < passwd.txt 

原文地址:https://www.cnblogs.com/spinxy/p/6075931.html