Red Hat Enterprise Linux 7.9
Shell=sh の使用
私が実行したとき...
getent group <group-name>
- コマンド1
例えば。
>>> getent group grp1
grp1:VAS:67458 usr3,usr2,usr1
>>> groups usr4
usr4: unixuser grp1
>>> getent group grp1
grp1:VAS:67458 usr4,usr3,usr2,usr1
結果が最新ではなく、一部のユーザーが応答から欠落しています。
私が実行したとき...
groups <user-name>
- コマンド2
ユーザーが属する正しいグループを返し、コマンド1には以前getent
に欠落していたコマンドグループにユーザーが含まれます。
何が起こっているのか、そして特定のUNIXグループのメンバーをリストするより良い方法があるかどうかを理解するのに役立ちます。
/etc/nsswitch.conf
ベストアンサー1
Linuxの観点からは、使用しているコマンドに問題はありません。しかし、ここで何が起こるのかは、usr4
find itを使用するように求められるまで、Linuxが自分のグループを知らないことですgroups usr4
。
お使いのシステムはnisplusを使用するように設定されていますnsswitch.conf
。これは、ユーザーとグループを保存する他のコンピュータにデータベースがあることを意味します。このタイプのブリッジには、実際にデータベース全体をローカルのUNIXシステムにコピーする操作は含まれません。特に、一部のディレクトリサーバーは何千人ものユーザーをホストできるためです。
したがって、groups usr4
nisplusはユーザーを検索してusr4
そのグループを評価するようにトリガーされます。これは情報のローカルキャッシュを更新し、その後の情報を更新しますgetent group grp1
。
ただし、getent group grp1
nisplusはディレクトリサーバー上のこのグループのすべての可能なユーザーを検索するためにトリガされません。これは非常に費用がかかり、何千人ものユーザーを引き付けることができます。
残念ながら、唯一のオプションは、リモートサーバー(ADサーバー)に連絡するか、システム管理者にユーザーを探すように依頼することです。
リモートディレクトリサーバーへのLDAPアクセス権がある場合は、LDAPクエリを作成し、openldapまたは同様のツールを使用してクエリを実行できます。