Linuxでユーザーのパスワードを変更する方法|passwdとgpasswdコマンドの使い分け


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > Linuxでユーザーのパスワードを変更する方法|passwdとgpasswdコマンドの使い分け
「passwdコマンドは知ってるけど、gpasswdって何が違うの?」
「グループのパスワード管理や、メンバー追加・削除もコマンドでやりたい」
「rootと一般ユーザーで手順が違うって聞いたけど、具体的にどう違うの?」

Linuxのパスワード管理は、サーバー運用の基本中の基本です。
passwdコマンドは自分でも使ったことがあると思いますが、gpasswdは知らないエンジニアが意外と多い。
しかも「passwd -l でロックした」と思っていたら、SSHの公開鍵認証では普通にログインできてしまう——こういう落とし穴が実務では頻繁にあります。

この記事では、passwdコマンドとgpasswdコマンドの使い分けを軸に、パスワード変更の基本からグループ管理、有効期限設定、トラブルシュートまで、実務で必要な操作を網羅的に解説します。
RHEL 9 / CentOS Stream 9 / Ubuntu 24.04 LTS で動作確認済みです。

【この記事でわかること】

・passwd はユーザーのパスワード変更、gpasswd はグループ管理に使い分ける
・chage コマンドでパスワード有効期限を確認・設定できる
・passwd -l のロックは公開鍵認証には効かない(完全無効化は usermod -e)
・「Authentication token manipulation error」の主な原因と対処法を解説


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

passwdとgpasswdの違い——まず全体像を把握する

passwdとgpasswdは、名前が似ているため混同されがちですが、管理対象がまったく異なります。
コマンド 管理対象 主な用途
passwd ユーザーアカウント パスワード変更・ロック・有効期限設定
gpasswd グループ グループへのメンバー追加・削除・パスワード設定
passwdは /etc/shadow を操作し、gpasswdは /etc/group と /etc/gshadow を操作します。
「ユーザーのパスワード」を変えたいなら passwd、「グループの管理」をしたいなら gpasswd、と覚えておいてください。

passwdコマンドの使い方

基本書式とオプション一覧

# 自分自身のパスワードを変更する passwd # 他のユーザーのパスワードを変更する(root権限が必要) passwd ユーザー名

主なオプションは以下のとおりです。

-l(--lock):指定したユーザーのパスワードをロックする
-u(--unlock):ロックされたパスワードを解除する
-d(--delete):パスワードを削除する(パスワードなしでログイン可能になるため原則禁止)
-e(--expire):パスワードを即座に期限切れにする(次回ログイン時に変更を強制)
-x 日数:パスワードの最大有効日数を設定する
-n 日数:パスワード変更後、次に変更できるようになるまでの最小日数を設定する
-w 日数:パスワード期限切れの警告を表示する日数を設定する
-S(--status):パスワードのステータス情報を表示する

1. 一般ユーザーが自分のパスワードを変更する

引数なしで passwd コマンドを実行してください。
現在のパスワードの入力を求められた後、新しいパスワードを2回入力します。

$ passwd Changing password for user pakira. Changing password for pakira (current) UNIX password: # 現在のパスワードを入力する New password: # 新しいパスワードを入力する Retype new password: # もう一度入力する passwd: all authentication tokens updated successfully. # パスワードの変更が成功した

パスワードが短すぎたり、辞書に載っている単語だったりすると、システムが拒否する場合があります。
英大文字・小文字・数字・記号を組み合わせた8文字以上のパスワードを設定してください。

2. rootユーザーが他のユーザーのパスワードを変更する

rootユーザーは引数にユーザー名を指定することで、任意のユーザーのパスワードを変更できます。
rootの場合は現在のパスワードの入力は不要で、ポリシーチェックも警告表示にとどまります。

$ su - Password: # passwd pakira Changing password for user pakira. New password: # 新しいパスワードを入力する Retype new password: # もう一度入力する passwd: all authentication tokens updated successfully. # パスワードの変更が成功した

sudo権限を持つユーザーの場合は、sudoコマンドを使ってパスワードを変更することもできます。

$ sudo passwd pakira [sudo] password for admin: # 自分のパスワードを入力する New password: # 対象ユーザーの新しいパスワードを入力する Retype new password: # もう一度入力する passwd: all authentication tokens updated successfully.

3. パスワードのステータスを確認する(passwd -S)

