【Linux初心者向け】ユーザーのパスワードを変更する方法

ログイン

Linuxのユーザー管理でパスワードを変更する方法をお伝えします。

パスワードを変更した後の確認や、強制的に削除したりするオプションも実例を用いて解説します。

passwdコマンドはオプションも多くあるので、覚えにくいので筆者がまとめます。

筆者はWindowsサーバーやLinuxサーバーの運用構築を11年以上おこなってきました。その経験を元に知識を公開していきます!

実例を用いて説明しているので、Linuxのパスワードについてマスターできるようになります。

目次

Linuxサーバーでユーザーのパスワードを変更する方法

ログイン
Binary code abstract background, Digital communication code.

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」が割り当てられます。

ユーザーのパスワードを変更する時のオプション

ログイン
Binary code abstract background, Digital communication code.

ユーザーのパスワードを変更する時のオプションをまとめます。

オプション効果
-dパスワードを削除する
-eパスワードを期限切れにする。次回ログイン時パスワード再設定
-x 日数パスワード変更の最大日数を指定
-w 日数パスワードの有効期限の何日前から警告文を出すか指定
-i 日数パスワードの有効期限が切れてから使用不可になるまでの日数を指定
-n 日数パスワードが変更可能になる日数を指定
-Sパスワードの設定状態を表示する。パスワードロック状態の確認
-lパスワードをロックする
-uパスワードのロック解除
passwdコマンドのオプション一覧

「/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項目目が空白になり、パスワードが削除されました。

リモートログインなどが出来なくなりました。

ユーザーのパスワードを期限切れにする

時計の針を動かしている
Binary code abstract background, Digital communication code.

パスワードを有効期限切れにするオプションは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 パスワード:

パスワードが求められます。

ユーザーのパスワード変更の最大日数を指定

時間
Binary code abstract background, Digital communication code.

パスワード変更の最大日数を指定するオプションは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 パスワードの期限 ユーザー名

パスワードの期限を「99999」にすれば有効期限なしに設定できます。

パスワード期限などの確認

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」と警告文が出ました。

ユーザーのパスワードの有効期限が切れてから使用不可になるまでの日数を指定

パスワード
Binary code abstract background, Digital communication code.

パスワードの有効期限が切れてから、使用不可になるまでの日数を指定する事が出来ます。

[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ユーザー名
2PS:パスワード設定済み
LK:アカウントロックかパスワード未設定
3最後にパスワードが変更された日付
4パスワードの最短期限
5パスワードの最長期限。99999は無制限
6パスワードが切れる前に警告文を出す日数
7パスワードの使用不能期限。-1は期限なし
passwdコマンドの-Sオプションで表示されたフィールドの意味

ここではパスワード設定済みになっています。

ユーザーのパスワードをロックする

ログイン
Binary code abstract background, Digital communication code.

ユーザーのパスワードをロックする事が出来ます。

[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サーバーユーザーのパスワードを変更するコマンドは、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パスワードのロック解除
passwdコマンドのオプション一覧

「/etc/shadow」ファイルのどの部分が変化するかをまとめます。

ユーザー名:パスワード:e:n:x:w:i:不明:不明

わかりやすいパスワード期限などの確認

確認は「chage -l ユーザー名」の方がわかりやすいので、こちらで確認する事をオススメします。

chage -l ユーザー名

パスワードのロックの確認は「passwd -S」コマンドです。

passwd -S ユーザー名

パスワード期限などの設定

パスワードの有効期限はpasswdコマンドで設定できます。

passwd -x 日数 ユーザー名

chageコマンドでも設定可能です。

chage -M パスワードの期限 ユーザー名

パスワードの期限を「99999」にすれば有効期限なしに設定できます。

ログイン

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次