2018-06-15_Linuxで一括でユーザーのパスワード設定を行う方法(chpasswd)

このページでわかること

  • 複数ユーザーへchpasswdコマンドを使ったパスワード一括設定の方法

初めてのLinuxシステム構築で先輩から教えてもらった方法です。 当時はpasswdコマンドで1ユーザー毎に設定していました。

方法としては下記の通りです。

  • 指定フォーマットでchpasswdに渡す
  • フォーマット user:password

参考:25~34行目辺りが該当手順です

凡例

1
2
3
下記形式のファイルをchpasswdコマンドで読み込めばOk
user1:passwd
user2:passwd

参照

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
##c ユーザを追加
#r adduser test1
#r adduser test2
#r adduser test3

##c 登録されたか確認
#r 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

##c shadowも確認 (2フィールドが !! なのでパスワード未設定)
#r grep test /etc/shadow
test1:!!:17008:0:99999:7:::
test2:!!:17008:0:99999:7:::
test3:!!:17008:0:99999:7:::

##c スイッチしようとしてもパスワードを求められてしまう
#r su - iuser
パスワード:
$c su - test1
パスワード:
su: パスワードが違います

##c chpasswdに渡す設定用ファイルを作成
##c user:password形式で記載します
#r cat << EOF > /tmp/pass_settei
test1:pass1
test2:pass2
test3:pass3
EOF

##c chpasswdコマンドに食わせる(エラーがでなければOK)
#r chpasswd < /tmp/pass_settei

##c shadowを確認(2フィールド目が暗号化されたパスワード)
#r 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:::

##c ログイン確認
[iuser@centos ~]$ su - test1
パスワード:
[test1@centos ~]$ su - test2
パスワード:
[test2@centos ~]$ su - test3
パスワード:
[test3@centos ~]$

##c 余談 /etc/shadow のハッシュ値と比較してパスワードが合っているか確認する

##c 必要な文字列 /etc/shadowから抜き出す
#r grep test1 /etc/shadow | gawk -F'$' '{print "$"$2"$"$3"$" }'
$1$QdNQr/lH$

##c perlでハッシュ値を作成し、/etc/shadowの値と合致したらパスワードも合致
#r 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