Tôi cần phải cho phép người dùng trong dba
nhóm để kiểm soát các database@
dịch vụ. Câu trả lời cho câu hỏi liên quan này là chỉ liệt kê tất cả các systemctl
"động từ" mà tôi muốn cho phép trong sudoers
tệp, tuy nhiên, điều đó không áp dụng cho trường hợp của tôi vì tôi không biết trước cơ sở dữ liệu nào có thể tồn tại trong hệ thống. Ví dụ, nếu tôi liệt kê
%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
điều đó không bao gồm các trường hợp có thể tồn tại trong tương lai và một dba sẽ không thể
$ sudo systemctl start database@omgwowyetanotherawsesomeapp
Dù sao, tôi đang nghĩ nhiều hơn về bao bì hơn là hợp nhất với một hệ thống cụ thể.
Lưu ý rằng, như thể hiện trong câu trả lời tuyệt vời này cho một câu hỏi liên quan khác , sử dụng sudo globs cho điều này cuối cùng là không an toàn:
%dba ALL = /usr/bin/systemctl start database@[a-z]* # UNSAFE!
không cho phép
$ sudo systemctl start database@awsesomeapp unrelatedservice
Tôi nghi ngờ sử dụng sudo
sẽ không giải quyết vấn đề của tôi (mặc dù tôi chắc chắn hy vọng tôi sai). Có cách nào khác để cho phép người dùng không root kiểm soát systemd
dịch vụ không?
Để biết giá trị của nó, tôi cần thực hiện điều này trong hệ thống CentOS 7 và hệ thống RHEL7 trong tương lai. Tôi cũng sẽ quan tâm đến các giải pháp hoạt động trên Arch Linux.