루트가 아닌 사용자로부터 "service nginx restart"를 실행해 보십시오.

루트가 아닌 사용자로부터 "service nginx restart"를 실행해 보십시오.

저는 배포 세계에 익숙하지 않지만 현재 진행 중인 작업은 다음과 같습니다. 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*

다시 시도해도 같은 문제입니다. 계속 인터넷 검색과 독서를 하다가 이것이 ==== 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에서 nginx를 시작하고 중지하려고 하면 작동하지 않습니다 pepito. 나는 무엇을 더 시도해야할지 모르겠습니다!

답변1

visudo편집 중인 파일을 사용하는 명령은 /etc/sudoers명령에 접두사를 추가하는 경우 에만 sudo적용됩니다 sudo service nginx start.

관련 정보