web-dev-qa-db-ja.com

sssdおよびldap認証キャッシュ

OpenSUSE 12.2を実行しているボックスに、OpenLDAPとsssdデーモンをインストールしました。ユーザー認証にはこれら2つのサービスを使用しています。最近、vhostsの新しいWebユーザーを動的に作成するスクリプトを作成しましたが、今は問題に対処しています。

Sssdは何らかのキャッシュを使用しているようで、getent passwdの実行中にLDAPから削除されたユーザーが返されます。スクリプトでさらに必要になるため、最近作成されたユーザーがすぐに返されない場合があります(setfaclおよびchownを使用して権限を設定するため)。

LDAPの再起動、sssdまたはnscdは役に立ちません。また、sss_cache -Uでキャッシュをフラッシュすることもできません。 sssdの設定でキャッシュを下げてみましたが、何の影響もないようです。

新しいユーザーをLDAPに追加した後、キャッシュを何らかの方法で明示的に更新するか、キャッシュを無効にする必要があります。

誰かが同様の問題を経験しましたか?

9
Seth Rayer

Manページ(sssd.conf)から:

NSS configuration options
       These options can be used to configure the Name Service Switch (NSS)
       service.

       enum_cache_timeout (integer)
           How many seconds should nss_sss cache enumerations (requests for
           info about all users)
       Default: 120

私は次のようなものを挿入します:

[nss]
enum_cache_timeout 10

(それが合うように見えるように秒を調整します)

5
473183469

sss_cache -Eをお試しください

または、sssdを停止し、/ var/lib/sss/db/*内のファイルを削除して、sssdを再起動してみてください

2
gerard

同様の問題を経験しました

getent passwd | grep <username>getent passwd <username>は同じ結果を返さないことに気づきました。

Straceを使用すると、getent passwd <username>"/var/lib/sss/mc/passwd"のデータをチェックすることがわかりました

wheras getent passwd | grep <username>/var/lib/sss/pipes/nssに接続し、そこからデータを取得します。

どちらのアプローチも異なるキャッシュにヒットするように見えるため、これは本当に混乱します。これらのキャッシュは、Sudo su - <username>を実行すると更新されるようですが、それ以外の場合は何時間も有効であるようです。

実際の結果は、例えばsshアクセスは、LDAPから削除されてから数分後にはユーザーに対して機能しませんが、getent passwdは何時間もそれを表示し続けるので、このユーザーが実際に削除されているかどうかを確認するのは難しいです(クリアしないと)一部のキャッシュは常に手動で)

2
Jens Timmerman

/etc/sssd/sssd.confにディレクティブを追加して、資格情報のキャッシュを無効にすることができます。

[domain/default]
cache_credentials = False

次に、コンソールコマンドを使用して、sssdが資格情報のキャッシュを使用していることを確認します。

# authconfig --test|grep credential
credential caching in SSSD is disabled
1
  • Sssdでキャッシュを完全に無効にすることはできません。

  • 認証プロバイダーとしてのsssを完全に無効にして、必要な場合はLDAPに直接クエリを実行できます。

たとえば、/etc/nsswitch.confでは、次のように行を変更します。

passwd:     files sss

passwd:     files ldap
  • /var/lib/sss/db/*を削除すると、キャッシュを強制的に消去できます
1
Grisha Levit

Fedora 30/31でcache_credentials = Trueを指定すると、LDAPユーザーを使用してログインできなくなるエラーが発生することに注意してください。これに関連する文書化されたバグを見つけていないので、ここに書きます。

0
Osqui