Deployment
Upstart:允許普通使用者停止和啟動我的自定義服務
我已經使用 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 webapp
和start webapp
?
sudo 是非常可配置的,您可以允許此使用者執行一組有限的命令而無需提示輸入密碼。以下行
/etc/sudoers
應該做你想要的:mainuser ALL = (root) NOPASSWD: /sbin/start webapp, /sbin/stop webapp