「rootで他のユーザーのパスワードを変更する方法を知りたい」
この記事では、
passwd コマンドの基本的な使い方から、ロック・有効期限の設定まで実行例付きで解説します。CentOS 7 / RHEL 9で動作確認済みです。
・passwdコマンドでLinuxユーザーのパスワードを変更する基本手順
・rootユーザーによる他ユーザーのパスワード強制変更の方法
・--lock / --unlock オプションでアカウントのロック・解除ができる
・--expire でパスワードの有効期限を即時切れにする運用方法
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
passwdコマンドの基本構文と仕組み
passwd は、Linuxシステムでユーザーのパスワードを変更・管理するためのコマンドです。# 基本書式 # passwd [オプション] [ユーザー名]
パスワードの暗号化ハッシュは
/etc/shadow ファイルに保存されます。/etc/passwd ファイルにはユーザー情報が記録されますが、パスワードそのものは格納されていません(2つ目のフィールドは x と表示されます)。主要オプション一覧
| やりたいこと | コマンド |
|---|---|
| 自分のパスワードを変更する | passwd |
| 他ユーザーのパスワードを変更する | passwd tanaka |
| アカウントをロックする | passwd -l tanaka |
| アカウントのロックを解除する | passwd -u tanaka |
| パスワードを即期限切れにする | passwd -e tanaka |
| パスワードを削除する(未設定状態にする) | passwd -d tanaka |
| パスワードの状態を確認する | passwd -S tanaka |
自分のパスワードを変更する
1. passwdコマンドを実行する
一般ユーザーが自分のパスワードを変更するには、引数なしでpasswd を実行します。# 自分のパスワードを変更する $ passwd Changing password for user tanaka. Current password: (現在のパスワードを入力) New password: (新しいパスワードを入力) Retype new password: (新しいパスワードを再入力) passwd: all authentication tokens updated successfully.
一般ユーザーの場合、以下のルールが適用されます。
・現在のパスワードの入力が必須:本人確認のため、最初に現在のパスワードを求められます
・パスワードポリシーのチェック:短すぎるパスワードや辞書にある単語は拒否されます
・直前のパスワードの再利用禁止:以前と同じパスワードは設定できません
2. パスワードが拒否される場合
一般ユーザーがパスワードを変更する際、システムのパスワードポリシーに合わないと以下のようなメッセージが表示されます。# パスワードが短すぎる場合 BAD PASSWORD: The password is shorter than 8 characters # 辞書にある単語の場合 BAD PASSWORD: The password fails the dictionary check # ユーザー名を含んでいる場合 BAD PASSWORD: The password contains the user name in some form
rootで他のユーザーのパスワードを変更する
1. 指定ユーザーのパスワードを変更する
rootユーザー(またはsudo を使用)であれば、任意のユーザーのパスワードを変更できます。# tanaka ユーザーのパスワードを変更する # passwd tanaka Changing password for user tanaka. New password: (新しいパスワードを入力) Retype new password: (再入力) passwd: all authentication tokens updated successfully.
2. sudoで実行する場合
一般ユーザーがsudo を使って他のユーザーのパスワードを変更することもできます。# sudo で他のユーザーのパスワードを変更する $ sudo passwd tanaka
sudo パスワードを求められた後に、tanakaユーザーの新しいパスワードを設定できます。パスワードのステータスを確認する(passwd -S)
passwd -S を使うと、ユーザーのパスワードに関するステータス情報を確認できます。# tanaka ユーザーのパスワードステータスを確認する # passwd -S tanaka tanaka PS 2025-01-15 0 99999 7 -1
・tanaka:ユーザー名
・PS:パスワードのステータス(PS=設定済み、LK=ロック中、NP=パスワード未設定)
・2025-01-15:パスワードの最終変更日
・0:パスワード変更の最短間隔(日数)
・99999:パスワードの有効期限(日数、99999はほぼ無期限)
・7:有効期限の警告開始日数(期限切れの何日前から警告するか)
・-1:パスワード期限切れ後の猶予期間(-1は無期限)
アカウントがロックされているかどうか、パスワードがいつ設定されたかなど、トラブル時の調査に非常に役立つコマンドです。
アカウントをロック・アンロックする
ユーザーアカウントを削除せずに、一時的にログインを禁止したい場面があります。退職予定の社員のアカウントや、不審なアクティビティが検出されたアカウントの緊急停止などが典型的なケースです。1. passwd -l でアカウントをロックする
passwd -l(lock)を使うと、指定ユーザーのアカウントをロックできます。# tanaka ユーザーのアカウントをロックする # passwd -l tanaka Locking password for user tanaka. passwd: Success
内部的には、
/etc/shadow のパスワードハッシュの先頭に ! が付加されることで、認証が常に失敗する仕組みです。# ロック前 tanaka:$6$xxxx....:19789:0:99999:7::: # ロック後(先頭に ! が追加される) tanaka:!$6$xxxx....:19789:0:99999:7:::
【重要】SSHキー認証はロックで止まらない
passwd -l でロックしても、SSH公開鍵認証は通ってしまいます。これはLinuxの認証の仕組み上の動作で、パスワードロックはパスワード認証のみを無効にするからです。完全にアクセスを遮断するには、追加の対処が必要です。
・シェルを変更する方法:ログインシェルを
/sbin/nologin または /bin/false に変更する# ログインシェルを nologin に変更して完全遮断する # usermod -s /sbin/nologin tanaka
~/.ssh/authorized_keys を削除または移動する・sshd_config で DenyUsers を使う方法:
/etc/ssh/sshd_config の DenyUsers に追加する完全なアカウント無効化が目的であれば、passwd -l と usermod -s /sbin/nologin を組み合わせるのが現場での定番手順です。
2. passwd -u でアカウントをアンロックする
ロックを解除するには、passwd -u(unlock)を使います。# tanaka ユーザーのアカウントをアンロックする # passwd -u tanaka Unlocking password for user tanaka. passwd: Success
/etc/shadow のパスワードハッシュ先頭から ! が取り除かれ、再びログインできるようになります。3. ロック状態を確認する
アカウントがロックされているかどうかは、passwd -S で確認できます。# ロック状態を確認する # passwd -S tanaka tanaka LK 2025-01-15 0 99999 7 -1 # LK = Locked(ロック中) # PS = Password Set(通常) # NP = No Password(パスワード未設定)
パスワードの有効期限を管理する
1. passwd -e でパスワード期限切れを強制する
passwd -e(expire)を使うと、ユーザーのパスワードを即座に期限切れにできます。次回ログイン時にパスワード変更を強制したい場面で使います。# tanaka ユーザーのパスワードを期限切れにする # passwd -e tanaka Expiring password for user tanaka. passwd: Success
# 次回ログイン時の表示 You are required to change your password immediately (administrator enforced) Changing password for tanaka. Current password: New password: Retype new password:
・新規ユーザー作成時:管理者が仮パスワードを設定し、初回ログイン時に本人に変更させる
・セキュリティインシデント後:全ユーザーにパスワード変更を強制する
2. chageコマンドとの連携(パスワード有効期限の詳細管理)
passwd コマンドでは「即座に期限切れにする」ことしかできませんが、chage(change age)コマンドを使えば、パスワードの有効期限を日数単位で細かく設定できます。# パスワードの有効期限を90日に設定する # chage -M 90 tanaka # パスワードの最短変更間隔を1日にする(1日以内の再変更を防止) # chage -m 1 tanaka # 期限切れの7日前から警告を表示する # chage -W 7 tanaka
chage -l を使います。# tanaka ユーザーのパスワード期限情報を確認する # chage -l tanaka Last password change : Jan 15, 2025 Password expires : Apr 15, 2025 Password inactive : never Account expires : never Minimum number of days between password change : 1 Maximum number of days between password change : 90 Number of days of warning before password expires : 7
chage の主要オプションをまとめます。・-M 日数:パスワードの有効期限(最大日数)を設定する
・-m 日数:パスワード変更の最短間隔(最小日数)を設定する
・-W 日数:期限切れ前の警告開始日数を設定する
・-I 日数:期限切れ後にアカウントを無効にするまでの猶予日数を設定する
・-E 日付:アカウント自体の有効期限を設定する(YYYY-MM-DD形式)
・-l:現在の設定を一覧表示する
/etc/shadow ファイルの構造
パスワードに関するトラブルを調査するとき、/etc/shadow ファイルの構造を知っておくと原因を特定しやすくなります。# /etc/shadow の1行(フィールドは : で区切られる) tanaka:$6$rounds=5000$salt$hash...:19738:0:99999:7:::
・第1フィールド:ユーザー名
・第2フィールド:暗号化パスワード(
!! はパスワード未設定、! で始まる場合はロック状態)・第3フィールド:パスワード最終変更日(1970年1月1日からの日数)
・第4フィールド:パスワード変更の最短間隔(日数)
・第5フィールド:パスワードの有効期限(日数)
・第6フィールド:期限切れ前の警告日数
・第7フィールド:期限切れ後の猶予日数
・第8フィールド:アカウント有効期限(1970年1月1日からの日数)
・第9フィールド:予約(未使用)
パスワードのハッシュ先頭にある
$6$ はSHA-512アルゴリズムを意味します。RHEL/CentOS 7以降のデフォルトです。$5$ はSHA-256、$1$ はMD5(古い環境で使われることがあります)を示します。パスワードポリシーの設定(PAMの概要)
Linuxのパスワードの複雑性チェック(最小文字数や文字種の要件)は、PAM(Pluggable Authentication Modules)という仕組みで制御されています。1. 最小文字数の確認と変更
RHEL/CentOS/AlmaLinux系では、pam_pwquality モジュールが複雑性チェックを担当しています。設定ファイルは /etc/security/pwquality.conf です。# パスワードポリシーの設定ファイルを確認する # cat /etc/security/pwquality.conf # 主要な設定項目 minlen = 8 # パスワードの最小文字数 dcredit = -1 # 数字を最低1文字要求 ucredit = -1 # 大文字を最低1文字要求 lcredit = -1 # 小文字を最低1文字要求 ocredit = -1 # 記号を最低1文字要求
dcredit などの値が -1 の場合、「その文字種を最低1文字含めること」を意味します。0 はチェックなし、正の値はクレジット(ボーナス)の付与です。2. パスワードの履歴管理
過去に使ったパスワードの再利用を防止するには、/etc/pam.d/system-auth(または password-auth)の設定で remember パラメータを追加します。# /etc/pam.d/system-auth の該当行の例 password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=5
remember=5 は「直近5回分のパスワードを記憶し、再利用を拒否する」という設定です。セキュリティTips:パスワード管理の実務ポイント
1. 定期変更よりも複雑なパスワードを重視する
かつては「パスワードは90日ごとに変更すべき」という運用が一般的でしたが、NIST(米国国立標準技術研究所)のガイドライン(SP 800-63B)では、定期的な強制変更は推奨されていません。理由はシンプルで、頻繁に変更を求められると、ユーザーは「末尾の数字を1つ増やすだけ」など安易なパスワードを設定しがちだからです。
現在推奨されている方針は以下のとおりです。
・十分な長さ(12文字以上)と複雑性を持つパスワードを設定する
・定期変更は強制しない(漏洩が判明した場合のみ変更する)
・多要素認証(MFA)を併用する
2. SSH鍵認証との併用
サーバーへのリモートアクセスには、パスワード認証よりもSSH鍵認証を使うのがセキュリティ上の定石です。SSH鍵認証を設定した後は、/etc/ssh/sshd_config でパスワード認証を無効化することで、ブルートフォース攻撃のリスクを大幅に低減できます。# /etc/ssh/sshd_config でパスワード認証を無効化する PasswordAuthentication no
「Authentication token manipulation error」が出た時の対処法
パスワード変更時に以下のエラーが表示されることがあります。# エラー表示 $ passwd passwd: Authentication token manipulation error
・/etc/shadow のパーミッション異常:
/etc/shadow の所有者が root、パーミッションが 000(または 640)であることを確認してください# /etc/shadow のパーミッションを確認する # ls -l /etc/shadow ---------- 1 root root 1234 Jan 15 10:00 /etc/shadow # パーミッションを修正する # chmod 000 /etc/shadow # chown root:root /etc/shadow
mount コマンドで確認し、必要に応じて mount -o remount,rw / で再マウントしてください・ディスク容量の不足:
df -h で空き容量を確認してください。/etc/shadow への書き込みにはディスクの空きが必要です・SELinux のラベル異常:SELinuxが有効な環境では、ファイルのセキュリティコンテキストが不正な場合にもこのエラーが発生します。
restorecon /etc/shadow でラベルを復元してください「BAD PASSWORD」でパスワードが設定できない時の対処法
一般ユーザーがパスワードを変更する際に、ポリシーチェックで拒否される場合があります。# パスワードが短すぎる BAD PASSWORD: The password is shorter than 8 characters # 辞書に載っている単語 BAD PASSWORD: The password fails the dictionary check # ユーザー名を含んでいる BAD PASSWORD: The password contains the user name in some form
・一般ユーザーの場合:ポリシーを満たす、より複雑なパスワードを設定してください(8文字以上、大小英字・数字・記号を含める)
・rootユーザーの場合:警告は表示されますが、そのまま設定を強行できます。ただし、弱いパスワードの使用はセキュリティ上推奨しません
rootでpasswdを実行したのにパスワードが変わらない時
LDAPやNIS、Active Directoryなど、外部認証基盤を使っている環境では、passwd でローカルの /etc/shadow を変更しても意味がありません。その場合は外部認証システム側でパスワードを変更してください。# 認証基盤を確認する $ authconfig --test | grep "authentication" または $ realm list
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| 自分のパスワードを変更する | passwd |
| 他のユーザーのパスワードを変更する | passwd ユーザー名 |
| パスワードのステータスを確認する | passwd -S ユーザー名 |
| アカウントをロックする | passwd -l ユーザー名 |
| アカウントをアンロックする | passwd -u ユーザー名 |
| パスワードを即座に期限切れにする | passwd -e ユーザー名 |
| パスワードを削除する(未設定状態にする) | passwd -d ユーザー名 |
| パスワードの有効期限を設定する | chage -M 日数 ユーザー名 |
| パスワード期限情報を確認する | chage -l ユーザー名 |
| アカウントを完全に無効化する | passwd -l ユーザー名 && usermod -s /sbin/nologin ユーザー名 |
Linuxのユーザー管理、体系的に学んでいますか?
passwdコマンドはユーザー管理の基本ですが、実務ではロック・有効期限・sudoと組み合わせた管理が求められます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:wgetコマンドでファイルをダウンロードする方法|再開やプロキシ設定も
- 前のページへ:viewコマンドでファイルを読み取り専用で開く方法|vim -Rとの違いと安全な閲覧手順
- この記事の属するカテゴリ:Linuxtipsへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます