web-dev-qa-db-ja.com

LinuxはLDAPの場合、グループメンバーのキャッシュを保持しますか? (グループと新しいグループの違い))

ユーザーとグループのLDAP構成が機能しています。

私たちのサーバーはLDAPを使用してユーザーとグループを保存しています。

# /etc/nsswitch.conf :
passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

しかし、今日は3人のユーザーでLDAPに新しいグループを追加し、次に他のユーザーを追加しました。 3人のユーザーはグループに属していますが、他のユーザーは属していません。

これは、「groups」を使用して確認できます。より正確には、「getent group GROUPNAME」はグループ内のユーザーを表示しますが、「groups」はそのユーザーのグループを表示しません...?!

したがって、私は理解しようとしています:

  • グループ用のキャッシュの種類はありますか-LDAPリスト?
  • または、同期が失敗する可能性はありますが、そうであれば手動で再起動する方法はありますか?

私の質問ではもっと正確に申し訳ありませんが、どこから始めればいいのか本当にわかりません...

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
7
db_ch

pam_ldapおよびnsswitchにはキャッシュメカニズムがありませんが、キャッシュを実装するシステムにnscdまたはsssdが存在する場合があります。

nscdグループキャッシュを無効化/フラッシュするには、次のコマンドを使用します。

Sudo nscd --invalidate=group

sssdグループキャッシュを無効化/フラッシュするには、次のコマンドを使用します。

Sudo sss_cache -G
16
Slipeer

jopasseratのコメントは、別の可能な答えにつながります。

groupsコマンドは、ユーザーのグループメンバーシップを報告しません。現在のプロセスのグループID特権を報告します。 NSSを使用して数値のグループIDを名前に変換するだけです。

ユーザーがログインすると、グループメンバーシップがNSSから取得され、setgidおよびsetgroupsシステムコールを使用して、ユーザーの初期プロセスに適切な権限が付与されます。そこから派生したすべてのプロセスは、同じ特権を継承します(set-idプログラムが実行される場合を除く)。

設定された権限が変更されても、ユーザーがログインしている間は、既存のプロセスは影響を受けません。特権を取得するにはログアウトして再度ログインする必要があり、特権を取り消そうとしている場合は、ジョブを完了するためにユーザーのプロセスをすべて強制終了する必要があります。

nscdなどは、気になるキャッシュのレイヤーを追加する可能性がありますが、既存のユーザープロセスは、事実上all構成に存在する特権キャッシュです。

3
user193597