Linux では、ユーザー名は人間が読みやすいラベルですが、システムはユーザーを一意のユーザー ID(UID)で識別します。ユーザー名と UID のマッピングは、ユーザー管理の重要なコンポーネントである/etc/passwdファイルに保存されています。
その内容を表示するには、簡単なコマンドを使用できます。
cat /etc/passwd
このファイルは、すべてのシステムユーザーとその詳細情報のリストを表示します。各行は 1 つのユーザーアカウントを表します。
/etc/passwd フィールドの分解
このファイル内の典型的な行、多くの場合最初の行は次のようになります。
root:x:0:0:root:/root:/bin/bash
このrootユーザーのエントリには、コロン(:)で区切られた 7 つのフィールドが含まれています。Linux における/etc/passwdの構造を理解することが、ユーザー管理の鍵となります。
各フィールドの内訳を見てみましょう。
- ユーザー名: ユーザーのログイン名(例:
root)。 - パスワード: ユーザーの暗号化されたパスワードのプレースホルダー。セキュリティ上の理由から、実際のパスワードはここには保存されません。
xは、暗号化されたパスワードが/etc/shadowファイルに格納されていることを示します。*(アスタリスク)は、アカウントがロックされており、ログインに使用できないことを意味します。- 空のフィールドは、ユーザーがパスワードを持っていないことを意味します。
- ユーザー ID (UID): ユーザーの一意の数値識別子。
rootユーザーの UID は常に0です。 - グループ ID (GID): ユーザーのプライマリグループの数値識別子。
- GECOS フィールド: 伝統的にユーザーのフルネーム、電話番号、オフィスの場所などの追加情報を含むコメントフィールド。カンマ区切りです。
- ホームディレクトリ: ユーザーのホームディレクトリへの絶対パス(例:
/root)。 - デフォルトシェル: ユーザーがログイン時に実行されるデフォルトのコマンドラインインタープリタ(例:
/bin/bash)。
システムユーザーと特殊アカウント
/etc/passwdファイルを調べると、人間のユーザーに属さないアカウントが多くあることに気づくでしょう。これらは、特定のサービスやプロセスを制限された権限で実行するために使用されるシステムアカウントであり、システムのセキュリティを向上させます。例えば、daemonユーザーはバックグラウンドのデーモンプロセスを実行するために使用されます。
/etc/passwd ファイルの編集
技術的には、テキストエディタやvipwコマンドを使用して/etc/passwdファイルを直接編集できますが、これは強く推奨されません。手動での編集は構文エラーを引き起こしやすく、システムから締め出されたり、不安定性を引き起こしたりする可能性があります。
ユーザーアカウントを管理するには、常にuseradd、usermod、userdelなどの専用のコマンドラインユーティリティを使用する方が安全で信頼性が高くなります。これらのツールは、ファイルを正しく変更し、関連するすべての設定を処理するように設計されています。