Ubuntu

使用 realmd 配置 SSSD(sudo 和 dyndns_update)

  • June 20, 2017

我正在嘗試使用 realmd + sssd 將 Ubuntu 16.04 加入 Windows 域(活動目錄)。基本上我正在關注這篇執行良好的文章,並且我能夠加入我的伺服器並可以成功地作為 AD 使用者進行身份驗證。但是,集成中缺少兩部分:

  1. 在 DNS 中註冊伺服器的主機名
  2. 使用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_updatesssd.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

  • 按照sudoers-ldap 手冊頁創建規則

  • 更新etc/nsswitch.conf以包含sss在該sudoers =行的條目中

  • 更新etc/sssd/sssd.conf包括:

    • sudo在該services =行的條目中
    • 一個空[sudo]部分(不需要配置,但Redhat斷言這會觸發 sudo 支持的正確配置)
    • 像這樣的一行sudo_provider = ad(pagure.org 上的sssd文件聲稱 sudo 提供程序預設為 ldap、ad 和 ipa 啟用,因此這可能是可選的)

當我為 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 questionrealm join中的解決方法解決。

如果您由於 16.04 中的 realmd/sssd/sudo 問題而在這裡找到了自己的方式,這裡有一些其他報告的問題可能會有所幫助(不一定與 OP 的問題直接相關):

我們正在評估 16.04 以進行升級,因此我們可能會將其放在次要位置,但希望我們的跑腿工作可以幫助其他人。

引用自:https://unix.stackexchange.com/questions/309560