passwdコマンドでLinuxのパスワードを変更する方法|ロック・有効期限の設定も

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > passwdコマンドでLinuxのパスワードを変更する方法|ロック・有効期限の設定も
「Linuxでパスワードを変更したいが、passwdコマンドの使い方がよくわからない」
「rootで他のユーザーのパスワードを変更する方法を知りたい」

この記事では、passwd コマンドの基本的な使い方から、ロック・有効期限の設定まで実行例付きで解説します。
CentOS 7 / RHEL 9で動作確認済みです。

【この記事でわかること】
・passwdコマンドでLinuxユーザーのパスワードを変更する基本手順
・rootユーザーによる他ユーザーのパスワード強制変更の方法
・--lock / --unlock オプションでアカウントのロック・解除ができる
・--expire でパスワードの有効期限を即時切れにする運用方法

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

passwdコマンドの基本構文と仕組み

passwd は、Linuxシステムでユーザーのパスワードを変更・管理するためのコマンドです。

# 基本書式 # passwd [オプション] [ユーザー名]

ユーザー名を省略すると、自分自身のパスワードを変更する動作になります。ユーザー名を指定した場合は、そのユーザーのパスワードを変更します(root権限が必要)。

パスワードの暗号化ハッシュは /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.

「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ユーザーの場合は警告は表示されますが、強制的に設定することが可能です。

rootで他のユーザーのパスワードを変更する

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

rootユーザー(または sudo を使用)であれば、任意のユーザーのパスワードを変更できます。

# tanaka ユーザーのパスワードを変更する # passwd tanaka Changing password for user tanaka. New password: (新しいパスワードを入力) Retype new password: (再入力) passwd: all authentication tokens updated successfully.

rootが他のユーザーのパスワードを変更する場合、現在のパスワードの入力は不要です。ユーザーがパスワードを忘れた場合のリセット作業はこの方法で行います。

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

authorized_keysを削除する方法:~/.ssh/authorized_keys を削除または移動する
sshd_config で DenyUsers を使う方法:/etc/ssh/sshd_configDenyUsers に追加する

完全なアカウント無効化が目的であれば、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

これにより、tanakaが次回ログインすると以下のように新しいパスワードの設定を求められます。

# 次回ログイン時の表示 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

ただし、SSH鍵認証を設定する前にパスワード認証を無効化すると、サーバーにログインできなくなります。必ず鍵認証でログインできることを確認してから無効化してください。

「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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。