Ubuntuのパスワードを変更・リセットする方法

コマンド

Ubuntuでパスワードを変更したい、あるいはパスワードを忘れてしまってログインできなくなった——そんなときに使うコマンドが passwd です。

結論から言うと、ログイン済みの状態なら passwd コマンド1つでパスワードを変更できます。パスワードを忘れた場合はリカバリモード(シングルユーザーモード)からリセットできます。

本記事では実際に Ubuntu 24.04 LTS のDockerコンテナでコマンドを実行した結果を掲載しています。出力を捏造せず、手元で再現できる内容だけを書きます。

この記事のポイント

  • 自分のパスワードは passwd、他ユーザーのパスワードは sudo passwd ユーザー名 で変更できる
  • スクリプトから非対話的に変更するには echo 'user:pass' | sudo chpasswd が便利
  • パスワードを忘れた場合はリカバリモード(GRUB メニュー)からリセットできる
  • Ubuntu 24.04 では /etc/shadow のハッシュアルゴリズムが yescrypt($y$)に変わった(22.04は SHA-512)
  • アカウントの一時停止には passwd -l(ロック)/ passwd -u(アンロック)を使う

目次

  1. 動作確認済み環境
  2. 自分自身のパスワードを変更する
  3. 他ユーザーのパスワードを変更する(rootまたはsudo)
  4. スクリプトから非対話的に変更する(chpasswd)
  5. パスワードのステータスを確認する(passwd -S)
  6. アカウントをロック・アンロックする
  7. /etc/shadow の仕組みを理解する
  8. パスワードを忘れたときのリセット方法(リカバリモード)
  9. よくあるエラーと対処法
  10. まとめ

動作確認済み環境

本記事のコマンドは以下の環境で実行・検証しています。

項目
OS Ubuntu 24.04.4 LTS(Noble Numbat)
実行環境 Docker公式イメージ ubuntu:24.04
passwd パッケージ 1:4.13+dfsg1-4ubuntu3.2
検証日 2026-06-13

VPSやWSLでも同じコマンドが使えますが、リカバリモードの手順はベアメタル(実機)やVPSのコンソール画面が必要です。

自分自身のパスワードを変更する

ログイン中のユーザーのパスワードを変更するには、引数なしで passwd を実行します。




ubuntu@server: ~
$ passwd
Changing password for ubuntu.
Current password: (現在のパスワードを入力)
New password: (新しいパスワードを入力)
Retype new password: (再度入力)
passwd: password updated successfully

入力中のパスワードは画面に表示されません(セキュリティのため)。「Current password:」で現在のパスワードを入力し、「New password:」で新しいものを2回入力します。

パスワードの強度について

Ubuntu の passwd は PAM(Pluggable Authentication Modules)を通じてパスワードの強度をチェックします。短すぎるパスワードや辞書に載っているパスワードは「BAD PASSWORD」と拒否されることがあります。最低8文字以上、英数字・記号を混ぜることを推奨します。

passwd コマンドの基本的な使い方(Ubuntu 24.04 実測)
passwd コマンドの基本的な使い方(Ubuntu 24.04 実測)

他ユーザーのパスワードを変更する(rootまたはsudo)

サーバー管理者が他のユーザーのパスワードを変更したい場合は、sudo passwd ユーザー名 を使います。この場合は現在のパスワードの入力が不要になります。




ubuntu@server: ~
$ sudo passwd testuser
New password: (新しいパスワードを入力)
Retype new password: (再度入力)
passwd: password updated successfully

sudo を付けると現在のパスワード確認がスキップされるため、管理者権限を持つユーザーなら他人のパスワードを直接変更できます。

①ユーザー名を確認する

変更したいユーザー名がわからないときは cat /etc/passwd または getent passwd で一覧を確認できます。




ubuntu@server: ~
$ getent passwd | grep -v nologin | grep -v false | awk -F: ‘$3 >= 1000 {print $1}’
ubuntu
testuser

UID 1000以上の行が一般ユーザーです(システムユーザーは除外しています)。

スクリプトから非対話的に変更する(chpasswd)

Bashスクリプトやプロビジョニングツールからパスワードを設定するときは、chpasswd コマンドが便利です。echo でパイプするだけで設定できます。




ubuntu@server: ~
$ echo ‘testuser:MySecurePass123!’ | sudo chpasswd
# 成功時は何も表示されない(exit code: 0)

# 複数ユーザーを一括設定する場合
$ printf ‘user1:Password1!\nuser2:Password2!’ | sudo chpasswd
# user1・user2 のパスワードがまとめて変更された

実際にDockerコンテナで実行したところ、chpasswd は正常に終了(exit code: 0)し、/etc/shadow にハッシュ化されたパスワードが書き込まれることを確認しました。

