更新多个sudoers文件

我们有多个对Active Directory域进行身份validation的Linux服务器。 对于AD中的一个组,我想添加一个允许使用sudo以root身份运行的命令列表。 我可以显然ssh在每台计算机和更新sudoers文件 – 但这将需要一些时间。 此外,根login是不允许的。 所以,无密码login只能用于非root用户。

是否有快速的方法来一次更新每台Linux计算机的sudoers文件? 我正在考虑一个Perl或Python脚本,这里有一些系统pipe理function。

更新:谢谢veroteq7和沙恩马登。 我曾想过一次部署cfengine–但目前我们没有运行。 我们已经决定使用LDAP将是最好的解决scheme。 对于sudo,导入LDIF模式schema.ActiveDirectory时出错。 第144行的错误是“参数不正确”。

这是144行以后的内容:

dn: CN=sudoRole,CN=Schema,CN=Configuration,DC=X changetype: add objectClass: top objectClass: classSchema cn: sudoRole distinguishedName: CN=sudoRole,CN=Schema,CN=Configuration,DC=X instanceType: 4 possSuperiors: container possSuperiors: top subClassOf: top governsID: 1.3.6.1.4.1.15953.9.2.1 mayContain: sudoCommand mayContain: sudoHost mayContain: sudoOption mayContain: sudoRunAs mayContain: sudoRunAsUser mayContain: sudoRunAsGroup mayContain: sudoUser rDNAttID: cn showInAdvancedViewOnly: FALSE adminDisplayName: sudoRole adminDescription: Sudoer Entries objectClassCategory: 1 lDAPDisplayName: sudoRole name: sudoRole schemaIDGUID:: SQn432lnZ0+ukbdh3+gN3w== systemOnly: FALSE objectCategory: CN=Class-Schema,CN=Schema,CN=Configuration,DC=X defaultObjectCategory: CN=sudoRole,CN=Schema,CN=Configuration,DC=X 

我使用的命令是:

 ldifde -i -f schema.ActiveDirectory -c dc=X dc=DOMAINNAME,dc=LOCAL 

Update2:我创build了一个新的问题 。 谢谢大家的build议。

为什么不报废/etc/sudoers并使用AD (LDAP)作为sudoers商店? – 更多信息在这里 。

您已经对AD进行了身份validation,所以这只是下一个逻辑步骤,并为您提供了一个方便,集中的地方来处理身份validation授权。

configurationpipe理工具如何? 木偶 , 厨师 , CFEngine等?

您可以在sudoers中定义组…并从中央身份validation存储库中提取这些组…如Active Directory。 我喜欢把我的sudoers文件中的域pipe理员。 节省很多头痛。

如果你正在寻找一个API来修改你的sudoers文件,你可以使用带有Sudoers镜头的Augeas。 它与Puppet很好地集成,但你也可以在你的脚本中使用它(有很多绑定)。

例如,看到这个答案 。