会社のラップトップにCentOS 7インストールを構築し、会社のADサーバーに対して認証するように構成しました。
パッケージをインストールします。
yum install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python
ADサーバーを/etc/hosts
に追加します。
レルムに参加:
realm join --user=tech adserver.example.com
realm permit -g activedirectorygroup@domain
use_fully_qualified_names
のfallback_homedir
をFalse
に、/home/%u
を/etc/sssd/sssd.conf
に変更します。
デーモンを再起動します。
systemctl restart sssd && systemctl daemon-reload
Sudoを使用できるようにITGROUPをセットアップします。
echo "%ITGROUP ALL=(ALL) ALL" > /etc/sudoers.d/ITGROUP
すべてが正常に機能しています。 ... Windows 10 PCでパスワードを変更するまで。実際には、CentOSボックスで許可されていますが、oldパスワードが必要です。私はたくさんのグーグル操作をして、たくさんのことを試しました(たとえば、sss_cache -E
、kdestroy -A
)。しかし、キャッシュをフラッシュすることができないので、-newパスワード。
では、CentOS 7でユーザーのキャッシュされたActive Directoryパスワードをクリアするにはどうすればよいですか? 「通常の」ユーザーが自分でそれを行う方法はありますか(これを他のシステムにロールアウトしたい場合に備えて)?
いくつかの提案を試しましたが、ラップトップは古い資格情報を忘れません。結局、PCをレルムから削除して、再度追加しました。私はこれを私のsssd.confに追加しました:
[sssd]
...
account_cache_expiration = 2
cached_auth_timeout = 3600
refresh_expired_interval = 4050
[pam]
reconnection_retries = 3
offline_credentials_expiration = 2
ログインはADのものをキャッシュしているようですが、ログインまたはSudoを実行するとAuthenticated with cached credentials, your cached password will expire at:
が表示されます。次回パスワードの有効期限が切れて変更したときに、このシステムで認識されることを願っています。ちなみに、私の全体の構成は:
[sssd]
domains = adserver.example.com
config_file_version = 2
services = nss, pam
[domain/adserver.example.com]
ad_domain = adserver.example.com
krb5_realm = adserver.example.com
realmd_tags = manages-system joined-with-samba
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_Shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%u
access_provider = simple
simple_allow_groups = [email protected]
account_cache_expiration = 2
cached_auth_timeout = 3600
refresh_expired_interval = 4050
[pam]
reconnection_retries = 3
offline_credentials_expiration = 2
私はこの構成をかなり長い間使用しています。 account_cache_expiration
とoffline_credentials_expiration
を2
から4
に増やしましたが、サーバーでこの設定を使い始めたので、うまく機能しています。
では、CentOS 7でユーザーのキャッシュされたActive Directoryパスワードをクリアするにはどうすればよいですか?
一般的にsss_cache
は、おそらくすでにキャッシュされているオブジェクトを再取得するようにsssdに指示する正しい方法であるべきです。しかし、ADから何も取得できない場合、afaik sssdは実際にキャッシュされたオブジェクトを再び使用します。
設定により、常にキャッシュされた資格情報をリセットできるはずです
[domain/your-domain.tld]
...
cache_credentials = False
/etc/sssd/sssd.confで、sssdサービスを再起動し、ユーザーで再認証します。この方法で、SSSD/ADを介した認証がまったく機能するかどうかを判断できるはずです。完全なセットアップが現在の設定で(キャッシュを使用せずに)機能しているかどうかを確認するには、実際にdeleteすべてのキャッシュを使用することを常にお勧めします。最も効果的な方法については、下部の情報を参照してください。
「通常の」ユーザーが自分でそれを行う方法はありますか(これを他のシステムにロールアウトしたい場合に備えて)?
これを安全に実装する方法がわかりません。私見これはあなたが望むものではありません。しかし、それはとにかく必要ではありません。 SSSDは常に、いくつかの条件に基づいて、キャッシュされた資格情報を再評価する必要があります。
ほとんどの場合、次のように設定して、数日後に再評価を強制し、実際に環境に問題があるかどうかを確認することをお勧めします
[pam]
...
offline_credentials_expiration
デフォルトoffline_credentials_expiration
に設定されています 0
(制限なし)
ほとんどの場合、確認したい場合は、使用中のキャッシュがないため、次のようにします
systemctl stop sssd
rm /var/lib/sssd/db/*
systemctl start sssd
これは、機能しないsssdセットアップにつながる可能性があります(ただし、すべてのデータsssdが保持しているADから単純に再取得できるため、セットアップに問題がある場合のみ)。