getent コマンド

管理データベースからエントリを取得します。

概要

getent は、アプリケーションが使用するのと同じライブラリ関数を使用して、管理データベース(/etc/passwd/etc/group など)からエントリを表示する Unix コマンドです。情報がローカルファイル、NIS、LDAP、その他のソースから来るかどうかに関わらず、標準化された方法でシステムデータベースを照会するのに役立ちます。

オプション

database

照会するデータベース(passwd、group、hosts、services、protocols、networks など)を指定します

$ getent passwd root
root:x:0:0:root:/root:/bin/bash

-s, --service=CONFIG

使用するサービス設定を指定します

$ getent -s files passwd root
root:x:0:0:root:/root:/bin/bash

-h, --help

ヘルプ情報を表示します

$ getent --help
Usage: getent [OPTION...] database [key ...]
Get entries from administrative database.

  -i, --no-idn               disable IDN encoding
  -s, --service=CONFIG       Service configuration to be used
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

Supported databases:
ahosts ahostsv4 ahostsv6 aliases ethers group gshadow hosts netgroup networks
passwd protocols rpc services shadow

-V, --version

バージョン情報を表示します

$ getent --version
getent (GNU libc) 2.31

-i, --no-idn

IDN(国際化ドメイン名)エンコーディングを無効にします

$ getent -i hosts example.com
93.184.216.34   example.com

使用例

ユーザー名でユーザーを検索する

$ getent passwd username
username:x:1000:1000:Full Name:/home/username:/bin/bash

ホスト名でホストを検索する

$ getent hosts google.com
142.250.190.78  google.com

すべてのグループを一覧表示する

$ getent group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
[additional groups...]

サービスポートを検索する

$ getent services ssh
ssh                  22/tcp

ヒント:

grepと組み合わせてフィルタリングする

getentgrep を組み合わせて、大きなデータベースから結果をフィルタリングします:

$ getent passwd | grep username

ユーザーが存在するかチェックする

終了コードを使用して、ユーザーがシステムに存在するかどうかを確認します:

$ getent passwd username > /dev/null && echo "User exists" || echo "User does not exist"

グループのすべてのメンバーを見つける

グループデータベースを使用して、特定のグループのすべてのメンバーを確認します:

$ getent group sudo
sudo:x:27:user1,user2,user3

よくある質問

Q1. getentで照会できるデータベースは何ですか?

A. 一般的なデータベースには、passwd、group、hosts、services、protocols、networks、shadow、aliasesなどがあります。利用可能なデータベースはシステムによって異なる場合があります。

Q2. ホスト名が解決されるかどうかを確認するにはどうすればよいですか?

A. getent hosts ホスト名 を使用します。ホスト名が解決される場合、IPアドレスとホスト名が返されます。

Q3. getentはLDAPやその他のディレクトリサービスを照会できますか?

A. はい、getentはネームサービススイッチ(NSS)設定を使用するため、システムの /etc/nsswitch.conf ファイルで設定されているLDAP、NIS、DNS、ローカルファイルなど、あらゆるソースを照会できます。

Q4. getentと/etc/passwdなどのファイルを直接読み込むことの違いは何ですか?

A. getentはシステムのNSS設定を尊重するため、ローカルファイルだけでなく、設定されたすべてのソース(ローカルファイル、LDAP、NISなど)から情報を取得します。

参考資料

https://man7.org/linux/man-pages/man1/getent.1.html

改訂履歴