Deployment

Upstart:允許普通使用者停止和啟動我的自定義服務

  • May 19, 2012

我已經使用 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 上完美執行,我對此感到非常高興。

但是,我有一個部署 shell 腳本,它使用 SSH 登錄mainuser(這不是 sudoer),然後將工作目錄更新到最新的部署版本。

這裡的問題是需要重新啟動服務,以便應用程序載入新的源文件。然而,mainuser得到一個…

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

…當試圖阻止它時。我必須執行sudo stop webapp,但這個使用者不能這樣做,因為他不是 sudoer。出於安全原因,我也不希望他成為 sudoer,而且我不想插入 sudo 密碼。

那麼我如何允許mainuser執行stop webappstart webapp

sudo 是非常可配置的,您可以允許此使用者執行一組有限的命令而無需提示輸入密碼。以下行/etc/sudoers應該做你想要的:

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

引用自:https://serverfault.com/questions/390687