linux – 限制用户可以使用supervisor重启哪些进程?

前端之家收集整理的这篇文章主要介绍了linux – 限制用户可以使用supervisor重启哪些进程?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用主管来管理运行Django站点的Gunicorn进程,尽管这个问题可能与主管管理的任何事情有关.以前我是唯一管理和使用我们服务器的人,而主管只是以root身份运行,我会在需要时使用sudo运行supervisorctl restart myapp.

现在,我们的服务器必须支持在不同站点上工作的多个用户,并且每个项目都需要能够重新启动他们自己的gunicorn进程,而无法重新启动其他用户的进程.

我关注这篇博文:

http://drumcoder.co.uk/blog/2010/nov/24/running-supervisorctl-non-root/

并且能够允许非root用户使用supervisorctl,但现在任何人都可以重启其他人的进程.从它的外观来看,主管没有办法进行每用户访问控制.

任何人都有任何关于如何允许用户只重新启动自己的进程而没有root的想法?

编辑:我们考虑过的一些事情包括编写一个root所拥有的脚本,suid位设置除了supervisorctl重启myapp之外什么都没有,并把它放在拥有myapp的用户的目录中.互联网似乎在说如果做错了这样的脚本是不安全的.我们还考虑编写一个自定义守护程序,该守护程序侦听来自特定用户的命令,并在用户具有权限时重新启动管理程序进程.如果一个更简单的解决方案可行,这个想法似乎过于复杂.

解决方法

您可以使用sudo代替自定义脚本来完成同样的事情.也就是说,给定默认的supervisord配置,其中只有root可以运行supervisorctl,你可以将这样的条目放入/ etc / sudoers:
alice ALL = (root) NOPASSWD:/usr/bin/supervisorctl restart app1
bob ALL = (root) NOPASSWD:/usr/bin/supervisorctl restart app2

这将允许alice以root身份运行sudo /usr/bin/supervisorctl restart app1而无需提供密码,并且它将允许bob重新启动app2.

猜你在找的Linux相关文章