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