![CentOS 7 Apache 以 root 用户身份运行/执行 Web 请求](https://linux22.com/image/1567110/CentOS%207%20Apache%20%E4%BB%A5%20root%20%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%2F%E6%89%A7%E8%A1%8C%20Web%20%E8%AF%B7%E6%B1%82.png)
我有一个 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”);