パスワードの設定方法
passwd
コマンドを使用してユーザーパスワードを変更します。
書式
passwd [OPTION...] <accountName>
常用オプション
-k, --keep-tokens # 認証トークンの有効期限を保持する
-d, --delete # ユーザーパスワードを削除し、ロックも解除する(root権限が必要)
-l, --lock # ユーザーパスワードをロックする(root権限が必要)
-u, --unlock # ユーザーパスワードのロックを解除する(root権限が必要)
-e, --expire # ユーザーパスワードの有効期限を切る(root権限が必要)
-f, --force # 操作を強制実行する
-x, --maximum=DAYS # パスワードの最大有効期間を設定する(root権限が必要)
-n, --minimum=DAYS # パスワードの最小有効期間を設定する(root権限が必要)
-w, --warning=DAYS # パスワードの有効期限が切れる何日前に警告するか設定する(root権限が必要)
-i, --inactive=DAYS # パスワードが失効した後、アカウントを無効にするまでの日数(root権限が必要)
-S, --status # ユーザーのパスワード状態を照会する(root権限が必要)
--stdin # パスワードを標準入力から受け取る(Ubuntuにはない)
一般ユーザーが自分のパスワードを変更する
[jose@rocky8 ~]$ passwd
Changing password for user jose.
Current password:
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
rootが他のユーザーのパスワードを変更
[root@rocky8 ~]# passwd jose
Changing password for user jose.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
パスワードの変更は、基本的に /etc/shadow ファイルを更新します。
[root@rocky8 ~]# ll /etc/shadow
----------. 1 root root 1475 Jun 25 17:16 /etc/shadow
対話形式でないユーザーパスワードの変更方法
# レッドハット系Linuxで使用可能
[root@rocky8 ~]# echo '123456' | passwd --stdin jose
Changing password for user jose.
passwd: all authentication tokens updated successfully.
[root@rocky8 ~]# passwd --stdin jose <<<123456
Changing password for user jose.
passwd: all authentication tokens updated successfully.
# Ubuntuの passwd コマンドは --stdin オプションがない
# このやり方でCentOSでも動くので、より汎用性が高い
root@ubuntu20:~# echo -e '123456\n123456' | passwd jose
New password: Retype new password: passwd: password updated successfully
次回ログイン時にユーザーにパスワード変更を強制する
[root@rocky8 ~]# passwd -e jose
Expiring password for user jose.
passwd: Success
# jose が次回ログイン時に表示されるメッセージ
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user jose.
Current password:
ユーザーパスワードポリシーの変更
chage
コマンドはユーザーのパスワードポリシーを変更する際に使用します。
書式
chage [options] LOGIN
常見オプション
-d LAST_DAY # パスワードを変更した日を設定
-m, --mindays MIN_DAYS # パスワードの最小使用期間
-M, --maxdays MAX_DAYS # パスワードの最大使用期間
-W, --warndays WARN_DAYS # パスワードの有効期限が切れる何日前に警告するか設定
-I, --inactive INACTIVE # パスワード失効後の猶予期間
-E, --expiredate EXPIRE_DATE # アカウントの有効期限
-l # パスワードポリシーを表示
ユーザーのパスワードポリシーを確認する
[root@rocky8 ~]# chage -l jose
Last password change : Jun 25, 2022
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
例
[root@rocky8 ~]# chage jose
Changing the aging information for jose
Enter the new value, or press ENTER for the default
Minimum Password Age [0]: 3
Maximum Password Age [99999]: 42
Last Password Change (YYYY-MM-DD) [2021-03-14]: 2021-03-29
Password Expiration Warning [7]: 10
Password Inactive [-1]: 20
Account Expiration Date (YYYY-MM-DD) [-1]: 2022-03-29
[root@rocky8 ~]# getent shadow jose
jose:$6$UpJNaaFGwCqFBSN9$MA4OMcJRJWbNPeMmQPvVjUcI4RYbGywipqYc9hlg87YUXvmpbi.Zcni
8ktdzw/DuECug4IBoEC/yXYv7dknu/0:18715:3:42:10:20:19080:
単一項目のみを変更
[root@rocky8 ~]# chage -d 2022-06-25 jose
[root@rocky8 ~]# getent shadow jose
jose:$6$O.JbzJijqCDIHsXM$jnhJl6cucyUXE9WOaZB9WLbKAimOn/lq0Q0/UoJyMrlY1c9xOCQBWCr
qflfjLflueoFz60w7QuHZhCzSw2CKi/:19168:0:99999:7:::