OSユーザのパスワードを変更したい場合、以下のように passwd コマンドを使うことが多いです。
[root@node01 ~]# passwd user01
ユーザー user01 のパスワードを変更。
新しいパスワード:
よくないパスワード: 辞書の単語に基づいています
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
[root@node01 ~]#
しかし、これだと大量のサーバのパスワードを変更したい場合に面倒です。
usermod コマンドを使うuto、引数にパスワードを指定して変更できます。
[root@node01 ~]# usermod -p `openssl passwd p@ssw0rd` user01
この例では user01 のパスワードを "p@ssw0rd" に設定しています。
usermod では -p の引数でパスワード指定しますが、crypt 関数で暗号化する必要があります。
そこで、openssl コマンドでパスワードにしたい文字列を暗号化しています。
使用できる暗号化形式は以下のとおり。
[root@node01 ~]# openssl passwd --help
Usage: passwd [options] [passwords]
where options are
-crypt standard Unix password algorithm (default)
-1 MD5-based password algorithm
-apr1 MD5-based password algorithm, Apache variant
-salt string use provided salt
-in file read passwords from file
-stdin read passwords from stdin
-noverify never verify when reading password from terminal
-quiet no warnings
-table format output as table
-reverse switch table columns
OSの暗号化形式は以下のようにして調べます。
[root@node01 ~]# authconfig --test | grep password
shadow passwords are enabled
password hashing algorithm is sha512
この例だと sha512 になります。
openssl では対応していないので grub-crypt を使用します。
[root@node01 ~]# grub-crypt --help
Usage: grub-crypt [OPTION]...
Encrypt a password.
-h, --help Print this message and exit
-v, --version Print the version information and exit
--md5 Use MD5 to encrypt the password
--sha-256 Use SHA-256 to encrypt the password
--sha-512 Use SHA-512 to encrypt the password (default)
Report bugs to <bug-grub@gnu.org>.
EOF
usermod コマンドでパスワードを変更したい場合は、以下のとおり。getent コマンドで /etc/shadow に登録されたユーザの情報を表示して、暗号化化されたパスワードが設定したものと同じか確認しています。
[root@node01 ~]# grub-crypt
Password: <パスワード>
Retype password: <パスワード>
$6$sR7OHkosbrt01t.R$mJZyMcBDWr0WUpVcMfNX512PPBZ.jVsq7LFUiUu38MKsOXGl4MtyzKs2fOOwklMNKaLwcFc5GWjZ8OS2jSJ4H1
[root@node01 ~]# usermod -p '$6$sR7OHkosbrt01t.R$mJZyMcBDWr0WUpVcMfNX512PPBZ.jVsq7LFUiUu38MKsOXGl4MtyzKs2fOOwklMNKaLwcFc5GWjZ8OS2jSJ4H1' user01
[root@node01 ~]# getent shadow user01
user01:$6$sR7OHkosbrt01t.R$mJZyMcBDWr0WUpVcMfNX512PPBZ.jVsq7LFUiUu38MKsOXGl4MtyzKs2fOOwklMNKaLwcFc5GWjZ8OS2jSJ4H1:16832:0:99999:7:::
passwdやusermod コマンド以外に、chpasswd コマンドでもパスワードを変更できます。
[root@node01 ~]# echo "user01:password" | chpasswd
[root@node01 ~]# getent shadow user01
user01:$6$aN3jC//BhiZ/tPe$.aE8K6SrGmj9BIWbaFX/4/BFjB9Npaa78GCR2NVPFGj.DFLipL2r.SDb3.rGDYeSNOAii3JZcsITMOi172Z.u1:16832:0:99999:7:::
chpasswd コマンドを使うと、ファイルに記載した複数のユーザ名とパスワードを一括して変更できます。
[root@node01 ~]# cat pass.txt
user01:passwd1
user02:passwd2
[root@node01 ~]# chpasswd < ./pass.txt
[root@node01 ~]# getent shadow user01
user01:$6$HaAHA/azO$OrDCCKRav0BByAXzxRF3wygAG52dwzwbNiLVoX2DxDr16JBPfwQTJj1mT3nsMB9Y3oJKOgKDcFF5xmzOLSD3P1:16832:0:99999:7:::
[root@node01 ~]# getent shadow user02
user02:$6$CoOmN/8a$IojLTXxe8AJ/vcbIQEUoztapXPlVKHxgBXDsDiCom4r4F/uSFrlighfZdO36YcE8bauHsECOCckFAbMVtKolV.:16832:0:99999:7:::
OSユーザの管理については下記が参考になります。