
У меня есть PHP-утилита, которая принимает запрос post с файлом в качестве параметра. Теперь, когда этот запрос получен, я хочу выполнить его как пользователь root. Например, когда пользователь нажимает www.mydomain.com/sendtextfiletoftp.php из postman или любого другого инструмента, он должен быть выполнен как пользователь 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'. Обычно:
В визуду я бы написал что-то вроде
apache ALL=NOPASSWD: /path/my_root_command
В моем коде /var/www/html/sendtextfiletoftp.php для той части, которая требует доступа root, я бы добавил что-то вроде:
exec("sudo /path/my_root_command");