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

我有我的networking服务器应用程序启动时使用暴发户。 这是新贵脚本:

# 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)login的部署shell脚本,然后将工作目录更新到最新的部署版本。

这里的问题是服务需要重新启动,以便应用程序加载新的源文件。 但是, mainuser得到一个…

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

当试图阻止它。 我必须运行sudo stop webapp ,但是这个用户不能这样做,因为他不是一个sudoer。 出于安全原因,我不希望他成为sudoer,另外我不想插入sudo密码。

那么如何让mainuser运行stop webappstart webapp呢?

    sudo是非常可configuration的,你可以允许这个用户在不提示input密码的情况下执行一组有限的命令。 /etc/sudoers的以下行应该做你想做的事情:

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