passwd -S コマンドで、パスワードの現在の状態を確認できます。

# passwd -S pakira pakira PS 2026-04-01 0 99999 7 -1 (Password set, SHA512 crypt.)

各フィールドの意味は次のとおりです。

ユーザー名:対象のユーザー名
ステータス:PS=パスワード設定済み、LK=ロック中、NP=パスワードなし
最終変更日:パスワードを最後に変更した日付
最小日数:次に変更できるまでの最小日数
最大日数:パスワードの最大有効日数
警告日数:期限切れ前に警告を表示する日数
無効日数:期限切れ後にアカウントが無効になるまでの日数

gpasswdコマンドの使い方——グループ管理の中心

gpasswdはグループの管理に特化したコマンドです。
グループへのメンバー追加・削除・管理者設定・パスワード設定が、このコマンド一本で完結します。

基本書式とオプション一覧

gpasswd [オプション] グループ名

主なオプションは以下のとおりです。

-a ユーザー名(--add):グループにメンバーを追加する
-d ユーザー名(--delete):グループからメンバーを削除する
-M ユーザー一覧(--members):グループのメンバーをまとめて設定する(既存メンバーは削除される)
-A ユーザー一覧(--administrators):グループの管理者を設定する
-r(--remove-password):グループのパスワードを削除する
-R(--restrict):グループへのアクセスを制限する(パスワードなしでは参加不可)

1. グループにメンバーを追加する(gpasswd -a)

最もよく使う操作です。ユーザーを指定のグループに追加します。

# pakiraユーザーをdockerグループに追加する # gpasswd -a pakira docker Adding user pakira to group docker # 追加後にグループのメンバーを確認する # getent group docker docker:x:981:pakira

注意点として、グループへの追加は即座に /etc/group に反映されますが、追加したユーザーが既にログインしている場合は、一度ログアウトして再ログインしないと新しいグループが有効になりません。

# 現在のセッションでグループを有効にするには newgrp コマンドを使う $ newgrp docker $ id uid=1000(pakira) gid=981(docker) groups=981(docker),1000(pakira)

2. グループからメンバーを削除する(gpasswd -d)

退職者や権限変更時にグループからユーザーを外す操作です。

# pakiraユーザーをdockerグループから削除する # gpasswd -d pakira docker Removing user pakira from group docker # 削除後に確認する # getent group docker docker:x:981:

3. グループのメンバーをまとめて設定する(gpasswd -M)

-M オプションは、グループのメンバーを指定したリストで上書きします。
既存のメンバーは削除されるため、慎重に使用してください。

# develグループのメンバーを pakira と miyazaki に設定する(既存メンバーは削除) # gpasswd -M pakira,miyazaki devel # 確認する # getent group devel devel:x:1010:pakira,miyazaki

4. グループの管理者を設定する(gpasswd -A)

グループ管理者(Group Administrator)を設定すると、root権限がなくてもそのグループのメンバー追加・削除ができるようになります。
小規模チームでの権限委譲に有効な機能です。

# pakiraをdevelグループの管理者に設定する # gpasswd -A pakira devel # グループ管理者は /etc/gshadow で確認できる # getent gshadow devel devel:!:pakira:pakira,miyazaki # フォーマット: グループ名:パスワード:管理者:メンバー

5. グループにパスワードを設定する

グループにパスワードを設定すると、グループに登録されていないユーザーが newgrp コマンドでグループに参加する際にパスワードの入力を求められます。

# unyoグループにパスワードを設定する # gpasswd unyo Changing the password for group unyo New Password: # グループのパスワードを入力する Re-enter new password: # もう一度入力する # グループパスワードを削除する(グループパスワードを無効化) # gpasswd -r unyo

パスワードの有効期限を管理する(chageコマンド)

パスワードの有効期限を詳細に管理するには、chage(チェンジエイジ)コマンドを使用します。
passwd コマンドの -x や -n オプションでも設定できますが、chageコマンドのほうがより柔軟な管理が可能です。

1. 現在の有効期限設定を確認する

# chage -l pakira Last password change : Apr 01, 2026 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

「Password expires: never」は有効期限が設定されていない状態です。
セキュリティポリシー上、定期的なパスワード変更を義務付ける場合は、次の手順で設定してください。

2. パスワードの有効期限を設定する

