使用realmd配置SSSD(sudo和dyndns_update)

使用realmd配置SSSD(sudo和dyndns_update)

我正在尝试使用 Realmd + sssd 将 Ubuntu 16.04 加入 Windows 域(活动目录)。基本上我在关注这个帖子效果非常好,我能够加入我的服务器并可以成功地以 AD 用户身份进行身份验证。然而,集成中缺少两个部分:

  1. 在 DNS 中注册服务器的主机名
  2. 使用SSD-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: %[email protected]
  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 配置。我认为这可以通过使用来实现SSD-sudo但这还需要通过添加sudo到 sssd 服务并sudo_provider = ldap用于我的域来在 sssd.conf 文件中启用/配置。我再次无法弄清楚如何使用领域来做到这一点。

基本上我希望生成的配置文件如下所示:

[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

关于如何实现这一目标有什么想法吗?

答案1

如果您希望 Active Directory 进行管理sudoers,则必须将专门的架构加载到 AD 中,然后使用 ADSI Edit 等工具创建规则。 本演练在 Ubuntu 14.04 上为我工作。亮点是:

  • 进口schema.ActiveDirectory
  • 按照以下规则创建规则sudoers-ldap 联机帮助页
  • 更新etc/nsswitch.conf以包含在该行sss的条目中sudoers =
  • 更新etc/sssd/sssd.conf包括:
    • sudoservices =在该行的条目中
    • 一个空[sudo]部分(不需要配置,但是红帽断言这会触发 sudo 支持的正确配置)
    • 像这样的行sudo_provider = ad(sssd 文档上pagure.org声明 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>,因此可能还有其他问题需要解决。

然而,我的情况可能并不典型,因为我遇到了一些似乎并不常见的其他问题。例如,我运行时遇到问题realm join,并使用以下解决方法解决了问题这个服务器故障问题

如果您由于 16.04 中的 Realmd/sssd/sudo 问题而找到了这里,以下是一些其他报告的问题可能会有所帮助(不一定与 OP 的问题直接相关):

我们正在评估 16.04 的升级,因此我们可能会将其放在次要位置,但希望我们的跑腿工作对其他人有帮助。

答案2

遗憾的是,似乎没有选项可以将自定义配置参数添加到由realmd 生成的 sssd.conf 文件中。

我必须调整生成的配置以包含我需要的设置使用 加入域realm join并重新启动 sssd ( service restart sssd) 以使设置生效。

相关内容