/etc/nsswitch.conf
の場合:
passwd: files ldap
この行は、getent passwd
最初に/etc/passwd
を実行します。リストしてから、LDAPのすべてのユーザーを調べますか?
Red Hatサーバーで試してみたところ、/etc/passwd
が36行しかないのに、何千行もスクロールしていました。
コメント
回答
getent
指定した「データベース」の結果が何であれ返されます。/etc/nsswitch.conf
の内容に基づいて、この「データベース」を構築するときに使用するバックエンドを決定します。
getent
は、使用状況ページgetent --help
にクエリを実行すると「データベース」を一覧表示します。
Supported databases: ahosts ahostsv4 ahostsv6 aliases ethers group gshadow hosts initgroups netgroup networks passwd protocols rpc services shadow
私の知る限り、waはありませんy /etc/nsswitch.conf
で構成されているさまざまなバックエンドのすべての結果を提供する動作を無効にします。
getent
および/etc/nsswitch.conf
はどちらもnss(Name Service Switch)の一部です。
nssのマニュアルページからの抜粋
パスワードやグループデータベースなどのシステムデータベースからデータを取得する関数への各呼び出しは、GNUCライブラリのNameServiceSwitch実装によって処理されます。提供されるさまざまなサービスは独立したモジュールによって実装され、それぞれが自然に互いに大きく異なります。
GNU Cライブラリに付属するデフォルトの実装はデフォルトで保守的であり、安全でないデータを使用しません。これは、状況によっては、特にデータベースが大きい場合に、非常にコストがかかる可能性があります。一部のモジュールでは、システム管理者は、これらが安全であることがわかっている場合、ショートカットの取得を要求できます。その場合、仮定が正しいことを確認するのはシステム管理者の責任です。
実装が時間の経過とともに変化する他のモジュールがあります。実装がメモリ消費のために速度を犠牲にするために使用された場合、問題が発生する可能性があります。設定が切り替わります。
バックエンド
これらにはさまざまなものがあり、ここで説明するには多すぎます。ただし、ここで説明するだけで十分です。いくつか例を挙げると、sssd
(sss / LDAP)、NIS、NIS +などのバックエンドです。
つまり、システムが
ファイルは、getent passwd
など、特定の「データベース」がクエリされたときにgetent
が表示する出力に影響します。 div>。
参照
コメント
- sssdハウツーリンクが無効になっています。
- @ GhostLyrics-リンクが変更されました
回答
はい、getent passwd
とだけ言うと、nsswitchにリストされているデータベースのいずれかで見つけることができるすべてのユーザーがリストされます。
コメント
- 列挙を有効にするNSSプロバイダーのみ。たとえば、
sss
を使用すると、一部のドメインの列挙を無効にできます。
getent passwd
にリストが表示されます。すべてのユーザー(ローカル+ ldap)