passwd

passwd はユーザー・アカウントのパスワードを変更するLinuxコマンドです。通常のユーザーは自分のアカウントのパスワードだけを変更できますが、スーパーユーザーはどのアカウントのパスワードも変更できます。passwd コマンドは、アカウントまたは関連するパスワードの有効期間を変更することもできます。

古いパスワードがある場合は、最初にそのパスワードの入力を求められます。このパスワードは暗号化され、保存されたパスワードと比較されます。ユーザーが正しいパスワードを入力できる機会は1回のみです。スーパーユーザーはこの手順を省略して、忘れたパスワードを変更できるようになります。

パスワードには変更できる最短期間や最長期間を設けることができます。これをエージングといいます。パスワードが入力されると、パスワードのエージング情報がチェックされ、ユーザがこの時点でパスワードを変更できるかどうかが確認されます。そうでない場合、passwdはパスワードの変更を拒否して終了します。

ユーザーは新しいパスワードの入力を2回求められます。2番目の入力が最初の入力と比較され、パスワードを変更するには両方が一致する必要があります。

次に、パスワードの複雑さがテストされます。一般的なガイドラインとして、パスワードは6~8文字で構成され、次の各セットの1文字以上を含める必要があります。

passwdコマンドは、複雑でないパスワードを拒否します。

パスワード・セキュリティの侵害は、通常、パスワードの不注意な選択または処理によって発生します。このため、辞書に記載されているパスワードや、書き留めておく必要があるパスワードは選択しないでください。また、パスワードは正しい名前、ライセンス番号、生年月日、または住所であってはなりません。これらのいずれも、システムセキュリティに違反する推測として使用できます。

現在のユーザのパスワードを変更する。

$ passwd

指定したユーザのパスワードを変更する。他のユーザーの情報を変更するため、スーパーユーザー権限が必要になる。

$ sudo passwd tsuka

コマンド・オプション

passwd コマンドには、次のコマンド・オプションを指定できる。

-a
--all

すべてのユーザーのステータスを表示する。このオプションは -S オプションと共に指定する。他のユーザーの情報を表示するため、スーパーユーザー権限が必要になる。

$ sudo passwd -S -a
-d
--delete

ユーザーのパスワードを削除する。

$ passwd -d
-e
--expire

ユーザーのパスワードを有効期限切れにする。パスワードの有効期限が切れると、ユーザーが次回ログインしたときに、パスワードの変更が要求される。

$ passwd -e
-h
--help

ヘルプメッセージを表示して終了する。

$ passwd -h
-i days
--inactive days

days 日後にユーザーのアカウントを無効にする。無効になったアカウントはログインできなくなる。

$ passwd -i 7
-l
--lock

アカウントのパスワードをロックする。

$ passwd -l
-n days
--mindays days

パスワードを変更する間隔の最小日数を days に設定する。

$ passwd -n 7
-q
--quiet

静音モードで実行する。

-S
--status

アカウントのステータスを表示する。

$ passwd -S
tsuka P 05/03/2021 0 99999 7 -1
-u
--unlock

アカウントのパスワードのロックを解除する。このオプションは、パスワードを以前の値(-lオプションを使用する前の値)に戻すことによって、パスワードを再度有効にする。

$ passwd -u
-w days
--warndays days

パスワードの変更が要求されるまでの警告の日数を days に設定する。

$ passwd -w 60
-x days
--maxdays days

パスワードの最大有効日数を days に設定する。

$ passwd -x 90

終了コード

passwd コマンドは次の値で終了する。

passwd コマンドの終了コード
終了コード 意味
0 成功
1 許可が下りない
2 オプションの無効な組み合わせ
3 予期しない失敗、何も行われない
4 予期しない失敗、passwdファイルがありません
5 passwdファイルがビジーです。再試行してください
6 オプションの引数が無効です

passwd コマンドの終了コードを表示する例を示す。

$ passwd -S
tsuka P 05/03/2021 0 99999 7 -1
$ echo $?
0
$ passwd -S -a
passwd: Permission denied.
$ echo $?
1

Linuxコマンド