CentOS 7 Apache 以 root 用户身份运行/执行 Web 请求

CentOS 7 Apache 以 root 用户身份运行/执行 Web 请求

我有一个 PHP 实用程序,它接受以文件为参数的发布请求。现在,当收到该请求时,我想以 root 用户身份执行它。例如,当用户从 postman 或任何其他工具点击 www.mydomain.com/sendtextfiletoftp.php 时,它应该以 root 用户身份执行。

我已经厌倦了sudo visudo将以下几行添加到 sudoers 文件,但请求仍然以 apache 用户执行

www-data ALL=NOPASSWD: /var/www/html/sendtextfiletoftp.php

apache ALL=NOPASSWD: /var/www/html/sendtextfiletoftp.php

当以 sudo 用户身份从命令行执行时()​​同一个文件可以sudo php72 /path/to/file/sendtextfiletoftp.php正常工作。

感谢您的帮助。

答案1

除了允许 apache 用户成为命令的 root 之外,您还需要在代码中进行包含“sudo”的调用。通常:

在 visudo 中我会放类似

apache ALL=NOPASSWD: /path/my_root_command

在我的 /var/www/html/sendtextfiletoftp.php 代码中,对于需要 root 访问权限的特定部分,我会放入类似以下内容:

执行(“sudo /path/my_root_command”);

相关内容