如何解决.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
经历过这种奇怪的行为吗?
让我知道您是否对我的问题有一个更“优雅”的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。