# パスワードの最大有効日数を90日に設定する # chage -M 90 pakira # パスワード変更後、最低7日間は再変更不可にする # chage -m 7 pakira # パスワード期限切れの14日前から警告を表示する # chage -W 14 pakira

設定後に chage -l で変更を確認しましょう。

# chage -l pakira Last password change : Apr 01, 2026 Password expires : Jun 30, 2026 Password inactive : never Account expires : never Minimum number of days between password change : 7 Maximum number of days between password change : 90 Number of days of warning before password expires : 14

3. 次回ログイン時にパスワード変更を強制する

新規ユーザーの初回ログイン時や、管理者がパスワードをリセットした後に、ユーザー自身にパスワードを変更させたい場合に使います。

# 方法1: chageコマンドで最終変更日を0(1970年1月1日)に設定する # chage -d 0 pakira # 方法2: passwdコマンドで期限切れにする # passwd -e pakira

設定後、対象ユーザーが次にログインすると、パスワードの変更を求められます。

パスワードのロックと解除——落とし穴に注意

退職者のアカウントや、長期間使用しないユーザーのアカウントは、パスワードをロックして不正ログインを防ぎましょう。
ただし、ロックには重要な落とし穴があります。必ず「ロックの仕組みと注意点」も確認してください。

1. パスワードをロックする(passwd -l)

# passwd -l miyazaki Locking password for user miyazaki. passwd: Success # ロック状態を確認する # passwd -S miyazaki miyazaki LK 2026-04-01 0 99999 7 -1 (Password locked.)

ロックされたユーザーでログインしようとすると、正しいパスワードを入力しても認証に失敗します。

$ su miyazaki Password: su: Authentication failure

usermodコマンドでも同様にロックできます。

# usermod -L miyazaki

2. パスワードロックを解除する(passwd -u)

# passwd -u miyazaki Unlocking password for user miyazaki. passwd: Success # usermodコマンドの場合は -U オプション # usermod -U miyazaki

【重要】ロックの仕組みと落とし穴

パスワードロックは /etc/shadow ファイルのパスワードハッシュの先頭に「!」を付加する仕組みです。

ここに大きな落とし穴があります。
パスワードロックはパスワード認証のみをブロックします。SSH公開鍵認証でのログインはロックの影響を受けません。

退職者のアカウントをロックしたつもりでも、公開鍵認証の設定(~/.ssh/authorized_keys)が残っていれば、SSH経由でのアクセスは可能な状態が続きます。

完全にアカウントを無効化するには、usermod -e でアカウント有効期限を過去の日付に設定してください。

# アカウントを完全に無効化する(有効期限を過去の日付に設定) # usermod -e 2000-01-01 miyazaki # 無効化の確認(Account expires が設定されていることを確認) # chage -l miyazaki | grep "Account expires" Account expires : Jan 01, 2000 # アカウントの無効化を解除する(有効期限を空に設定) # usermod -e "" miyazaki

実務で使えるパスワード管理Tips

全ユーザーのパスワード状態を一括確認する

管理しているサーバーで、全ユーザーのパスワード状態をまとめて確認したい場合に便利なワンライナーです。

# UID 1000以上の一般ユーザーのパスワード状態を確認する # awk -F: '$3 >= 1000 {print $1}' /etc/passwd | while read user; do passwd -S "$user"; done pakira PS 2026-04-01 0 99999 7 -1 (Password set, SHA512 crypt.) miyazaki LK 2026-03-15 0 99999 7 -1 (Password locked.) testuser NP 2026-02-10 0 99999 7 -1 (Empty password.)

ステータスが LK(ロック中)や NP(パスワードなし)のアカウントがないか、定期的に確認しましょう。

パスワードポリシーのデフォルト値を変更する(/etc/login.defs)

新規ユーザー作成時に適用されるパスワードポリシーのデフォルト値は /etc/login.defs で設定できます。

# /etc/login.defs の主なパスワード関連設定 PASS_MAX_DAYS 90 # パスワード最大有効日数 PASS_MIN_DAYS 7 # パスワード最小変更間隔 PASS_MIN_LEN 8 # パスワード最小文字数 PASS_WARN_AGE 14 # 期限切れ警告の表示開始日数

この設定は新規ユーザーにのみ適用されます。
既存ユーザーのポリシーを変更するには、前述の chage コマンドを使用してください。

passwdとgpasswdの操作を混在させない

