【发布时间】:2015-10-11 01:30:01
【问题描述】:
我有 supervisord 以用户 stavros 运行程序,我想授予相同的用户使用 supervisorctl 重新启动它的权限。不幸的是,我只能用 sudo 来做,否则我会在 socket.py 中得到一个权限被拒绝的错误。如何授予自己重新启动 supervisord 进程的权限?
【问题讨论】:
标签: python supervisord
我有 supervisord 以用户 stavros 运行程序,我想授予相同的用户使用 supervisorctl 重新启动它的权限。不幸的是,我只能用 sudo 来做,否则我会在 socket.py 中得到一个权限被拒绝的错误。如何授予自己重新启动 supervisord 进程的权限?
【问题讨论】:
标签: python supervisord
就个人而言,我认为以 root 身份运行 supervisord 是一个坏主意,但如果你想这样做,同时允许其他用户完全重启,我会这样做。
1/ 在您的系统上创建一个主管组,该组将在 supervisord 上具有重新启动权限
2/ 将相关用户放入群主管
3/ 在 supervisord 配置中,在 [unix_http_server] 部分使用以下行:
chmod=0770 ; socket file mode (default 0700)
chown=root:supervisor ; socket file uid:gid owner
它将保证管理员套接字可以从选定的用户访问。
4/ 在系统的 init 机制中以重生模式(init、systemd、upstart 等)添加 supervisord。这取决于您的系统。重生模式意味着如果进程崩溃或停止,它将自动重新启动。
5/ 从选定的用户之一,您应该能够使用 supervisorctl 运行命令,包括完全关闭,这将触发 supervisord 的完全重启。
【讨论】:
unix_http_server 是 supervisorctl 用来与 supervisord 通信的。由于默认的 debian 配置,我仅以 root 身份运行,但我正在放弃应用程序的权限,所以应该没问题。
也许您应该尝试使用用户 stavros 重新启动您的 superviord 进程。
【讨论】: