使用 realmd 配置 SSSD(sudo 和 dyndns_update)
我正在嘗試使用 realmd + sssd 將 Ubuntu 16.04 加入 Windows 域(活動目錄)。基本上我正在關注這篇執行良好的文章,並且我能夠加入我的伺服器並可以成功地作為 AD 使用者進行身份驗證。但是,集成中缺少兩部分:
- 在 DNS 中註冊伺服器的主機名
- 使用sssd-sudo進行使用者授權
在 DNS 中註冊伺服器的主機名
如前所述,我使用以下方法成功加入了 AD
realm join --user=dpr MYDOMAIN.INT --install=/
:root@ip-172-28-5-174 ~ # realm list mydomain.int type: kerberos realm-name: MYDOMAIN.INT domain-name: mydomain.int configured: kerberos-member server-software: active-directory client-software: sssd required-package: sssd-tools required-package: sssd required-package: libnss-sss required-package: libpam-sss required-package: adcli required-package: samba-common-bin login-formats: %U@mydomain.int login-policy: allow-realm-logins
但是,儘管成功加入,域中的其他機器不知道我的伺服器使用其主機名
ip-172-28-5-174.mydomain.int
。我發現這個文件提到了dyndns_update
sssd.conf 文件中的一個設置。因為我正在使用領域。sssd 配置是通過發出 join 命令自動生成的。生成的配置文件如下所示:
[sssd] domains = mydomain.int config_file_version = 2 services = nss, pam [domain/mydomain.int] ad_domain = mydomain.int krb5_realm = MYDOMAIN.INT realmd_tags = manages-system joined-with-adcli cache_credentials = True id_provider = ad krb5_store_password_if_offline = True default_shell = /bin/bash ldap_id_mapping = True use_fully_qualified_names = True fallback_homedir = /home/%u@%d access_provider = ad
那就是我需要以某種方式添加
dyndns_update = True
到這個生成的文件中。但是怎麼做?使用 sssd-sudo 進行使用者授權
此外,我想讓 sssd 從 AD 讀取我的 sudo 配置。我認為這可以使用sssd-sudo來實現,但這需要在 sssd.conf 文件中啟用/配置,還需要添加
sudo
到 sssd 服務並sudo_provider = ldap
用於我的域。同樣,我無法弄清楚如何使用領域來做到這一點。基本上我希望我生成的配置文件看起來像這樣:
[sssd] domains = mydomain.int config_file_version = 2 services = nss, pam, sudo [domain/mydomain.int] id_provider = ad access_provider = ad sudo_provider = ldap ad_domain = mydomain.int krb5_realm = MYDOMAIN.INT realmd_tags = manages-system joined-with-adcli cache_credentials = True krb5_store_password_if_offline = True default_shell = /bin/bash ldap_id_mapping = True use_fully_qualified_names = True fallback_homedir = /home/%u@%d
關於如何實現這一點的任何想法?
遺憾的是,似乎沒有將自定義配置參數添加到由 realmd 生成的 sssd.conf 文件的選項。
加入域後,我必須調整生成的配置以包含我需要的設置,
realm join
並重新啟動 sssd (service restart sssd
) 以使設置生效。
如果您希望 Active Directory 進行管理
sudoers
,則必須將專用架構載入到 AD 中,然後使用 ADSI Edit 等工具創建規則。 這個演練在 Ubuntu 14.04 上對我有用。亮點是:
進口
schema.ActiveDirectory
更新
etc/nsswitch.conf
以包含sss
在該sudoers =
行的條目中更新
etc/sssd/sssd.conf
包括:當我為 16.04 重複此過程時(即與 14.04 相同的 AD 規則),我實際上遇到了其他問題。顯然,這並不少見。16.04 中包含的 sudo 版本可能存在錯誤。
- 原則上,手動升級到最新版本應該可以解決此問題。
- 如果您希望 SSSD(而不是)管理 ldap 連接,則正常
sudo
包(非sudo-ldap
)是正確的包。sudo
具體來說,安裝sudo-ldap
不會產生登錄,sssd_sudo.log
而正常sudo
軟體包會產生登錄。- 雖然
sssd_sudo
現在顯示Returning 2 rules for [<user>@<domain>]
,sudo -l
但仍在響應,Sorry, user <user>@<domain> may not run sudo on <host>
因此可能還有其他問題需要解決。但是,我的情況可能並不典型,因為我遇到了其他似乎不常見的問題。例如,我執行的問題已使用此 Server Fault question
realm join
中的解決方法解決。如果您由於 16.04 中的 realmd/sssd/sudo 問題而在這裡找到了自己的方式,這裡有一些其他報告的問題可能會有所幫助(不一定與 OP 的問題直接相關):
- IPA 主機網路組問題(有關免費 ipa 使用者列表的更多資訊)
- 領域依賴解析存在一個已知問題。正如討論中提到的,安裝 packagekit 可以解決許多人(包括我們)的問題。16.04 中的版本可能存在單獨的問題。
我們正在評估 16.04 以進行升級,因此我們可能會將其放在次要位置,但希望我們的跑腿工作可以幫助其他人。