キャッシュされたデータが存在する場合、LDAPは更新されません
-
22-07-2019 - |
質問
Active Directoryサーバーに接続するLDAPを使用してネットワークユーザーを認証するSELinuxクライアントがあります。私たちのマシンは「自由に」動作する必要があるため、 nscdを使用してグループとパスワード情報をキャッシュする必要があります。
ここに問題があります。 Active Directoryサーバーのグループ情報を変更し、クライアントにログインし、そのユーザーのキャッシュが存在する場合、LDAPはサーバーを無視し、キャッシュされたデータのみを使用するようです。更新を取得できた唯一の方法は、passwdキャッシュを無効にすることです。
/etc/nsswitch.confの重要な部分:
passwd: file ldap cache group: file ldap cache shadow: file ldap cache
ありがとう。
更新: /etc/nsswitch.confが読み取られる前にnscdキャッシュがチェックされる strace getent passwd
を実行すると、nssの構成は問題になりません。
更新2:今日nss_updatedbを試して、動作するかどうかを確認します。これまでのところ、このハウツーはまさに私たちがやるべきことのように見えますが、喜びはありません。
解決 2
最後に、nss_updatedbを使用してグループとpasswdデータベースをローカルにキャッシュすることでこれを解決しました。次に、nscdをオフにしました。
pam.dリストにpam_execモジュールを追加し、認証の前にnss_updatedbを実行してローカルキャッシュが最新であることを確認するために使用します。
他のヒント
Active Directoryからの結果をキャッシュしたくない場合は、nscdをオフにするか、キャッシュの有効期間を数分に設定する必要があります(/etc/nscd.confを編集します)。 デフォルトの有効期間は、パスワードの場合は10分、グループの場合は1時間です。
次のコマンドを使用すると、nscdキャッシュを簡単にフラッシュできます。
sudo nscd -i passwd
sudo nscd -i group
指定されたコマンドでnscdキャッシュをフラッシュすると、変更されたLDAPデータが表示されます。
詳細については、 http://sysadmin-notepad.blogspot.rs/2013/05/how-to-flush-nscd-cache-in-linux.html