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