我需要允许dba
组中的用户控制database@
服务。这个相关问题的答案是仅列出systemctl
我要允许在sudoers
文件中使用的所有“动词” ,但是,这不适用于我的情况,因为我事先不知道系统中可能存在哪些数据库。例如,如果我列出
%dba = /usr/bin/systemctl start database@awsesomeapp
%dba = /usr/bin/systemctl start database@anotherawsesomeapp
%dba = /usr/bin/systemctl start database@yetanotherawsesomeapp
%dba = /usr/bin/systemctl start database@wowyetanotherawsesomeapp
# ... other "verbs" omitted for brevity
它不包括将来可能存在的实例,因此dba将无法
$ sudo systemctl start database@omgwowyetanotherawsesomeapp
无论如何,我在包装方面的想法比在特定系统上的想法更多。
请注意,正如对另一个相关问题的惊人回答所示,为此使用sudo glob最终是不安全的:
%dba ALL = /usr/bin/systemctl start database@[a-z]* # UNSAFE!
确实允许
$ sudo systemctl start database@awsesomeapp unrelatedservice
我怀疑使用sudo
它并不能解决我的问题(尽管我当然希望我错了)。还有其他方法可以允许非root用户控制systemd
服务吗?
对于它的价值,我需要在CentOS 7系统和将来的RHEL7系统中进行。我也对在Arch Linux上工作的解决方案感兴趣。