笔记

笔记

笔记

在发表这篇文章时,我自己设法找到了问题,所以我想我不妨发表这篇文章,以防以后对其他人有所帮助。问题是我有一个错字/etc/nsswitch.conf,我写过苏杜尔斯并不是苏多尔斯

须藤者:条目从一开始就不存在,所以我必须添加它,因此出现了拼写错误。还有一件事是包裹libsss-sudo也没有安装,这是需要的。

邮政

我将我的 Linux 服务器通过 SSSD 加入到我的 AD 中,如下所示:

apt-get install sssd-ad sssd-tools realmd adcli krb5-user libsss-sudo
realm join -U Administrator domain.local

我可以使用我的 AD 用户登录,但现在我也想管理 AD 中的 sudo 规则。

我在我的 AD 服务器上扩展了 AD 方案:

> wget https://github.com/sudo-project/sudo/blob/main/docs/schema.ActiveDirectory -o schema.ActiveDirectory

我改变了所有直流=X条目DC=域,DC=本地然后跑:

> ldifde -i -f schema.ActiveDirectory

到目前为止,一切都很好。我创建了一个 OU,我想要所有的 sudo 规则:

OU=Sudo-rules,OU=Linux Servers,OU=Computers,OU=Company,DC=domain,DC=local

在组织单位中须藤规则我创建了一个对象sudo角色类,命名为LinuxAdminsSudo并编辑了以下属性:

sudoCommand: ALL
sudoHost: ALL
sudoRunAs: ALL
sudoUser: %[email protected]

[电子邮件受保护]是一个 AD 组,其中所有 Linux 管理员都是成员,我希望他们能够获得对所有 Linux 服务器的完全 sudo 访问权限。

这是我的/etc/sssd/sssd.conf:

[sssd]
domains = domain.local
config_file_version = 2
services = nss, pam, sudo

[domain/domain.local]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = DOMAIN.LOCAL
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /home/%d/%u
ad_domain = domain.local
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = ad
sudo_provider = ad

[sudo]

/etc/nsswitch.conf我补充道:

sudoers:        sss files

清除 SSSD 缓存并重新启动:

sss_cache -E
systemctl restart sssd

现在我使用以下用户登录Linux管理员- 组和当我跑步时须藤-l我明白了:

Sorry, user [email protected] may not run sudo on linux-host1.

所以我根本不允许运行 sudo,即使 AD 中的规则应该允许这样做。

当检查 SSSD 缓存时,我可以看到它确实检索到了规则:

ldbsearch -H /var/lib/sss/db/cache_domain.local.ldb

我找到了这个条目:

# record 28
dn: name=LinuxAdminsSudo,cn=sudorules,cn=custom,cn=domain.local,cn=sysdb
cn: LinuxAdminsSudo
dataExpireTimestamp: 1699953662
entryUSN: 65897179
name: LinuxAdminsSudo
objectCategory: CN=sudoRole,CN=Schema,CN=Configuration,DC=domain,DC=local
objectClass: sudoRule
originalDN: CN=LinuxAdminsSudo,OU=Sudo-rules,OU=Linux Servers,OU=Computers,OU=Company,DC=domain,DC=local
sudoCommand: ALL
sudoHost: ALL
sudoRunAs: ALL
sudoUser: %[email protected]
distinguishedName: name=LinuxAdminsSudo,cn=sudorules,cn=custom,cn=domain.local,cn=sysdb

这表明它可以很好地从 AD 检索规则。

一切都很好,我刚刚犯了一个错字/etc/nsswitch.conf在帖子的开头指出。

答案1

我写错了/etc/nsswitch.conf苏杜尔斯并不是苏多尔斯

相关内容