我对部署领域还很陌生,但这就是正在发生的事情。我有一个来自 DigitalOcean 的新 Ubuntu (Ubuntu 16.04.4 LTS) Droplet。我安装并配置了 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*
再次尝试,同样的问题。继续谷歌搜索和阅读,发现这==== 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
。