我在 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
用户已创建(我可以在网络 GUI 上看到它)。
如果相同的命令嵌入到 .sh 脚本中(具有完整的命令路径),并由守护程序(由 root 拥有)启动,则会在 ejabberd error.log 中生成错误:
[error] <0.435.0> ** Connection attempt from disallowed node 'ctl-ejabberd@localhost' **
我认为这是一个安全问题,以避免未经授权的用户发出命令。
我该怎么做才能让脚本也接受该命令?
最佳答案
该错误意味着环境未使用相同的 cookie 从 command
Erlang 节点连接到主 ejabberd 节点。
我猜脚本是作为另一个用户运行的(尽管是 root 用户)。将运行该脚本的用户需要在其主目录中具有相同的 .erlang.cookie
文件。
注意:您不应以 root、ejabberd 或任何其他类型的网络服务器身份运行服务器。这违反了安全最佳实践。
关于linux - 脚本中的 ejabberdctl 命令给出错误 "Connection attempt from disallowed node",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31906774/