![允许 AD 组 SUDO](https://linux22.com/image/54144/%E5%85%81%E8%AE%B8%20AD%20%E7%BB%84%20SUDO.png)
我正在将一些 Fedora 20 工作站添加到我们的 Windows 2003 域中。我已成功使用盒子加入域,并且可以使用域帐户登录。
现在我试图允许Enterprise Admins
使用默认的 AD 组SUDO
,但是无论我做什么,似乎都找不到该组(或者至少它告诉我我的用户帐户不在 sudoers 文件中)
OU的结构(默认):
- 本地域名
- 内置
- 电脑
- DCOM-用户
- 域控制器
- 外国安全负责人
- 公司名称
- 管理
- 会计
- 管理员
- 系统账户
- 客户服务
- 仓库
- 用户
我使用realmd
和sssd
加入域,并尝试允许 sudo 位于 OU 下的组Users
,但也想从CompanyName --> Admins
OU/子组添加一些组。
我目前正在尝试这个但没有运气(在 /etc/sudoers 中)
%MYDOMAIN\\Enterprise^Admins ALL=(ALL) ALL
我也尝试过一些变体,例如:
%MYDOMAIN\\Users\Enterprise^Admins ALL=(ALL) ALL
%Enterprise^[email protected] ALL=(ALL) ALL
等等...似乎没有任何作用。即使重新启动后,和/或systemctrl restart sssd
.
如果我明确地将我的域帐户添加到 /etc/sudoers 文件中,那么它就没有问题。
[email protected] ALL=(ALL) ALL
有一些资源似乎表明应该可以将 AD 组添加到 sudoers,但是到目前为止,它们都没有为我工作:
http://funwithlinux.net/2013/09/join-fedora-19-to-active-directory-domain-realmd/
https://serverfault.com/questions/387950/how-to-map-ad-domain-admins-group-to-ubuntu-admins
答案1
在您询问几个月后,但正确的答案是您从组中删除所有域信息。所有信息均由SSSD自动设置和提取。
我在你的一些例子中看到的唯一缺陷是你用 ^ 转义了空格。
AD 组Enterprise Admins
将有一个以 sudoers 开头的行
%Enterprise\ Admins
例如,如果您的域名是example.com
,那么 sudoers 行看起来像
%Enterprise\ [email protected] ALL=(ALL) ALL
您可以通过在组中调用 getent 来验证这一点。
getent group Enterprise\ Admins
答案2
winbind
并sssd
以与 NIS 网络组相同的方式导入 AD 组。因此,文件中的组定义/etc/sudoers
需要以 开头+
,而不是%
.此外,包含空格的名称应该用双引号引起来,或者将每个空格指定为\x20
。
%sudo ALL = (ALL) ALL
+"domain users" ALL = (ALL) ALL
+domain\x20admins ALL = (ALL) NOPASSWD: ALL
答案3
如果您使用 visudo 管理 sudo,无论是通过 PAM 还是只是本地 sudoers 文件,那么您都可以使用%GroupName
.
如果您使用 sudo-ldap,那么您必须将 AD 组配置为被视为网络组并使用+NetGroupName
.我通过启用 NFS 角色并创建与常规 AD 组搭配的网络组来实现此目的:
New-NfsNetgroup -NetGroupName MyNetGroup -AddMember MyMember
*注意 MyMember 不是 FQDN,只是主机名
我还使用 sssd 而不是 PAM,因此您必须刷新缓存才能sss_cache -E
获取新的网络组名称。
验证:
getent netgroup MyNetGroup
应该看到:
MyNetGroup (MyMember,-,-)
我没有在 ADDC 上启用 NFS 共享,安装 NFS 角色允许在 Netgroup 命名空间上创建。
答案4
我认为 sudo 无法识别 AD windows 组。