Muszę zezwolić użytkownikom w dba
grupie na kontrolowanie database@
usług. Odpowiedzią na to pokrewne pytanie jest po prostu wypisanie wszystkich systemctl
„czasowników”, które chcę dopuścić w sudoers
pliku, jednak nie dotyczy to mojej sprawy, ponieważ nie wiem z góry, jakie bazy danych mogą istnieć w systemie. Na przykład, jeśli wymienię
%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
nie obejmuje to instancji, które mogą istnieć w przyszłości, a dba nie będzie w stanie tego zrobić
$ sudo systemctl start database@omgwowyetanotherawsesomeapp
W każdym razie myślę bardziej o pakowaniu niż o majstrowaniu przy konkretnym systemie.
Zauważ, że jak pokazano w tej niesamowitej odpowiedzi na inne powiązane pytanie , użycie globów sudo do tego celu jest ostatecznie niepewne:
%dba ALL = /usr/bin/systemctl start database@[a-z]* # UNSAFE!
pozwala
$ sudo systemctl start database@awsesomeapp unrelatedservice
Podejrzewam, że używanie sudo
nie rozwiąże mojego problemu (chociaż mam nadzieję, że się mylę). Czy istnieje inny sposób, aby umożliwić użytkownikom innym niż root kontrolowanie systemd
usług?
Aby to było warte, muszę to zrobić w systemie CentOS 7 i systemach RHEL7 w przyszłości. Byłbym także zainteresowany rozwiązaniami, które działają na Arch Linux.