我需要为多个用户启用一个命令,在创建用户时启用。目前我有类似的东西(在 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