CentOS 7 Apache はルートユーザーとして Web リクエストを実行します

CentOS 7 Apache はルートユーザーとして Web リクエストを実行します

ファイルをパラメータとして 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");

関連情報