passwd/chpasswd コマンドの実行セッション(Playwright実測スクショ)
passwd/chpasswd コマンドの実行セッション(Playwright実測スクショ)

セキュリティ上の注意

シェル履歴(.bash_history)にパスワードが残ります。スクリプトでの使用は信頼できる環境に限定し、スクリプトのパーミッションを chmod 600 で制限してください。より安全な方法として、パスワードを環境変数で渡す方法もあります。

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

passwd -S ユーザー名 で現在のパスワード状態を確認できます。Ubuntu 24.04 の Docker コンテナで実際に確認した結果は次のとおりです。




ubuntu@server: ~
$ sudo passwd -S testuser
testuser P 2026-06-13 0 99999 7 -1
# [ユーザー名] [状態] [最終変更日] [最小日数] [最大日数] [警告日数] [無効日数]

「状態」フィールドの意味:

  • P(Password): パスワードが設定されている
  • L(Locked): アカウントがロックされている
  • NP(No Password): パスワードが未設定

アカウントをロック・アンロックする

退職したユーザーや一時的に使用を止めたいアカウントは、パスワードを削除せずにロックすることで安全に無効化できます。

passwd -l(ロック)/ -u(アンロック)の実行結果(実測)
passwd -l(ロック)/ -u(アンロック)の実行結果(実測)



ubuntu@server: ~
# ロック(アカウントを無効化)
$ sudo passwd -l testuser
passwd: password changed.
$ sudo passwd -S testuser
testuser L 2026-06-13 0 99999 7 -1 # L = ロック中

# アンロック(アカウントを再有効化)
$ sudo passwd -u testuser
passwd: password changed.
$ sudo passwd -S testuser
testuser P 2026-06-13 0 99999 7 -1 # P = 通常状態

Ubuntu 24.04 の Docker コンテナで上記を実際に実行し、ロック・アンロックが正しく動作することを確認しました(passwd バージョン: 1:4.13+dfsg1-4ubuntu3.2)。

①パスワードを期限切れにする(passwd -e)

次回ログイン時に強制的にパスワード変更を促したいときは passwd -e を使います。




ubuntu@server: ~
$ sudo passwd -e testuser # パスワードを即期限切れに設定
passwd: password expiry information changed.
# 次回ログイン時に新パスワードの設定を求められる

/etc/shadow の仕組みを理解する

Ubuntuのパスワード情報は /etc/shadow に暗号化(ハッシュ化)された形で保存されています。実際のDockerコンテナで確認した形式を見てみましょう。

/etc/shadow のエントリ形式(実測)
/etc/shadow のエントリ形式(実測)



root@ubuntu: ~
$ sudo grep testuser /etc/shadow
testuser:$y$j9T$VbBDHoAtSeWsUGqJjuBa5/$z3BMpHqSWMFvxiAlzNhaaBlrRewd7vDOaVQoCYpWTV2:20617:0:99999:7:::

# $y$ = yescrypt(Ubuntu 24.04 のデフォルト)
# $6$ = SHA-512(Ubuntu 22.04 のデフォルト)
# 20617 = 最終変更日(1970-01-01 からの日数)

ここで重要なのは、実際のパスワードは保存されていないという点です。ハッシュ値のみが格納されており、認証時には入力されたパスワードをハッシュ化して照合します。

①Ubuntu 22.04 と 24.04 のハッシュアルゴリズムの違い

実際に Ubuntu 22.04 と 24.04 の両Dockerイメージで確認した結果です。

Ubuntu 22.04 vs 24.04 passwd パッケージ比較(実測)
Ubuntu 22.04 vs 24.04 passwd パッケージ比較(実測)
項目 Ubuntu 22.04 LTS Ubuntu 24.04 LTS
passwd パッケージ 1:4.8.1-2ubuntu2.2 1:4.13+dfsg1-4ubuntu3.2
/etc/shadow のハッシュ $6$...(SHA-512) $y$...(yescrypt)
PASS_MAX_DAYS 99999 99999
PASS_MIN_DAYS 0 0
PASS_WARN_AGE 7日前 7日前

Ubuntu 24.04 では chpasswd のデフォルトハッシュアルゴリズムが yescrypt$y$)になりました。yescrypt は SHA-512 より強力なメモリハード関数で、ブルートフォース攻撃に対する耐性が高いのが特徴です。/etc/login.defsENCRYPT_METHOD SHA512 はpasswdコマンドの場合も内部で yescrypt を使うケースがあります。

パスワードを忘れたときのリセット方法(リカバリモード)

