Linux

允許組的所有使用者使用 supervisorctl 啟動和停止 zope

  • July 21, 2021

根據最近的安全公告,我只是對我們執行 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 套接字沒有影響。

有什麼辦法可以實現我想要的嗎?

看看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))

這使得組中的使用者可以讀取,寫入套接字文件zoperun

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

最後,將您希望允許啟動/停止 Zope 實例的所有使用者添加到zoperun組中並使用普通使用者進行測試,您將看到如下內容:

$ supervisorctl status
foo                              STARTING   

引用自:https://serverfault.com/questions/317153