其他建议的问题是
- 只有在您可以访问公司局域网(或VPN)时,它们才起作用
- 您必须始终在每台计算机上维护sudoers文件
- 作为奖励,他们根本没有为我工作-根本没有
相反,我想要一些
实际的解决方案是使用SSSD并扩展AD模式。这样,SSSD会从AD定期获取sudo设置和用户凭据,并维护它们的本地缓存。然后将sudo规则存储在AD对象中,您可以在其中将规则限制为计算机,用户和命令,甚至所有这些都无需触摸工作站上的sudoers文件。
确切的教程在这里解释太久了,但是您可以在此处找到分步指南和一些有助于自动化的脚本:
TL; DR:
广告
获取最新版本的sudo,获取doc / schema.ActiveDirectory文件,然后将其导入(请确保根据您的域名修改域路径):
ldifde -i -f schema.ActiveDirectory -c "CN=Schema,CN=Configuration,DC=X" "CN=Schema,CN=Configuration,DC=ad,DC=foobar,DC=com" -j .
使用ADSI Edit进行验证:打开Schema命名上下文并查找sudoRole类。
现在,在您的域根目录上创建sudoers OU,该OU将保存所有Linux工作站的所有sudo设置。在此OU下,创建一个sudoRole对象。要创建sudoRole对象,您必须使用ADSI Edit,但是一旦创建,就可以使用Active Directory用户和计算机对其进行修改。
假设我有一台电脑命名foo32linux,用户名为stewie.griffin,我希望让他运行的所有命令与上补偿须藤。在这种情况下,我将在sudoers OU 下创建一个sudoRole对象。对于sudoRole,您可以使用任意名称-我坚持使用计算机名,因为我使用每台计算机的规则。现在,如下设置其属性:
- sudoHost:foo32linux
- sudoCommand:全部
- sudoUser:stewie.griffin
对于命令,您也可以使用特定的条目,例如/ bin / less或其他。
固态硬盘
至少添加到/etc/sssd/sssd.conf中:
[sssd]
services = nss, pam, sudo
[domain/AD.FOOBAR.COM]
cache_credentials = True
SSSD每隔几个小时会使用更新的规则刷新其本地缓存,但是最简单的测试方法是重新启动计算机。然后以AD用户身份登录并检查:
sudo -l
它应该列出您添加到该用户和计算机的所有相关整体。十分简单!
%Domain^Admins ALL=(ALL) ALL