시작 : 일반 사용자가 내 사용자 지정 서비스를 중지하고 시작하도록 허용 이것은 시작 스크립트입니다. # web app

upstart를 사용하여 부팅시 웹 서버 응용 프로그램을 시작했습니다. 이것은 시작 스크립트입니다.

# web app node upstart file at /etc/init/webapp.conf

description "web application"

start on started mongodb
stop on runlevel [06]

respawn
respawn limit 10 100

env NODE_ENV=production

pre-start script
    ulimit -n 2048
end script

exec start-stop-daemon --start -c mainuser --exec /usr/bin/make -- -C /home/mainuser/app start-prod

이것은 Ubuntu 서버 10.04 LTS에서 완벽하게 작동하며 매우 기쁩니다.

그러나 SSH를 사용하여 로그인 한 배포 쉘 스크립트가 있는데 mainuser(이는 sudoer가 아닙니다) 작업 디렉토리를 최신 배치 버전으로 업데이트합니다.

여기서 문제는 응용 프로그램이 새 소스 파일을로드 할 수 있도록 서비스를 다시 시작해야한다는 것입니다. 그러나 mainuser

mainuser@Saturn101:~$ stop webapp
-bash: stop: command not found

… 중지하려고 할 때. 나는 실행해야 sudo stop webapp하지만 sudoer가 아니기 때문에이 사용자는이 작업을 수행 할 수 없습니다. 보안상의 이유로 나는 그가 sudoer가되기를 원하지 않으며 sudo 비밀번호를 삽입하고 싶지 않습니다.

그래서 내가 어떻게 허용 할 mainuser실행 stop webapp하고 start webapp?



답변

sudo는 매우 구성이 가능하므로이 사용자는 암호를 묻지 않고 제한된 명령 세트를 실행할 수 있습니다. 다음 줄은 /etc/sudoers원하는 것을 수행해야합니다.

mainuser ALL = (root) NOPASSWD: /sbin/start webapp, /sbin/stop webapp