Systemd
我們如何允許非 root 使用者控制 systemd 服務?
有了
sysvinit
,這樣的sudoers
條目就足夠了:%webteam cms051=/sbin/service httpd *
這將允許以下命令:
sudo service httpd status
sudo service httpd restart
現在,使用
systemd
,服務名稱是最後一個參數。即,服務重啟將通過以下方式完成:systemctl restart httpd.service
自然地,我認為將命令定義為
systemctl * httpd.service
可以工作,但這將允許一些systemctl restart puppet.service httpd.service
不是預期效果的東西。考慮到這一點,那麼允許非 root 使用者控制
systemd
服務的最佳方式是什麼?這不需要sudoers
;也許文件權限更改就足夠了?
只需將所有需要的命令
sudoers
分別添加到:%webteam cms051=/usr/bin/systemctl restart httpd.service %webteam cms051=/usr/bin/systemctl stop httpd.service %webteam cms051=/usr/bin/systemctl start httpd.service %webteam cms051=/usr/bin/systemctl status httpd.service
@jofel 的回答正是我獲得工作設置所需要的。為其他遇到此問題的人發布此資訊。從我的本地機器部署後,我需要一種方法來
capistrano
重新啟動我的 Ruby 應用程序。這意味著我需要無密碼訪問重新啟動systemd
服務。這就是我所擁有的,而且效果很好!注意:我的使用者和組稱為
deployer
將程式碼放入自定義文件中:
/etc/sudoers.d/deployer
程式碼:
%deployer ALL= NOPASSWD: /bin/systemctl start my_app %deployer ALL= NOPASSWD: /bin/systemctl stop my_app %deployer ALL= NOPASSWD: /bin/systemctl restart my_app