笔记
在发表这篇文章时,我自己设法找到了问题,所以我想我不妨发表这篇文章,以防以后对其他人有所帮助。问题是我有一个错字/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 写苏杜尔斯并不是苏多尔斯