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
?
1
사용자를 sudoers에 추가하면 어떤 보안 문제가 걱정됩니까? 사용자에게 특정 명령 만 허용하고 더 이상 허용하지 않는 규칙을 작성할 수 있으며 nopasswd 옵션을 포함시켜 암호 프롬프트를 멀리 할 수도 있습니다. 특정 오류에 관해서는 시작 / 중지가 / sbin에 있기 때문에 보통 일반 사용자 경로의 일부가 아닙니다. 따라서 "/ sbin / stop"을 수행하거나 경로에 sbin을 추가 할 수 있습니다. 루트가 필요한 시작 / 중지 스크립트에 다른 항목이없는 한 작동 할 수 있습니다.
—
데릭 Pressnall
@DerekPressnall, 고마워하지만 실행
—
Tom
/sbin/stop webapp
하면 stop: Unable to connect to system bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
. mainuser
이 명령 만 실행하려면 어떻게해야 합니까?
오류는이 사용자에게 관리자 권한이 없기 때문에 발생합니다.
—
Tom