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

sca*_*a05 2 linux permissions plone zope supervisord

我只是根据最近的安全公告对我们运行 Zope 的方式进行了一些更改。在咨询中它说:

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

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

我们当前的 zope 用户需要的不仅仅是日志和数据目录的写权限,以便它可以运行 buildout,所以我选择创建一个额外的 linux 用户 zoperun 来实际运行 zope 服务。zoperun 与 zope 在同一个组中,并且只有对 var 目录的写权限。除了一件事之外,这一切都很好:我希望原始 zope 用户能够使用 supervisorctl 启动和停止 zope 实例。

我不能让这个工作。例如,当我尝试运行时,bin/supervisorctl status我得到

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

我认为这是因为主管套接字没有组读写权限

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

我已经umask = 002在 supervisord 配置中进行了设置,但这对这个 superctl 套接字没有影响。

有什么办法可以实现我想要的吗?

qua*_*nta 6

看看unix-http-server部分。更改您的配置文件如下:

[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))
Run Code Online (Sandbox Code Playgroud)

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

ll /tmp/supervisor.sock 
srwxrwx--- 1 zope zoperun 0 Sep 30 16:54 /tmp/supervisor.sock
Run Code Online (Sandbox Code Playgroud)

最后,将所有您希望允许启动/停止 Zope 实例的用户添加到zoperun组中并使用普通用户进行测试,您将看到如下内容:

$ supervisorctl status
foo                              STARTING   
Run Code Online (Sandbox Code Playgroud)