【问题标题】:ejabberdctl command inside a script gives error "Connection attempt from disallowed node"脚本中的 ejabberdctl 命令给出错误“来自不允许节点的连接尝试”
【发布时间】:2015-08-09 17:15:12
【问题描述】:

我在 Debian 7.6 服务器上运行 ejabberd-14.12,单节点。

我已经使用交互式 .run 包安装了 ejabberd。

我已经开始使用 ejabberd(以 root 身份登录):

# /opt/ejabberd-14.12/bin/ejabberdctl start

日志告诉我们:

ejabberd_app:start:69 ejabberd 14.12 is started in the node ejabberd@localhost

然后,我可以在我的 /root 目录中看到 erlang cookie:

-r-------- 1 root     root       20 ago  9 00:00 .erlang.cookie

如果我尝试在命令行模式下创建用户,一切正常:

# /opt/ejabberd-14.12/bin/ejabberdctl register foo myhost.lchat.local foopwd

并且用户已创建(我可以在 web gui 上看到它)。

如果相同的命令嵌入在 .sh 脚本中(带有完整的命令路径),并由守护进程(由 root 拥有)启动,它会在 ejabberd 的 error.log 中生成错误:

[error] <0.435.0> ** Connection attempt from disallowed node 'ctl-ejabberd@localhost' ** 

我认为这是一个安全问题,以避免未经授权的用户发出命令。

我该怎么做才能让脚本也接受命令?

【问题讨论】:

    标签: linux bash debian ejabberd


    【解决方案1】:

    该错误表示环境没有使用相同的 cookie 从command Erlang 节点连接到主 ejabberd 节点。

    我猜脚本作为另一个用户运行(尽管它是由 root 拥有的)。运行脚本的用户需要在其主目录中拥有相同的 .erlang.cookie 文件。

    注意:您不应以 root、ejabberd 或任何其他类型的网络服务器运行服务器。这违反了安全最佳实践。

    【讨论】:

    • 谢谢米凯尔。最后,我从头开始,并安装了 Deb 包(在我使用 .run 安装程序之前)。使用 Deb 包,脚本按预期工作,我解决了我的需求。但是现在 .erlang.cookie 已经消失了。可能是因为现在我有一个 ejabberd 系统用户(在 .run 安装程序中没有创建)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 2021-01-17
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多