
我有一個 PHP 實用程序,它接受以文件作為參數的 post 請求。現在,當收到該請求時,我想以 root 使用者身分執行它。例如,當使用者從郵差或任何其他工具點擊 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 php72 /path/to/file/sendtextfiletoftp.php
)以 sudo 使用者身份執行相同的檔案時,效果很好。
感謝您的協助。
答案1
除了允許 apache 使用者成為命令的 root 之外,您還需要在程式碼中進行包含「sudo」的呼叫。通常:
在 visudo 中我會放一些類似的東西
apache ALL=NOPASSWD: /path/my_root_command
在我的 /var/www/html/sendtextfiletoftp.php 程式碼中,對於需要 root 存取權的特定部分,我會新增以下內容:
exec("sudo /path/my_root_command");