Eu preciso permitir que os usuários do dba
grupo controlem os database@
serviços. A resposta para esta pergunta relacionada é apenas listar todos os systemctl
"verbos" que eu quero permitir no sudoers
arquivo; no entanto, isso não se aplica ao meu caso, porque não sei de antemão quais bancos de dados podem existir no sistema. Por exemplo, se eu listar
%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
que não cobre instâncias que possam existir no futuro e um dba não poderá
$ sudo systemctl start database@omgwowyetanotherawsesomeapp
Enfim, estou pensando mais em termos de embalagem do que mexendo com um sistema específico.
Observe que, conforme mostrado nesta incrível resposta a outra pergunta relacionada , o uso de sudo globs para isso é inseguro:
%dba ALL = /usr/bin/systemctl start database@[a-z]* # UNSAFE!
permite
$ sudo systemctl start database@awsesomeapp unrelatedservice
Eu suspeito que o uso sudo
não resolverá meu problema (embora eu espero que esteja errado). Existe alguma outra maneira de permitir que usuários não raiz controlem systemd
serviços?
Quanto vale a pena, eu preciso fazer isso em um sistema CentOS 7 e sistemas RHEL7 no futuro. Eu também estaria interessado em soluções que funcionam no Arch Linux.