我正在尝试使用 Realmd + sssd 将 Ubuntu 16.04 加入 Windows 域(活动目录)。基本上我在关注这个帖子效果非常好,我能够加入我的服务器并可以成功地以 AD 用户身份进行身份验证。然而,集成中缺少两个部分:
- 在 DNS 中注册服务器的主机名
- 使用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_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 配置。我认为这可以通过使用来实现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
包括:sudo
services =
在该行的条目中- 一个空
[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 的问题直接相关):
- IPA主机网络组问题(更多信息关于免费 ipa 用户列表)
- 有一个已知问题使用realmd依赖解析。正如讨论中提到的,安装 packagekit 可以解决许多人(包括我们)的问题。可能有一个单独发行版本为 16.04。
我们正在评估 16.04 的升级,因此我们可能会将其放在次要位置,但希望我们的跑腿工作对其他人有帮助。
答案2
遗憾的是,似乎没有选项可以将自定义配置参数添加到由realmd 生成的 sssd.conf 文件中。
我必须调整生成的配置以包含我需要的设置后使用 加入域realm join
并重新启动 sssd ( service restart sssd
) 以使设置生效。