【Linux】chpasswdコマンドによる複数アカウントのパスワード一括同期

目次

概要

システム管理者が大量のユーザーアカウントに対し、パスワードを一度に設定または変更するためのツールです。標準入力から「ユーザー名:パスワード」という形式のリストを読み込み、一括で処理を行います。多数の新規アカウントを作成する際や、定期的な全社パスワードリセットなど、手動での個別設定が困難な運用シナリオにおいて、作業効率を劇的に向上させます。

仕様(引数・オプション)

構文

chpasswd [オプション]

主なオプション

オプション説明
-c [暗号方式]パスワードの暗号化に使用する方式(SHA256, SHA512など)を指定します。
-e / –encrypted入力されるパスワードが既に暗号化された状態であることを示します。
-m / –md5暗号化にMD5アルゴリズムを使用します(レガシーなシステムとの互換用)。

実践シナリオ:開発チームのアカウント一括更新

管理者 mori が、プロジェクトに新しく参画したメンバーや既存のテスト用アカウントのパスワードを、外部ファイルから一括で更新する手順を構築します。

BASH

# 更新用リストの作成(形式:ユーザー名:パスワード)
# 既存の mori アカウントや mori_staff 等を対象とする
cat << 'EOF' > /tmp/new_passwords.txt
mori:Pass_2026_A1
mori_staff:Pass_2026_B2
mori_guest:Pass_2026_C3
EOF

# 内容の確認
cat /tmp/new_passwords.txt

# chpasswdコマンドにリストを渡して一括更新を実行
sudo chpasswd < /tmp/new_passwords.txt

既に暗号化されたパスワードを利用する場合

セキュリティポリシーにより、平文のパスワードをファイルに保存したくない場合、あらかじめ暗号化(ハッシュ化)された文字列を準備し、-e オプションを併用して適用します。

BASH

# 暗号化済みの文字列を含むリストを作成
cat << 'EOF' > /tmp/encrypted_list.txt
mori:$6$rounds=4096$saltstring$hashed_password_here
EOF

# -e オプションを使用して一括処理
sudo chpasswd -e < /tmp/encrypted_list.txt

注意点

  1. セキュリティ管理chpasswd に渡すリストファイルには平文のパスワードが含まれるため、実行後は速やかにファイルを削除するか、パーミッションを厳格に制限する必要があります。
  2. PAM設定との兼ね合いシステム全体のパスワードポリシー(最小文字数や複雑性など)がPAM経由で設定されている場合、chpasswd による一括更新であってもその制約を受けることがあります。
  3. root権限の必要性/etc/shadow 等の重要なシステムファイルを書き換えるため、実行には sudo または管理者権限が必須です。

まとめ

chpasswdコマンドは、複数のユーザー情報を一括でメンテナンスする必要がある管理者にとって非常に強力な手段となります。標準入力を受け付ける特性を活かし、他のコマンドやスクリプトとパイプで繋ぐことで、完全な自動化パイプラインを構築することが可能です。平文を扱う際のリスクを考慮し、暗号化済みデータの投入や一時ファイルの適切な処理を組み合わせることが、安全なシステム運用の要となります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次