我有一个 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”);