允许组的所有用户使用supervisorctl启动和停止zope

我只是在最近的安全build议之后,对Zope的运行方式进行了一些修改。 它在咨询中说:

“确保Zope / Plone服务以最低权限运行。 理想情况下,Zope和ZEO服务应该只能写入日志和数据目录。“

目前,我们有一个专门的Linux用户,它运行buildout,启动和停止服务器,并运行Zope服务。 我们使用supervisord来pipe理我们并行运行的两个Zope实例(relstorage backend)。

我们目前的zope用户不仅需要在日志和数据目录上写权限,以便它可以运行构build,所以我select创build一个额外的linux用户zoperun来实际运行zope服务。 zoperun和zope在同一个组中,只对var目录有写权限。 这一切都工作正常,除了一件事情:我想要原来的Zope用户能够使用supervisorctl启动和停止zope实例。

我无法得到这个工作。 例如,当我尝试运行bin/supervisorctl status我得到了

错误:,[错误13]权限被拒绝:文件:行:1

我想这是因为pipe理员套接字没有组读写权限

srw ——- 1 zoperun zopeour 0 Sep 30 09:00 supervisor.sock

我已经在supervisordconfiguration中设置了umask = 002 ,但是这对superctl套接字没有影响。

有什么办法可以达到我想要的吗?

看看unix-http-server部分。 改变你的configuration文件如下:

 [unix_http_server] file=/tmp/supervisor.sock ; (the path to the socket file) chmod=0770 ; sockef file mode (default 0700) chown=zope:zoperun ; socket file uid:gid owner ;username=user ; (default is no username (open server)) ;password=123 ; (default is no password (open server)) 

这使得套接字文件可以被zoperun组中的用户读取,写入:

 ll /tmp/supervisor.sock srwxrwx--- 1 zope zoperun 0 Sep 30 16:54 /tmp/supervisor.sock 

最后,将所有想要允许启动/停止Zope实例的用户添加到zoperun组中,并使用普通用户进行testing,您将看到如下所示:

 $ supervisorctl status foo STARTING