Saya perlu mengizinkan pengguna dalam dba
grup untuk mengontrol database@
layanan. Jawaban untuk pertanyaan terkait ini adalah dengan hanya mencantumkan semua systemctl
"kata kerja" yang ingin saya izinkan dalam sudoers
file, namun, itu tidak berlaku untuk kasus saya karena saya tidak tahu sebelumnya apa basis data yang mungkin ada dalam sistem. Misalnya, jika saya daftar
%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
itu tidak mencakup contoh yang mungkin ada di masa depan, dan dba tidak akan bisa
$ sudo systemctl start database@omgwowyetanotherawsesomeapp
Ngomong-ngomong, aku berpikir lebih dalam hal pengemasan daripada mengotak-atik sistem tertentu.
Perhatikan bahwa, seperti yang ditunjukkan dalam jawaban yang luar biasa untuk pertanyaan terkait lainnya , menggunakan sudo gumpalan untuk ini pada akhirnya tidak aman:
%dba ALL = /usr/bin/systemctl start database@[a-z]* # UNSAFE!
memang memungkinkan
$ sudo systemctl start database@awsesomeapp unrelatedservice
Saya curiga menggunakan sudo
tidak akan menyelesaikan masalah saya (meskipun saya harap saya salah). Apakah ada cara lain untuk memungkinkan pengguna non-root untuk mengontrol systemd
layanan?
Untuk apa nilainya, saya perlu melakukan ini dalam sistem CentOS 7, dan sistem RHEL7 di masa depan. Saya juga akan tertarik dengan solusi yang bekerja di Arch Linux.