passwd はユーザー・アカウントのパスワードを変更するLinuxコマンドです。通常のユーザーは自分のアカウントのパスワードだけを変更できますが、スーパーユーザーはどのアカウントのパスワードも変更できます。passwd コマンドは、アカウントまたは関連するパスワードの有効期間を変更することもできます。
古いパスワードがある場合は、最初にそのパスワードの入力を求められます。このパスワードは暗号化され、保存されたパスワードと比較されます。ユーザーが正しいパスワードを入力できる機会は1回のみです。スーパーユーザーはこの手順を省略して、忘れたパスワードを変更できるようになります。
パスワードには変更できる最短期間や最長期間を設けることができます。これをエージングといいます。パスワードが入力されると、パスワードのエージング情報がチェックされ、ユーザがこの時点でパスワードを変更できるかどうかが確認されます。そうでない場合、passwdはパスワードの変更を拒否して終了します。
ユーザーは新しいパスワードの入力を2回求められます。2番目の入力が最初の入力と比較され、パスワードを変更するには両方が一致する必要があります。
次に、パスワードの複雑さがテストされます。一般的なガイドラインとして、パスワードは6~8文字で構成され、次の各セットの1文字以上を含める必要があります。
passwdコマンドは、複雑でないパスワードを拒否します。
パスワード・セキュリティの侵害は、通常、パスワードの不注意な選択または処理によって発生します。このため、辞書に記載されているパスワードや、書き留めておく必要があるパスワードは選択しないでください。また、パスワードは正しい名前、ライセンス番号、生年月日、または住所であってはなりません。これらのいずれも、システムセキュリティに違反する推測として使用できます。
現在のユーザのパスワードを変更する。
$ passwd
指定したユーザのパスワードを変更する。他のユーザーの情報を変更するため、スーパーユーザー権限が必要になる。
$ sudo passwd tsuka
passwd コマンドには、次のコマンド・オプションを指定できる。
-a
--all
$ sudo passwd -S -a
-d
--delete
$ passwd -d
-e
--expire
$ passwd -e
-h
--help
$ passwd -h
-i days
--inactive days
$ passwd -i 7
-l
--lock
$ passwd -l
-n days
--mindays days
$ passwd -n 7
-q
--quiet
-S
$ passwd -S
tsuka P 05/03/2021 0 99999 7 -1
-u
--unlock
$ passwd -u
-w days
--warndays days
$ passwd -w 60
-x days
--maxdays days
$ passwd -x 90
コマンドが終了すると、親プロセスへ終了コードが渡される。passwd コマンドの終了コードは、次に示すいずれかの値である。
passwd コマンドの終了ステータスを表示する例を示す。
$ passwd -S
tsuka P 05/03/2021 0 99999 7 -1
$ echo $?
0
passwd コマンドの終了ステータスを表示する例を示す。
$ passwd -S -a
passwd: Permission denied.
$ echo $?
1
かつて、定期的にパスワードの変更を要求するのがセキュリティの向上に役立つと信じられていた時代があった。 しかし、NIST(アメリカ国立標準技術研究所)、総務省および内閣サイバーセキュリティセンターがこれを否定したことにより、現在では、定期的にパスワードの変更を要求するのは無意味とされている。
National Institute of Standards and Technology (2021) NIST Special Publication 800-63B
総務省 (2013) 安全なパスワード管理
内閣サイバーセキュリティセンター (2020) インターネットの安全・安心ハンドブック