Services

嘗試從非 root 使用者執行“service nginx restart”

  • March 8, 2018

我對部署世界很陌生,但這就是正在發生的事情。我有一個來自 DigitalOcean 的新 Ubuntu(Ubuntu 16.04.4 LTS)液滴。我安裝並配置了 nginx,一切正常。我使用以下命令打開和關閉它:service nginx start/service nginx stop但我需要能夠使用另一個名為pepito.

當我嘗試執行service nginx start時,pepito我得到:

~# service nginx restart
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart 'nginx.service'.
Authenticating as: pepito
Password: 

但是我要從 Capistrano 執行它,所以我不想被要求輸入密碼,所以我添加了visudo這個:

pepito ALL=(ALL) NOPASSWD: /usr/sbin/service nginx*

再次嘗試,同樣的問題。繼續Google搜尋和閱讀,發現這==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===是一條消息,Polkit所以我讀了一些關於它的資訊,並在其中創建了以下文件:/etc/polkit-1/localauthority/50-local.d/nginx.pkla

Identity=unix-user:pepito
Action=org.freedesktop.systemd1.manage-units
ResultInactive=yes
ResultActive=yes

當然,當我嘗試從pepito. 我不知道還能嘗試什麼!

使用visudo您編輯文件的命令/etc/sudoers,這僅適用於您的命令前綴sudo,在您的情況下sudo service nginx start

引用自:https://unix.stackexchange.com/questions/429004