Linuxのユーザー管理でパスワードを変更する方法をお伝えします。
パスワードを変更した後の確認や、強制的に削除したりするオプションも実例を用いて解説します。
passwdコマンドはオプションも多くあるので、覚えにくいので筆者がまとめます。
筆者はWindowsサーバーやLinuxサーバーの運用構築を11年以上おこなってきました。その経験を元に知識を公開していきます!
実例を用いて説明しているので、Linuxのパスワードについてマスターできるようになります。
Linuxサーバーでユーザーのパスワードを変更する方法
Linuxサーバーでユーザーのパスワードを変更するコマンドは、passwdコマンドです。基礎構文を以下に示します。
passwd オプション ユーザー名
ユーザーのパスワードは「/etc/shadow」ファイルに、暗号化されて記述されています。
[root@localhost ~]# cat /etc/shadow
~省略~
testuser1:$6$mAhfHyCI$Bo/PdcNQdqbgOUK7LvTKPcim/lE45ufY9P67ha51XhQBrxiA/4zSqk8dUmIG2N5X4G..poBkUbXSKlO73N4O/.:19855:0:99999:7:::
testuser2:!!:19855:0:99999:7:::
区切り文字を「:」として2項目目にパスワードが記述されています。
Linuxでユーザーを作成した時のパスワードのデフォルト値
ユーザーを作成した時のデフォルトパラメータは「/etc/default/useradd」に設定があります。
[root@localhost ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
「EXPIRE=」となっているので、デフォルトのパスワード期限はなしになり「99999」が割り当てられます。
ユーザーのパスワードを変更する時のオプション
ユーザーのパスワードを変更する時のオプションをまとめます。
オプション | 効果 |
---|---|
-d | パスワードを削除する |
-e | パスワードを期限切れにする。次回ログイン時パスワード再設定 |
-x 日数 | パスワード変更の最大日数を指定 |
-w 日数 | パスワードの有効期限の何日前から警告文を出すか指定 |
-i 日数 | パスワードの有効期限が切れてから使用不可になるまでの日数を指定 |
-n 日数 | パスワードが変更可能になる日数を指定 |
-S | パスワードの設定状態を表示する。パスワードロック状態の確認 |
-l | パスワードをロックする |
-u | パスワードのロック解除 |
「/etc/shadow」ファイルのどの部分が変化するかをまとめます。
ユーザー名:パスワード:e:n:x:w:i:不明:不明
たとえばeオプションを実行すれば3番目の数字が0になり、有効期限がなくなります。
nオプションであれば4番目の数字が指定した数字となり、パスワードが変更可能になる日数がそれになります。
わかりやすいパスワード期限などの確認
確認は「chage -l ユーザー名」の方がわかりやすいので、こちらで確認します。
chage -l ユーザー名
ユーザーのパスワードを削除する
ユーザーのパスワードを削除するオプションはdオプションです。
[root@localhost ~]# passwd -d testuser1
ユーザー testuser1 のパスワードを削除。
passwd: 成功
catコマンドで「etc/shadow」のファイルを確認します。
[root@localhost ~]# cat /etc/shadow
~省略~
testuser1::19855:0:99999:7:::
2項目目が空白になり、パスワードが削除されました。
リモートログインなどが出来なくなりました。
ユーザーのパスワードを期限切れにする
パスワードを有効期限切れにするオプションはeオプションです。
[root@localhost ~]# passwd -e testuser2
ユーザー testuser2 のパスワードを失効。
passwd: 成功
catコマンドで「etc/shadow」のファイルを確認します。
[root@localhost ~]# cat /etc/shadow
~省略~
testuser2:$6$zo~省略~1/paJlF1:0:0:99999:7:::
3項目目が0となり、パスワードが有効期限切れになっています。
chageコマンドのlオプションで確認します。
[root@localhost ~]# chage -l testuser2
最終パスワード変更日 :パスワードは変更しなければなりません
パスワード期限: : パスワードは変更しなければなりません
パスワード無効化中 : パスワードは変更しなければなりません
アカウント期限切れ : なし
パスワードが変更できるまでの最短日数 : 0
パスワードを変更しなくてよい最長日数 : 99999
パスワード期限が切れる前に警告される日数 : 7
「パスワードを変更しなくてよい最長日数」なども無制限となっていますが、強制的にパスワードが有効期限切れになっています。
teratermでtestuser2ユーザーでログインしてみます。
You are required to change your password immediately (root enforced)
Last failed login: Sun May 12 18:32:02 JST 2024 from 192.168.0.11 on ssh:notty
There was 1 failed login attempt since the last successful login.
WARNING: Your password has expired.
You must change your password now and login again!
ユーザー test1 のパスワードを変更。
test1 用にパスワードを変更中
現在の UNIX パスワード:
パスワードが求められます。
ユーザーのパスワード変更の最大日数を指定
パスワード変更の最大日数を指定するオプションはxオプションです。
[root@localhost ~]# passwd -x 2 testuser3
ユーザー testuser3 のエージングデータを調節。
passwd: 成功
catコマンドで「etc/shadow」のファイルを確認します。
[root@localhost ~]# cat /etc/shadow
~省略~
testuser3:$6$5xE ~省略~ sSx80:19855:0:2:7:::
5項目目が指定した2となり、パスワード変更の最大日数が2になっています。
パスワード期限などの設定と確認をその他のコマンドで行う
Linuxでパスワードの期限などの設定と確認をできるコマンドがあります。
パスワード期限などの設定
chage -M パスワードの期限 ユーザー名
パスワード期限などの確認
chage -l ユーザー名
確認は「chage -l ユーザー名」の方がわかりやすいので、こちらで確認します。
[root@localhost ~]# chage -l testuser3
最終パスワード変更日 : 5月 12, 2024
パスワード期限: : 5月 14, 2024
パスワード無効化中 : なし
アカウント期限切れ : なし
パスワードが変更できるまでの最短日数 : 0
パスワードを変更しなくてよい最長日数 : 2
パスワード期限が切れる前に警告される日数 : 7
「パスワード期限」が2日後となっており、「パスワードを変更しなくてもよい最長日数」が2となっています。
もうひとつのパスワード期限設定「chage -M」コマンドで、パスワード期限を3日にして確認してみます。
[root@localhost ~]# chage -M 3 testuser3
[root@localhost ~]# chage -l testuser3
最終パスワード変更日 : 5月 12, 2024
パスワード期限: : 5月 15, 2024
パスワード無効化中 : なし
アカウント期限切れ : なし
パスワードが変更できるまでの最短日数 : 0
パスワードを変更しなくてよい最長日数 : 3
パスワード期限が切れる前に警告される日数 : 7
「パスワード期限」が3日後となっており、「パスワードを変更しなくてもよい最長日数」が3となっています。
パスワード期限設定「passwd」コマンドの、xオプションでパスワード期限を4日にして確認してみます。
[root@localhost ~]# passwd -x 4 testuser3
ユーザー testuser3 のエージングデータを調節。
passwd: 成功
[root@localhost ~]# chage -l testuser3
最終パスワード変更日 : 5月 12, 2024
パスワード期限: : 5月 16, 2024
パスワード無効化中 : なし
アカウント期限切れ : なし
パスワードが変更できるまでの最短日数 : 0
パスワードを変更しなくてよい最長日数 : 4
パスワード期限が切れる前に警告される日数 : 7
「パスワード期限」が4日後となっており、「パスワードを変更しなくてもよい最長日数」が4となっています。
ユーザーのパスワードの有効期限の何日前から警告文を出すか指定
パスワードの有効期限の何日前から警告文を出すか、指定する事が出来ます。
[root@localhost ~]# passwd -w 4 testuser2
ユーザー testuser2 のエージングデータを調節。
passwd: 成功
catコマンドで「etc/shadow」のファイルを確認します。
[root@localhost ~]# cat /etc/shadow
~省略~
testuser2:$6$zo~省略~1/paJlF1:19855:3:2:4:::
6項目目が指定した4になり、パスワード有効期限の4日前から警告文が出る様に設定できました。
teratermでsshしてログインしてみます。
Warning: your password will expire in 2 days
Last login: Sun May 12 20:22:25 2024 from 192.168.0.11
[testuser2@localhost ~]$
1行目に「Warning: your password will expire in 2 days」と警告文が出ました。
ユーザーのパスワードの有効期限が切れてから使用不可になるまでの日数を指定
パスワードの有効期限が切れてから、使用不可になるまでの日数を指定する事が出来ます。
[root@localhost ~]# passwd -i 6 testuser3
ユーザー testuser3 のエージングデータを調節。
passwd: 成功
catコマンドで「etc/shadow」のファイルを確認します。
[root@localhost ~]# cat /etc/shadow
~省略~
testuser3:$6$5xE ~省略~ sSx80:19855:0:2:7:6::
7項目目が空白から指定した6になり、有効期限が切れてからパスワードが無効化になるまでの日数が6となっています。
chageコマンドのlオプションで確認します。
[root@localhost ~]# chage -l testuser3
最終パスワード変更日 : 5月 12, 2024
パスワード期限: : 5月 16, 2024
パスワード無効化中 : 5月 22, 2024
アカウント期限切れ : なし
パスワードが変更できるまでの最短日数 : 10
パスワードを変更しなくてよい最長日数 : 4
パスワード期限が切れる前に警告される日数 : 7
「パスワード無効化中」の欄にパスワード期限から指定した6日後の日付が記述されています。
ユーザーのパスワードが変更可能になる日数を指定
パスワードが変更可能になる日数を指定する事が出来ます。
[root@localhost ~]# passwd -n 8 testuser3
ユーザー testuser3 のエージングデータを調節。
passwd: 成功
catコマンドで「etc/shadow」のファイルを確認します。
[root@localhost ~]# cat /etc/shadow
~省略~
testuser3:$6$5xE ~省略~ sSx80:19855:8:2:7:6::
4項目目が空白から指定した8になり、パスワードが変更できるまでの最短日数が8となっています。
chageコマンドのlオプションで確認します。
[root@localhost ~]# chage -l testuser3
最終パスワード変更日 : 5月 12, 2024
パスワード期限: : 5月 16, 2024
パスワード無効化中 : 5月 22, 2024
アカウント期限切れ : なし
パスワードが変更できるまでの最短日数 : 8
パスワードを変更しなくてよい最長日数 : 4
パスワード期限が切れる前に警告される日数 : 7
「パスワードが変更できるまでの最短日数」の欄に指定した8となっています。
ユーザーの状態を表示する。パスワード設定状況やロック状態確認など
ユーザーの情報を見る事がSオプションで可能です。パスワードをロックの確認などに使用できます。
[root@localhost ~]# passwd -S testuser4
testuser4 PS 2024-05-16 0 99999 7 -1 (パスワード設定済み、SHA512 暗号化。)
結果の説明を以下にまとめます。
フィールドNo | 説明 |
---|---|
1 | ユーザー名 |
2 | PS:パスワード設定済み LK:アカウントロックかパスワード未設定 |
3 | 最後にパスワードが変更された日付 |
4 | パスワードの最短期限 |
5 | パスワードの最長期限。99999は無制限 |
6 | パスワードが切れる前に警告文を出す日数 |
7 | パスワードの使用不能期限。-1は期限なし |
ここではパスワード設定済みになっています。
ユーザーのパスワードをロックする
ユーザーのパスワードをロックする事が出来ます。
[root@localhost ~]# passwd -l testuser3
ユーザー testuser3 用のパスワードをロック。
passwd: 成功
catコマンドで「etc/shadow」のファイルを確認します。
[root@localhost ~]# cat /etc/shadow
~省略~
testuser3:!!$6$5xE ~省略~ sSx80:19855:8:2:7:6::
2項目目の暗号化されたパスワードの前に「!!」が追加されています。
chageコマンドのlオプションで確認します。
[root@localhost ~]# chage -l testuser3
最終パスワード変更日 : 5月 12, 2024
パスワード期限: : 5月 16, 2024
パスワード無効化中 : 5月 22, 2024
アカウント期限切れ : なし
パスワードが変更できるまでの最短日数 : 8
パスワードを変更しなくてよい最長日数 : 4
パスワード期限が切れる前に警告される日数 : 7
特にステータスは変化していません。
先程のpasswdコマンドのSオプションで確認してみます。
[root@localhost ~]# passwd -S testuser3
testuser3 LK 2024-05-17 0 99999 7 -1 (パスワードはロック済み。)
2項目目が「LK」になり、最後に「パスワードはロック済み」となっています。
teratermでログインしてみますが、当然ログインできません。
ユーザーのパスワードのロック解除
ユーザーのロックされたパスワードを解除します。
[root@localhost ~]# passwd -u testuser3
ユーザー testuser3 用のパスワードをロック解除。
passwd: 成功
catコマンドで「etc/shadow」のファイルを確認します。
[root@localhost ~]# cat /etc/shadow
~省略~
testuser3:$6$5xE ~省略~ sSx80:19855:8:2:7:6::
2項目目の暗号化されたパスワードの前の「!!」が削除されています。
先程のpasswdコマンドのSオプションで確認してみます。
[root@localhost ~]# passwd -S testuser3
testuser3 PS 2024-05-17 0 99999 7 -1 (パスワード設定済み、SHA512 暗号化。)
2項目目が「PS」になり、最後に「パスワード設定済み」となっています。
teratermでログインできました!
Linuxサーバーでユーザー管理に関するその他の記事について
ユーザー作成する方法について
ユーザー削除する方法について
ユーザー名変更する方法について
ユーザー一覧表示する方法について
まとめ:Linuxサーバーでユーザーのパスワードを変更する方法とオプション
ユーザーのパスワードを変更する方法
Linuxサーバーでユーザーのパスワードを変更するコマンドは、passwdコマンドです。
passwd オプション ユーザー名
ユーザーのパスワードは「/etc/shadow」ファイルに、暗号化されて記述されています。
[root@localhost ~]# cat /etc/shadow
~省略~
testuser1:$6$mAhfHyCI$Bo/PdcNQdqbgOUK7LvTKPcim/lE45ufY9P67ha51XhQBrxiA/4zSqk8dUmIG2N5X4G..poBkUbXSKlO73N4O/.:19855:0:99999:7:::
testuser2:!!:19855:0:99999:7:::
区切り文字を「:」として2項目目にパスワードが記述されています。
ユーザーのパスワードを変更する時のオプション
オプション | 効果 |
---|---|
-d | パスワードを削除する |
-e | パスワードを期限切れにする。次回ログイン時パスワード再設定 |
-x 日数 | パスワード変更の最大日数を指定 |
-w 日数 | パスワードの有効期限の何日前から警告文を出すか指定 |
-i 日数 | パスワードの有効期限が切れてから使用不可になるまでの日数を指定 |
-n 日数 | パスワードが変更可能になる日数を指定 |
-S | パスワードの設定状態を表示する。パスワードロック状態の確認 |
-l | パスワードをロックする |
-u | パスワードのロック解除 |
「/etc/shadow」ファイルのどの部分が変化するかをまとめます。
ユーザー名:パスワード:e:n:x:w:i:不明:不明
わかりやすいパスワード期限などの確認
確認は「chage -l ユーザー名」の方がわかりやすいので、こちらで確認する事をオススメします。
chage -l ユーザー名
パスワードのロックの確認は「passwd -S」コマンドです。
passwd -S ユーザー名
パスワード期限などの設定
パスワードの有効期限はpasswdコマンドで設定できます。
passwd -x 日数 ユーザー名
chageコマンドでも設定可能です。
chage -M パスワードの期限 ユーザー名