如何允许普通用户无需密码即可重新启动主管组?

如何允许普通用户无需密码即可重新启动主管组?

我正在尝试允许组中的用户deployer在没有密码的情况下重新启动主管组;这是我的内容/etc/sudoers.d/deploy

%deployer ALL=(ALL:ALL) NOPASSWD:/usr/sbin/service nginx stop,/usr/sbin/service nginx start,/usr/bin/supervisorctl stop gname\:*,/usr/bin/supervisorctl start gname\:*

这是为了让组中的用户deployer能够重新启动 nginx 和主管组gname。它适用于 nginx,但不适用于主管。

我尝试过多种组合:

/usr/bin/supervisorctl stop gname,/usr/bin/supervisorctl start gname
/usr/bin/supervisorctl stop gname*,/usr/bin/supervisorctl start gname*
/usr/bin/supervisorctl stop gname\:,/usr/bin/supervisorctl start gname\:
/usr/bin/supervisorctl stop gname\:\*,/usr/bin/supervisorctl start gname\:\*

但我无法让它工作...为什么它不起作用?

  • Debian GNU/Linux 8
  • Linux 版本 4.5.5-x86_64
  • Supervisor 版本 3.0

答案1

这看起来可能是由于您允许的命令中的空格,例如supervisorctl stop gname等等。

虽然我现在无法测试,但首先我会尝试转义空格,例如

%deployer ALL=(ALL:ALL) NOPASSWD:/usr/sbin/service\ nginx\ stop,/usr/sbin/service\ nginx\ start,/usr/bin/supervisorctl\ stop\ gname\:*,/usr/bin/supervisorctl\ start\ gname\:*

如果失败,您可以将命令放入一个脚本中,并supercontrol.sh使用针对不同命令的不同 cmd 选项进行调用,并NOPASSWD仅在该脚本上指定。

%deployer ALL=(ALL:ALL) NOPASSWD:/path/to/supercontrol.sh

希望这可以帮助。

相关内容