CentOS 7 Apache запускає / виконує веб-запит як користувач root


0

У мене є утиліта 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), працює нормально.

Дякую за допомогу.


Веб-сервер фактично не виконує ці файли; він читає їх, а потім модуль PHP запускає код всередині.
Ігнасіо Васкес-Абрамс

Відповіді:


0

Окрім того, щоб дозволити користувачу apache стати корінним для команди, вам потрібно здійснити виклик у вашому коді, який включає "sudo". Зазвичай:

У візуально я б поставив щось подібне

apache ALL = NOPASSWD: / path / my_root_command

У моєму /var/www/html/sendtextfiletoftp.php-коді, для конкретної частини, яка потребує кореневого доступу, я б поставив щось на кшталт:

exec ("sudo / path / my_root_command");


Дякую, EI_Tel, що таке my_root_command? Я використовую shell_exec (), це буде робити?
харніш

Це може бути сценарій оболонки або системний виклик. Я не пробував цього, але, мабуть, це може бути фрагмент php-коду
El_Tel

Я зробив це , але не працює
Харніш

Я мав належний вигляд, і це працює. Я написав невеликий скрипт оболонки до хвоста / var / log / mesages, який потребує доступу до root або sudo
El_Tel

$ cat /usr/local/bin/taillog.sh #! / bin / bash tail / var / log / messages
El_Tel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.