尝试从非 root 用户运行“service nginx restart”

尝试从非 root 用户运行“service nginx restart”

我对部署领域还很陌生,但这就是正在发生的事情。我有一个来自 DigitalOcean 的新 Ubuntu (Ubuntu 16.04.4 LTS) Droplet。我安装并配置了 nginx,一切运行顺利。我使用以下命令打开和关闭它:service nginx start/service nginx stop但我需要能够使用名为 的不同用户来执行此操作pepito

当我尝试运行时,service nginx startpepito得到:

~# 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*

再次尝试,同样的问题。继续谷歌搜索和阅读,发现这==== 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

当然,当我尝试从 启动和停止 nginx 时,它不起作用pepito。我不知道还能尝试什么!

答案1

使用visudo您编辑的文件的命令/etc/sudoers,仅当您在命令中添加前缀sudo, 时才适用sudo service nginx start

相关内容