
ファイルをパラメータとして POST リクエストを受け入れる PHP ユーティリティがあります。そのリクエストを受信したら、それを root ユーザーとして実行します。たとえば、ユーザーが postman またはその他のツールから www.mydomain.com/sendtextfiletoftp.php にアクセスすると、root ユーザーとして実行される必要があります。
sudoersファイルに以下の行を追加してみましたがsudo visudo
、それでもリクエストは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 ユーザーがコマンドのルートになれるようにするだけでなく、コード内で 'sudo' を含む呼び出しを行う必要があります。通常、次のようになります。
visudoでは次のように記述します
apache ALL=NOPASSWD: /path/my_root_command
私の /var/www/html/sendtextfiletoftp.php コードでは、ルート アクセスが必要な特定の部分に次のようなコードを記述します。
exec("sudo /path/my_root_command");