実務でよくある間違いが「グループメンバーの追加をpasswdでやろうとする」パターンです。

・ユーザーのパスワードを変えたい → passwd コマンド
・グループにユーザーを追加したい → gpasswd -a コマンド(または usermod -aG)
・グループからユーザーを外したい → gpasswd -d コマンド(または gpasswd -M で再設定)

usermod -aG でもグループへの追加は可能ですが、-G を -aG(--append --groups)と書かないと既存グループが全部消えてしまいます。gpasswd -a の方が安全です。

# 【OK】既存グループを維持しながら docker グループを追加する # usermod -aG docker pakira # 【NG】-a を忘れると既存グループが docker だけになってしまう # usermod -G docker pakira ← これは危険

トラブルシュート——よくあるエラーと対処法

「Authentication token manipulation error」が出る場合

このエラーは、パスワード変更時に最も多く発生するエラーです。
主な原因と対処法は以下のとおりです。

/etc/shadow のパーミッションが不正:rootで「chmod 640 /etc/shadow」を実行して修正する
ファイルシステムがリードオンリー:「mount -o remount,rw /」で書き込み可能にする
ディスク容量不足:「df -h」で空き容量を確認し、不要なファイルを削除する
/etc/shadow が破損している:「pwck」コマンドでファイルの整合性をチェックする

# /etc/shadow のパーミッションを確認する # ls -l /etc/shadow ---------- 1 root root 1234 Apr 1 10:00 /etc/shadow # パーミッションが不正な場合は修正する # chmod 640 /etc/shadow # chown root:root /etc/shadow # ファイルの整合性をチェックする # pwck

「BAD PASSWORD」が表示されてパスワードを設定できない場合

PAM(Pluggable Authentication Modules)のパスワード品質チェックに引っかかると表示されるメッセージです。

$ passwd Changing password for user pakira. (current) UNIX password: New password: BAD PASSWORD: The password is shorter than 8 characters

一般ユーザーの場合はポリシーに従ったパスワードを設定する必要がありますが、rootユーザーの場合は警告が表示されても設定を強行できます。

パスワードの品質ポリシーは /etc/security/pwquality.conf で設定されています。

# /etc/security/pwquality.conf の主な設定項目 minlen = 8 # 最小文字数 dcredit = -1 # 最低1文字の数字を要求 ucredit = -1 # 最低1文字の大文字を要求 lcredit = -1 # 最低1文字の小文字を要求 ocredit = -1 # 最低1文字の記号を要求

「gpasswd: ユーザーはグループのメンバーではありません」エラー

gpasswd -d でグループからユーザーを削除しようとした際に、そのユーザーがグループに属していない場合に表示されます。

# gpasswd -d pakira docker gpasswd: user 'pakira' is not a member of 'docker' # まずグループの現在のメンバーを確認する # getent group docker docker:x:981: # メンバーが空のため削除できない

「passwd: Have exhausted maximum number of retries for service」が出る場合

パスワード入力を連続で失敗した場合に表示されます。
落ち着いてもう一度 passwd コマンドを実行し、正しいパスワードを入力してください。

本記事のまとめ

passwdコマンドとgpasswdコマンドの使い分けから、有効期限管理、アカウントロック、トラブルシュートまでを解説しました。
以下のテーブルで、パスワード管理に必要なコマンドを確認してください。
やりたいこと コマンド
自分のパスワードを変更する passwd
他のユーザーのパスワードを変更する passwd ユーザー名
パスワードのステータスを確認する passwd -S ユーザー名
パスワードの有効期限を確認する chage -l ユーザー名
パスワードの最大有効日数を設定する chage -M 日数 ユーザー名
次回ログイン時にパスワード変更を強制する chage -d 0 ユーザー名
パスワードをロックする passwd -l ユーザー名
パスワードロックを解除する passwd -u ユーザー名
アカウントを完全に無効化する usermod -e 2000-01-01 ユーザー名
グループにメンバーを追加する gpasswd -a ユーザー名 グループ名
グループからメンバーを削除する gpasswd -d ユーザー名 グループ名
グループの管理者を設定する gpasswd -A ユーザー名 グループ名
グループにパスワードを設定する gpasswd グループ名

パスワード管理を体系的に学びたいと思いませんか?

passwdやgpasswdは、Linuxのユーザー管理のほんの一部です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。


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

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

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

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

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

宮崎 智広

この記事を書いた人

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

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

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