パスワードを忘れてしまい、ログインできなくなった場合はリカバリモード(シングルユーザーモード)でリセットできます。VPSの場合はコントロールパネルのコンソール機能を使います。

注意

この手順を実行するには、物理マシンへのアクセスまたはVPSのコンソール(KVMコンソール)が必要です。Vultr・DigitalOcean・ConoHa VPSなどのコントロールパネルから利用できます。

①GRUBメニューを開く

マシンの再起動直後(ロゴが表示されるタイミング)に Shift キーを押し続けるか Esc を連打して GRUBメニューを表示します。VPSの場合はコンソール画面で再起動後に操作します。

②リカバリモードを選択する

GRUBメニューで「Advanced options for Ubuntu」を選び、続いて「Ubuntu … (recovery mode)」を選択します。

③rootシェルを起動する

リカバリメニューで「root — Drop to root shell prompt」を選択します。




recovery root shell
# ファイルシステムを読み書き可能にマウント
# mount -o remount,rw /

# パスワードをリセット(”ubuntu” の部分を対象ユーザー名に変更)
# passwd ubuntu
New password:
Retype new password:
passwd: password updated successfully

# 再起動
# reboot

コマンドの先頭が #(シャープ)になっているのは、rootユーザーとして実行しているためです。この手順では現在のパスワードを聞かれません。

セキュリティに関する重要な注意

リカバリモードはパスワードなしでrootシェルにアクセスできるため、物理アクセスやコンソールアクセスを持つ人間が悪用すると危険です。本番サーバーでは GRUB にパスワードを設定するか、VPSコントロールパネルへのアクセスを厳重に管理してください。

よくあるエラーと対処法

①「Authentication token manipulation error」




ubuntu@server: ~
$ passwd
passwd: Authentication token manipulation error
passwd: password unchanged

原因と対処: /etc/shadow または /etc/passwd のパーミッションが壊れているか、ファイルシステムが読み取り専用になっています。ls -la /etc/shadow でパーミッションを確認し、640 または 000 になっていれば正常です。ファイルシステムが読み取り専用の場合は sudo mount -o remount,rw / で再マウントしてください。

②「BAD PASSWORD: The password is a palindrome」




ubuntu@server: ~
$ passwd
New password:
BAD PASSWORD: The password is a palindrome
BAD PASSWORD: The password fails the dictionary check

原因と対処: PAMの pam_pwquality モジュールがパスワードの強度不足を検出しています。英大文字・小文字・数字・記号を含む8文字以上のパスワードを使ってください。sudo(root)で変更する場合はこのチェックは警告のみで変更は通りますが、セキュリティ上は推奨しません。

③「Unknown user name ‘username’」




ubuntu@server: ~
$ sudo passwd typo_user
passwd: Unknown user name ‘typo_user’

原因と対処: ユーザー名が存在しません。getent passwd で正確なユーザー名を確認してください。

まとめ

Ubuntuのパスワード変更・リセットの方法をまとめます。

コマンドのまとめ

  • 自分のパスワード変更: passwd
  • 他ユーザーのパスワード変更: sudo passwd ユーザー名
  • 非対話的な変更(スクリプト向け): echo 'user:pass' | sudo chpasswd
  • パスワードステータス確認: sudo passwd -S ユーザー名
  • アカウントのロック: sudo passwd -l ユーザー名
  • アカウントのアンロック: sudo passwd -u ユーザー名
  • 次回ログイン時に変更を強制: sudo passwd -e ユーザー名
  • パスワードを忘れた場合: リカバリモードで passwd ユーザー名

Ubuntu 24.04 では /etc/shadow のデフォルトハッシュアルゴリズムが yescrypt($y$)に変わりました。22.04 から移行する場合に既存の $6$(SHA-512)ハッシュがそのまま使われ続けることもありますが、パスワードを変更すると自動的に yescrypt で再ハッシュされます。

ユーザー管理全般(作成・削除・グループ設定)については Ubuntuのユーザー管理コマンド完全ガイド も合わせてご覧ください。

VPSを借りてサーバー運用を始めたい方には、SSH鍵認証をパスワード認証の代わりに使う方法が安全です。UbuntuでSSH鍵認証を設定する方法 で詳しく解説しています。

著者アイコン
著者アイコン

正直、パスワード変更はシンプルなコマンドですが、Ubuntu 24.04 で yescrypt になったのは意外でした。Docker で両バージョンを動かして比べてみると、/etc/shadow のハッシュの先頭が $6$ から $y$ に変わっているのがわかります。

本格的にVPSを運用するなら、SSHのパスワード認証をオフにして鍵認証のみにするのが基本です。以下のVPS比較記事も参考にどうぞ。

コメント

タイトルとURLをコピーしました