У меня есть PHP-утилита, которая принимает пост-запрос с файлом в качестве параметра. Теперь, когда этот запрос получен, я хочу выполнить его как пользователь 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 из командной строки (sudo php72 /path/to/file/sendtextfiletoftp.php), работает нормально.

Спасибо вам за помощь.

1 ответ1

0

Помимо того, что пользователь apache может стать пользователем команды root, вам необходимо выполнить вызов внутри своего кода, который включает в себя «sudo». Как правило:

В Visudo я бы поставил что-то вроде

apache ALL = NOPASSWD: /path /my_root_command

В моем /var/www/html/sendtextfiletoftp.php коде для конкретной части, требующей root-доступа, я бы добавил что-то вроде:

exec("sudo /path /my_root_command");

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .