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に関する公式ドキュメントで確認できます。