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

Modified on: Sun, 03 Nov 2019 05:20:02 +0800

我使用upstart启动了我的webserver应用程序。这是新贵脚本:

位于/etc/init/webapp.conf的

# 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

作者:Tom

最佳答案

sudo是非常可配置的,您可以允许此用户执行一组有限的命令而不提示输入密码。 /etc/sudoers中的以下行应该按照您的要求执行:

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

相关问答

添加新评论