OSユーザのパスワードを変更したい場合、以下のように passwd コマンドを使うことが多いです。
[root@node01 ~]# passwd user01 ユーザー user01 のパスワードを変更。 新しいパスワード: よくないパスワード: 辞書の単語に基づいています 新しいパスワードを再入力してください: passwd: 全ての認証トークンが正しく更新できました。 [root@node01 ~]#
しかし、これだと大量のサーバのパスワードを変更したい場合に面倒です。
usermod コマンドを使うuto、引数にパスワードを指定して変更できます。
[root@node01 ~]# usermod -p `openssl passwd p@ssw0rd` user01
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 columnsOSの暗号化形式は以下のようにして調べます。
[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ユーザの管理については下記が参考になります。