脚本中的ejabberdctl命令会出现错误"来自不允许的节点的连接尝试"

时间:2015-08-09 17:15:13

标签: linux bash debian ejabberd

我在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

用户已创建(我可以在网络上看到它)。

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

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

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

我还可以从脚本中接受命令吗?

1 个答案:

答案 0 :(得分:0)

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

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

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