Linux / コマンド / getent - NSS ユーザー・グループ・ホスト情報の照会
getentは、名前情報の照会先や順序を切り替える仕組みであるName Service Switch(NSS)が使用するアカウント、グループ、ホストなどのデータベースから項目を照会します。ローカルファイルだけでなく、システムに設定された外部ユーザー情報・名前サービスも同じ照会経路で確認する際に便利です。
/etc/nsswitch.confに指定された照会順序に従うため、/etc/passwdファイルだけを読んだ場合とは結果が異なることがあります。データベース名を最初に、必要なキーを後に指定します。キーを省略すると列挙を試みますが、すべてのデータベースで全体の列挙が可能なわけではありません。
基本的な文法
getent データベース [キー ...]
インストールされている実装とオプションは、配布版によって異なる場合があります。man getentで現在のシステムの説明を確認してください。
使用例
ユーザーアカウントの照会
alice を照会したいアカウント名に置き換え、ローカルファイルまたは設定されたNSSソースから探します。これはアカウント情報の検索であり、パスワード認証が成功するかの検査ではありません。
getent passwd alice
グループ情報の照会
editors を照会対象のグループ名に置き換えます。メンバー欄に基本グループとして所属する全ユーザーが列挙されるとは限らないため、あるユーザーの所属全体は groupsのユーザー別照会 などで確認します。
getent group editors
ホスト名の確認
現在のシステムのNSS設定を通じて名前を参照します。
getent hosts localhost
NSSデータベースの照会結果を読む
getent passwd ユーザーはローカルの/etc/passwdだけでなく、システムのNSS(Name Service Switch)設定を通じて提供されるアカウントも参照できます。
getent passwd root
例示出力(ホームパスとシェルはシステムごとに異なります):
root:x:0:0:root:/root:/bin/bash
コロンで区切られた項目のうち、3番目がユーザーID(UID)、4番目が基本グループID(GID)です。現在のプロセスとの比較には idによるIDの確認 も使えます。xは実際のパスワードがこのフィールドに表示されるという意味ではありません。参照結果がない場合は、名前が存在しないか、NSSバックエンドへのアクセスに問題がある可能性があるため、単に/etc/passwdのみを検索した結果と混同しないでください。
主なオプションと形式
| オプション・形式 | 説明 |
|---|---|
passwd |
ユーザーアカウントデータベースを参照します。 |
group |
グループデータベースを参照します。 |
hosts |
ホスト名・アドレスデータベースを参照します。 |
-s サービス |
GNU Cライブラリ(glibc)の実装では照会サービスを上書きします。-s データベース:サービス なら、そのデータベースだけを指定できます。 |
使用する際の注意点
アカウントが/etc/passwdに存在しなくても、ディレクトリ情報を照会するLDAP(Lightweight Directory Access Protocol)などの外部NSSソースに存在する場合があります。逆に、getentの失敗は問い合わせサービスの障害やキーの不在の両方を疑わせるため、終了状態とNSS設定を一緒に確認してください。キーを省略した全件列挙は、一部のデータベースでサポートされていなかったり、大量の出力を生成する可能性があります。
よくある質問
getent passwd aliceとgrep alice /etc/passwdの違いは?
getentは設定されたNSS問い合わせパスを使用し、grepはローカルファイルのテキストを部分一致で探すため、アカウント名そのものの完全一致照会とは異なります。外部ユーザーディレクトリがある場合は、結果が異なることがあります。
公式ドキュメント
オプションの正確な動作と実装ごとの違いは、getentに関する公式ドキュメントで確認できます。




