getentコマンドとは?

—

by

in

getentコマンドの概要

getentは、Unix系OSで提供されているシステムデータベース(NSS: Name Service Switch)に登録されたエントリを取得するためのコマンドです。ユーザー、グループ、ホスト名、サービス情報など、さまざまなデータベースから情報を一括で取得できます。

主な使用例と構文

基本的な構文は以下の通りです。

getent データベース名 キー

例えば、ユーザー情報を取得したい場合は次のように実行します。

getent passwd username

代表的なデータベース一覧

  • passwd – ユーザーアカウント情報
  • group – グループ情報
  • hosts – ホスト名とIPアドレスのマッピング
  • services – ネットワークサービス名とポート番号
  • protocols – IPプロトコル番号
  • networks – ネットワーク情報

NSS(Name Service Switch)との関係

getentはNSS設定(/etc/nsswitch.conf)で定義された順序に従って情報を取得します。たとえば、hostsデータベースはfiles dnsの順に検索され、ローカルの/etc/hostsが優先されます。

実務での活用シーン

  • スクリプト内でユーザーやグループの存在確認を行う。
  • DNS設定や/etc/hostsの内容を検証し、名前解決の問題を特定する。
  • システム移行時に、各種サービス情報が正しく設定されているかを一括確認する。

注意点とベストプラクティス

  • キーを省略すると、対象データベースの全エントリが一覧で返ります。大量データが返る可能性があるため、必要に応じてパイプでフィルタリングしてください。
  • 権限が必要なデータベース(例: shadow)には適切な権限で実行するか、sudo を使用してください。
  • スクリプトで使用する際は、戻り値(終了ステータス)をチェックし、エラー時の処理を組み込むことが重要です。