Upstart:允许普通用户停止和启动我的自定义服务

Upstart:允许普通用户停止和启动我的自定义服务

我已经使用 upstart 在启动时启动了我的 Web 服务器应用程序。这是 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

答案1

sudo 非常易于配置,您可以允许此用户执行一组有限的命令而无需输入密码。下面这行/etc/sudoers应该可以满足您的要求:

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

相关内容