У мене запуск програми для веб-сервера починається з завантаження за допомогою запуску. Це початковий сценарій:
# 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
, але цей користувач не може цього зробити, оскільки він не судоер. З міркувань безпеки я також не хочу, щоб він був судором, плюс я не хочу вставляти пароль судо.
Отже, як я можу дозволити mainuser
бігати stop webapp
і start webapp
?
/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
би виконати лише цю команду?