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