.sh脚本,以“真实”根目录执行命令

问题描述

我想编写一个.sh脚本,将一条消息发送到我的ejabberd帐户。 (该脚本由apache2标准用户www-data”“调用”。)

该脚本应执行以下命令:ejabberdctl send_message chat admin@my-domain user@my-domain "title" "my message"

但是,如果没有root用户,我将无法运行任何ejabberdctl命令。因此sudo ejabberdctl不起作用(在终端或任何.sh脚本中)。我只能做sudo -s,然后做ejabberdctl my-command,在.sh脚本中不起作用(或者我错了吗?)。

(在本教程的帮助下,我已在ubuntu 20.04上安装了ejabberd 20.07:Install Ejabberd...

是否可以在.sh脚本中以“真实根”身份运行命令或创建根会话并在其中运行命令(就像我使用sudo -s ...手动操作那样)?

我的问题是否有解决方案,还是应该以“正常方式”安装ejabberd?

解决方法

从源代码编译并安装ejabberd时,可以使用类似的东西进行准备

./configure -–enable-group=ejagroup 

然后,您可以简单地创建系统组ejagroup,并将www-data用户添加到该ejagroup。 参见https://docs.ejabberd.im/admin/installation/#options

以您为例,您使用的是ProcessOne的Debian软件包,我看到本教程提到您创建了一个名为ejabberd的系统帐户。也许您可以从该帐户运行ejabberdctl,而不必root

,

我仍然不知道为什么当我以 root ejabberdctl仍然无法正常工作)身份“登录”时只能运行sudo ejabberdctl > >

.bashrc文件是否错误? (最后一行:PATH=$PATH:/opt/ejabberd-20.07/bin/

无论如何,至少我可以与任何用户一起运行sudo /opt/ejabberd-20.07/bin/ejabberdctl my_command,就像他们在这里一样:Ejabberd sbin/ejabberdctl start (No such file or directory)

有人用sudo: any_command: not found经历过这种奇怪的行为吗?

让我知道您是否对我的问题有一个更“优雅”的解决方案。