У меня приложение веб-сервера запускается при загрузке с помощью выскочки. Это сценарий выскочки:
# 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