如何在 CentOS 7 上清除使用者記憶體的 Active Directory 密碼?
我在公司筆記型電腦上安裝了 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
為False
和。fallback_homedir
_/home/%u
_/etc/sssd/sssd.conf
- 重啟守護程序:
systemctl restart sssd && systemctl daemon-reload
- 設置 ITGROUP 以便能夠使用 sudo:
echo "%ITGROUP ALL=(ALL) ALL" > /etc/sudoers.d/ITGROUP
一切都執行良好。…直到我在 Windows 10 PC 上更改了密碼。事實上,CentOS 盒子讓我,只是用舊密碼。我做了一堆Google搜尋並嘗試了一堆東西(例如,,
sss_cache -E
)kdestroy -A
,但我似乎無法刷新記憶體,所以我可以使用我的新密碼。那麼,如何在 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 的東西,但它
Authenticated with cached credentials, your cached password will expire at:
現在告訴我什麼時候登錄或 sudo。我希望下次我的密碼到期並更改它時,該系統會辨識它。僅供參考,我的整個配置是:[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 = activedirectorygroup@adserver.example.com account_cache_expiration = 2 cached_auth_timeout = 3600 refresh_expired_interval = 4050 [pam] reconnection_retries = 3 offline_credentials_expiration = 2
更新#2:
我已經使用這個配置有一段時間了。我已經增加了
account_cache_expiration
andoffline_credentials_expiration
from2
to4
,但它執行得很好,我們已經開始在我們的伺服器上使用這個設置。
那麼,如何在 CentOS 7 上清除使用者記憶體的 Active Directory 密碼?
通常
sss_cache
應該是告訴 sssd 重新檢索它可能已經記憶體的對象的正確方法。但是如果無法從 AD 中檢索到任何內容,afaik sssd 確實會再次使用記憶體的對象。您應該始終能夠通過設置來重置記憶體的憑據
[domain/your-domain.tld] ... cache_credentials = False
在 /etc/sssd/sssd.conf 中,重新啟動 sssd 服務並重新驗證您的使用者。這樣,您應該能夠確定 SSSD/AD 上的身份驗證是否有效。要檢查完整設置是否使用目前設置(不使用任何記憶體),實際刪除所有記憶體總是一件好事。請參閱底部的資訊,了解如何最有效地做到這一點。
有沒有辦法讓“普通”使用者自己做到這一點(如果我們想把它推廣到其他系統)?
我不知道如何安全地實施。恕我直言,這不是你想要的。但無論如何,它不應該是必要的。SSSD 應始終根據某些條件重新評估其記憶體的憑據。
大多數情況下,最好設置以下內容以在幾天后強制重新評估,並實際注意環境是否出現問題
[pam] ... offline_credentials_expiration
預設
offline_credentials_expiration
設置為0
(無限制)大多數時候,當我想確定沒有更多記憶體在使用時,我會執行以下操作
systemctl stop sssd rm /var/lib/sssd/db/* systemctl start sssd
這可能會導致 sssd 設置無法正常工作(但前提是其設置有問題,因為所有 sssd 保存的數據都可以簡單地從 AD 中重新檢索)。