我在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' **
我认为这是一个安全问题,以避免未经授权的用户发出命令。
我还可以从脚本中接受命令吗?
答案 0 :(得分:0)
错误表示环境未使用相同的cookie从command
Erlang节点连接到主ejabberd节点。
我猜这个脚本作为另一个用户运行(尽管是root用户)。将运行脚本的用户需要在其主目录中具有相同的.erlang.cookie
文件。
注意:您不应以root,ejabberd或任何其他类型的网络服务器运行服务器。这违反了安全最佳实践。