Linuxで一括でユーザーのパスワード設定を行う方法
Linuxでユーザー登録を行うことは度々あると思います。
煩わしいパスワード設定を一括で行う方法を覚えたので、備忘録として残しておきます。
結論:chpasswdコマンドを使用する
#ユーザを追加 #本件に直接関係ないですがadduserとuseraddは同じコマンドです #(useraddにシンボリックリンクが貼ってあります) [root@centos53 ~]# adduser test1 [root@centos53 ~]# adduser test2 [root@centos53 ~]# adduser test3 #登録されたか確認 [root@centos53 ~]# grep test /etc/passwd test1:x:501:501::/home/test1:/bin/bash test2:x:502:502::/home/test2:/bin/bash test3:x:503:503::/home/test3:/bin/bash #shadowも確認 (2フィールドが !! なのでパスワード未設定) [root@centos53 ~]# grep test /etc/shadow test1:!!:17008:0:99999:7::: test2:!!:17008:0:99999:7::: test3:!!:17008:0:99999:7::: #スイッチしようとしてもパスワードを求められてしまう [root@centos53 ~]# su - iuser パスワード: [iuser@centos53 ~]$ su - test1 パスワード: su: パスワードが違います #chpasswdに渡す設定用ファイルを作成します #user:password形式で記載します [root@centos53 ~]# cat << EOF > /tmp/pass_settei test1:pass1 test2:pass2 test3:pass3 EOF #chpasswdコマンドを実行(エラーがでなければOK) [root@centos53 ~]# chpasswd < /tmp/pass_settei [root@centos53 ~]# #shadowを確認(2フィールド目が暗号化されたパスワード) [root@centos53 ~]# grep test /etc/shadow test1:$1$QdNQr/lH$I2/tzWz0yWLzhBSa9rc.U0:17008:0:99999:7::: test2:$1$QdNQr/lH$ndjHlIjvNEkmieengVLaT0:17008:0:99999:7::: test3:$1$QdNQr/lH$yNrzfvP7t0RC.1pDlBfuN1:17008:0:99999:7::: #ログイン確認 [iuser@centos53 ~]$ su - test1 パスワード: [test1@centos53 ~]$ su - test2 パスワード: [test2@centos53 ~]$ su - test3 パスワード: [test3@centos53 ~]$ #余談 /etc/shadow のハッシュ値と比較してパスワードが合っているか確認する #必要な文字列 /etc/shadowから抜き出す [root@centos53 ~]# grep test1 /etc/shadow | gawk -F'$' '{print "$"$2"$"$3"$" }' $1$QdNQr/lH$ #perlでハッシュ値を作成し、/etc/shadowの値と合致したらパスワードも合致 [root@centos53 ~]# perl -e 'print crypt("pass1","\$1\$QdNQr/lH\$"),"\n"' ; grep test1 /etc/shadow | cut -d':' -f2 $1$QdNQr/lH$I2/tzWz0yWLzhBSa9rc.U0 $1$QdNQr/lH$I2/tzWz0yWLzhBSa9rc.U0
今まではrootユーザーからいちいちスイッチしてpasswdコマンドを使用していました。ユーザー数も少ない環境だったのでどうにかなていましたが大量のユーザー登録を行う時は手間でした。
chpasswdコマンドを使えば設定ファイルさえ用意してあげればコマンド一つで設定完了です。
サーバー構築関係の方には常識かも知れませんが私には目から鱗でした。