以 "real" root 身份执行命令的 .sh 脚本
.sh script that executes command as "real" root
我想编写一个 .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-scripts 中不起作用(或者我错了吗?)。
(我已经在本教程的帮助下在 ubuntu 20.04 上安装了 ejabberd 20.07:Install Ejabberd...)
有没有办法 运行 .sh-script 中的命令作为“真正的根”或创建根会话并 运行 那里的命令(就像我手动做的那样) sudo -s ...
)?
我的问题有什么解决方案吗?或者我应该以“正常方式”安装 ejabberd 吗?
当从源代码编译和安装 ejabberd 时,可以用类似
的东西来准备它
./configure -–enable-group=ejagroup
然后,您可以简单地创建系统组 ejagroup
,并将 www-data
用户添加到 ejagroup
。
参见 https://docs.ejabberd.im/admin/installation/#options
在你的例子中,你使用了 ProcessOne 的 Debian 软件包,我看到教程提到你创建了一个名为 ejabberd
的系统帐户。也许您可以从该帐户 运行 ejabberdctl,无需 root
?
我仍然不知道为什么我只能 运行 ejabberdctl
当我是“logged-in” as root (sudo ejabberdctl
仍然无法正常工作)
我的.bashrc文件错了吗? (最后一行:PATH=$PATH:/opt/ejabberd-20.07/bin/
)
无论如何,至少我可以 运行 sudo /opt/ejabberd-20.07/bin/ejabberdctl my_command
与任何用户一起使用,就像他们在这里所做的那样: Ejabberd sbin/ejabberdctl 启动(没有这样的文件或目录)
其他人是否遇到过 sudo: any_command: not found
这种奇怪的行为?
如果您对我的问题有更“优雅”的解决方案,请告诉我。
我想编写一个 .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-scripts 中不起作用(或者我错了吗?)。
(我已经在本教程的帮助下在 ubuntu 20.04 上安装了 ejabberd 20.07:Install Ejabberd...)
有没有办法 运行 .sh-script 中的命令作为“真正的根”或创建根会话并 运行 那里的命令(就像我手动做的那样) sudo -s ...
)?
我的问题有什么解决方案吗?或者我应该以“正常方式”安装 ejabberd 吗?
当从源代码编译和安装 ejabberd 时,可以用类似
的东西来准备它./configure -–enable-group=ejagroup
然后,您可以简单地创建系统组 ejagroup
,并将 www-data
用户添加到 ejagroup
。
参见 https://docs.ejabberd.im/admin/installation/#options
在你的例子中,你使用了 ProcessOne 的 Debian 软件包,我看到教程提到你创建了一个名为 ejabberd
的系统帐户。也许您可以从该帐户 运行 ejabberdctl,无需 root
?
我仍然不知道为什么我只能 运行 ejabberdctl
当我是“logged-in” as root (sudo ejabberdctl
仍然无法正常工作)
我的.bashrc文件错了吗? (最后一行:PATH=$PATH:/opt/ejabberd-20.07/bin/
)
无论如何,至少我可以 运行 sudo /opt/ejabberd-20.07/bin/ejabberdctl my_command
与任何用户一起使用,就像他们在这里所做的那样: Ejabberd sbin/ejabberdctl 启动(没有这样的文件或目录)
其他人是否遇到过 sudo: any_command: not found
这种奇怪的行为?
如果您对我的问题有更“优雅”的解决方案,请告诉我。