ユーザーとグループのLDAP構成が機能しています。
私たちのサーバーはLDAPを使用してユーザーとグループを保存しています。
# /etc/nsswitch.conf :
passwd: compat ldap
group: compat ldap
shadow: compat ldap
しかし、今日は3人のユーザーでLDAPに新しいグループを追加し、次に他のユーザーを追加しました。 3人のユーザーはグループに属していますが、他のユーザーは属していません。
これは、「groups」を使用して確認できます。より正確には、「getent group GROUPNAME」はグループ内のユーザーを表示しますが、「groups」はそのユーザーのグループを表示しません...?!
したがって、私は理解しようとしています:
私の質問ではもっと正確に申し訳ありませんが、どこから始めればいいのか本当にわかりません...
P. S.構成ファイル
# /etc/ldap/ldap.conf
URI ldap://172.16.1.232
TLS_CACERT /etc/ssl/certs/ca-certificates.crt
# /etc/pam_ldap.conf
base dc=ourdomain,dc=ch
uri ldap://172.16.1.232/
ldap_version 3
rootbinddn cn=admin,dc=ourdomain,dc=ch
pam_password crypt
pam_ldap
およびnsswitch
にはキャッシュメカニズムがありませんが、キャッシュを実装するシステムにnscd
またはsssd
が存在する場合があります。
nscd
グループキャッシュを無効化/フラッシュするには、次のコマンドを使用します。
Sudo nscd --invalidate=group
sssd
グループキャッシュを無効化/フラッシュするには、次のコマンドを使用します。
Sudo sss_cache -G
jopasseratのコメントは、別の可能な答えにつながります。
groups
コマンドは、ユーザーのグループメンバーシップを報告しません。現在のプロセスのグループID特権を報告します。 NSSを使用して数値のグループIDを名前に変換するだけです。
ユーザーがログインすると、グループメンバーシップがNSSから取得され、setgid
およびsetgroups
システムコールを使用して、ユーザーの初期プロセスに適切な権限が付与されます。そこから派生したすべてのプロセスは、同じ特権を継承します(set-idプログラムが実行される場合を除く)。
設定された権限が変更されても、ユーザーがログインしている間は、既存のプロセスは影響を受けません。特権を取得するにはログアウトして再度ログインする必要があり、特権を取り消そうとしている場合は、ジョブを完了するためにユーザーのプロセスをすべて強制終了する必要があります。
nscd
などは、気になるキャッシュのレイヤーを追加する可能性がありますが、既存のユーザープロセスは、事実上all構成に存在する特権キャッシュです。