在 sudoers 中,如何测试别名是否已定义,以避免重复定义

在 sudoers 中,如何测试别名是否已定义,以避免重复定义

我需要为多个用户启用一个命令,在创建用户时启用。目前我有类似的东西(在 SLES 12 SP1 Linux 上)

Cmnd_Alias S3CP = /usr/local/bin/prog param1 param2 * # constraining usage
u1 ALL=(u1-helper) NOPASSWD: S3CP
u2 ALL=(u2-helper) NOPASSWD: S3CP
u3 ALL=(u3-helper) NOPASSWD: S3CP
# etc...

我想做的是将这些本地修饰从主配置中取出并放入其中,/etc/sudoers.d/以便更好地管理配置更改

90-myapp-u1.conf # containing the Cmnd_Alias and the authorization
90-myapp-u2.conf # similarly

但这可能会导致Cmnd_Alias第二个用户以后出现重复定义。有没有办法检查别名是否已定义并跳过命令?类似于 MATCH 规则或 #ifndef。或者,有没有其他惯用的方法可以做同样的事情?我不想内联命令别名。

多谢。

答案1

最好的片段解决方案可能是简单地将您的 S3CP 放入其自己的片段中,与它的使用分开。所以做这样的事情。然后,在您的配置管理系统上,在添加任何试图使用它的其他片段之前,请确保始终安装 s3cp。

/etc/sudoers.d/s3cp

Cmnd_Alias S3CP = /usr/local/bin/prog param1 param2 * # constraining usage

/etc/sudoers.d/u1

u1 ALL=(u1-helper) NOPASSWD: S3CP

/etc/sudoers.d/u2

u2 ALL=(u2-helper) NOPASSWD: S3CP

/etc/sudoers.d/u3

u3 ALL=(u3-helper) NOPASSWD: S3CP

相关内容