Задача: требуется исполнить нечто (например /etc/init.d/apache2 restart) от имени рута (пароль есть) через php страницу. Видилось решение типа shell_exec("su -l root && RootPass && /etc/init.d/apache2 restart"); Не работает, хотя непонятно почему. Весь интернет облазил - везде советуют почитать sudo man и использовать его. Я в недоумении. Неужели безопаснее дать права www-data на запуск такой популярной команды и ждать, что какой-нибудь умелец найдет способ запускать её же через одну из многих тысяч страниц на сайте (например через какую-нибудь дырку, например в джумле), чем хранить пароль рута пусть и в открытом виде, но в скрипте, путь к которому никто не знает, защищенном .htaccess, и исполнять в нем su? И как правильно воспользоваться именно su?
может быть нельзя su этому пользователю, под которым работает пхп. нужно его внести в список судоеров. или хотя бы почитать ответ системы на эту команду.
shell_exec не возвращает ничего. Если запускать скрипт из под ssh, То вываливается сообщение Password: Мне кажется проблема лишь в синтаксисе. Если пароль ввести в ручную то su выполняется. Вопрос в том, можно ли в одной строке передать su пароль пользователя? shell_exec("su -l root\nRootPass"); не работает, так же запрашивает пароль. Уже писал - это решение предлагается везде, но лично мне кажется гораздо более опасным.