![服务器:使用 Active Directory 组进行 Sudo 失败,除非 /etc/sudoers 中的文件名与 AD 组的名称匹配](https://linux22.com/image/113931/%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9A%E4%BD%BF%E7%94%A8%20Active%20Directory%20%E7%BB%84%E8%BF%9B%E8%A1%8C%20Sudo%20%E5%A4%B1%E8%B4%A5%EF%BC%8C%E9%99%A4%E9%9D%9E%20%2Fetc%2Fsudoers%20%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8D%E4%B8%8E%20AD%20%E7%BB%84%E7%9A%84%E5%90%8D%E7%A7%B0%E5%8C%B9%E9%85%8D.png)
我所在的组织拥有许多 Linux 服务器,我们希望开始使用 Active Directory 进行身份验证。我设置了一个概念验证服务器,在该服务器上使用 SSSD 和 Kerberos 通过 Active Directory 进行身份验证。目前,我已将其设置为只有特定组(我们称之为 A 组)的用户才能登录服务器,并且工作正常。接下来,我开始让另一个组(B 组)的用户自动拥有 sudo 权限。以下是 Active Directory 中组织单位的结构:
A组
B组
我可以作为 Active Directory 用户成功登录,并且我已将 sssd.conf 包含在下面:
[sssd]
services = nss, pam
config_file_version = 2
domains = <organization>.LOCAL
[domain/<organization>.LOCAL]
id_provider = ad
access_provider = ad
# Use this if users are being logged in at /.
# This example specifies /home/DOMAIN-FQDN/user as /root. Use with pam_mkhomedir.so
override_homedir = /home/%d/%u
# makes all users use bash as the default shell
override_shell = /bin/bash
# only allows users from the following groups to log in
ad_access_filter = (|(memberOf=cn=group-A,ou=Groups,ou=department,dc=organization,dc=local))
为了允许 group-B 的所有成员 sudo 权限,我创建了一个名为 group-B-admin-group 的文件,其中/etc/sudoers.d
包含以下内容:
%group-B ALL=(ALL) ALL
此时,即使对于 B 组的用户,我也无法使用 sudo。执行时sudo su
会立即要求输入密码,然后报告该用户不在 sudoers 文件中。执行sudo touch this
、sudo cat
、sudo vim
和其他此类命令需要我等待大约 60 秒才能询问我的密码。输入密码后,sudo 报告我不在 sudoers 文件中。此时,我将文件重命名/etc/sudoers.d/group-B-admin-group
为/etc/sudoers.d/group-B
,突然一切正常。 B 组用户会立即收到输入密码的提示,然后以提升的权限运行该程序。
我的问题是这样的:我认为该文件的名称没有实际意义(无论如何,您可以将多个用户/组的权限放在一个文件中。)我的配置的一部分是否要求组和文件的名称相同?我只是想了解为什么会这样