尝试通过 php 上的 shell_exec 启动应用程序

尝试通过 php 上的 shell_exec 启动应用程序

我已经为这个问题苦思冥想了好几天。我对 Linux 还算熟悉,但绝对算不上专家。

目标:通过 shell_exec (www-data 用户) 启动 soulseek-cli 应用程序

问题不在于如何让 PHP 方面正常工作,而在于如何让 soulseek 使用 www-data 用户(或除 techno 之外的任何其他用户)启动

我按照以下说明使用 npm 进行安装

npm install -g soulseek-cli(在一些我不确定的密钥环命令之后)

https://github.com/aeyoll/soulseek-cli

我可以让 soulseek 以 techno 用户身份在终端上运行,但是/usr/bin/env: 'node': No such file or directory当我尝试通过 PHP 页面上的 www-data 启动 soulseek 时收到错误。

在终端上尝试通过 root 启动 soulseek,command not found尽管可以使用以下方法找到它whereis soulseek

看来该应用程序仅针对 techno 安装?有没有办法在 php 上使用 techno 用户而不是 www-data?或者有没有办法让 www-data 运行用户 techno 应用程序?

Shell 脚本:

shell 脚本

PHP 脚本:

PHP 脚本

尝试以 root 身份运行 soulseek:

尝试以 root 身份运行 soulseek

nvm 和 node 版本:

nvm 和 node 版本

答案1

用户 www-data 根本没有权利在不输入密码的情况下运行该程序。

您可以编辑文件 /etc/sudoers 来实现这一点。

查找 sudoers 文件中的条目并添加应用程序的具体路径。可能是“/usr/bin/soulseek”?

我这样做是为了控制我的网络摄像头并在我的网站的 php 页面上执行一个脚本,该脚本将温度/湿度数据写入文件中。我将所有文件路径的集合简称为“Camera-Funktions = CAMFKT”。

# Cmnd alias specification
Cmnd_Alias CAMFKT = /usr/bin/cam_on, /usr/bin/cam_off, /usr/bin/cam_reset, /usr/bin/play, /usr/bin/HTU21D.

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

www-data   ALL=(ALL) NOPASSWD: CAMFKT

我没有更改 root 和 %sudo 条目,这只是为了向您显示文件中其他条目的位置。您知道如何编辑 sudoers 文件吗?如果您更改了它,用户 www-data(来自互联网的人)可以执行该程序。请小心。

相关内容