Linux
允許組的所有使用者使用 supervisorctl 啟動和停止 zope
根據最近的安全公告,我只是對我們執行 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