[Linux] パスワードを変更する - passwd

Linux上のユーザーのパスワードを変更するにはpasswdコマンドを利用します。

実行例

自分のパスワードを変更する

自分のパスワードを変更する場合、管理者権限(root権限)は不要です。

$ passwd
ユーザー katsube のパスワードを変更。
katsube 用にパスワードを変更中
現在の UNIX パスワード:
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

一般的にUNIX系OSでは入力したパスワードは画面上には表示されません。入力した桁を表現するアスタリスク(*)もです。悪意を持った第三者が背中越しに盗み見る「ショルダーハッキング」を行われた際の防御のためです。

この例のようにpasswdは自分自身のパスワードの変更はもちろんですが、管理者権限(root権限)があれば他のユーザーのパスワードも変更できます。

現在のパスワードを忘れた場合は?

パスワードは暗号化されて保存されているため、現在のパスワードを確認することはできません(パスワードをクラックするツールなどを実行すればわかるっちゃわかりますが)。そのため忘れてしまった場合は新しいパスワードを設定してやる必要があります。

管理者権限(root権限)を持ったユーザーが、変更したいユーザー名を指定した状態でpasswdを実行します。

$ sudo passwd katsube
ユーザー katsube のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

この場合、現在のパスワードは聞かれず、すぐに「新しいパスワード」の入力が求められます。

指定ユーザーのパスワードを変更する

passwdコマンドに変更したユーザー名を指定するだけです。

$ sudo passwd foo
ユーザー foo のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

前述の通り「現在のパスワード」は聞かれませんので、パスワードを忘れた場合の復旧手段として用いることもできます。

オプション

-S

指定したユーザーのパスワードの状態を確認できます。

$ sudo passwd -S katsube
katsube PS 2019-10-03 0 99999 7 -1 (パスワード設定済み、SHA512 暗号化。)

-l

指定したユーザーをロックします。管理者権限(root権限)が必要です。

$ sudo passwd -l foo

-u

指定したユーザーのロックを解除します。管理者権限(root権限)が必要です。

$ sudo passwd -u foo

-x

パスワードが有効な日数を指定します。

$ sudo passwd -x 30 foo

-i

パスワードが無効になってから、新しいパスワードを設定可能な日数を指定します。無効になってから放置し続けるとログインができなくなります。

$ sudo passwd -i 7 foo