【问题标题】:Allow user other than root to restart supervisorctl process?允许root以外的用户重新启动supervisorctl进程?
【发布时间】:2015-10-11 01:30:01
【问题描述】:

我有 supervisord 以用户 stavros 运行程序,我想授予相同的用户使用 supervisorctl 重新启动它的权限。不幸的是,我只能用 sudo 来做,否则我会在 socket.py 中得到一个权限被拒绝的错误。如何授予自己重新启动 supervisord 进程的权限?

【问题讨论】:

    标签: python supervisord


    【解决方案1】:

    就个人而言,我认为以 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 身份运行,但我正在放弃应用程序的权限,所以应该没问题。
    【解决方案2】:

    也许您应该尝试使用用户 stavros 重新启动您的 superviord 进程。

    【讨论】:

    • 嗯,这确实可行,因为我只需要它在该用户下执行。我会尝试并报告,谢谢!
    猜你喜欢
    • 2017-01-29
    • 2012-03-07
    • 2016-02-20
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多