Как изменить права на системный каталог Linux через PHP (выполнить команды от рута)?
Здравствуйте !
Столкнулся с такой задачей - нужно с помощью PHP работать с файловой системой всего Linux сервера (сервер для экспериментов стоит в домашней локалке, за фаерволом и заточен под определённые нужды). Установленная ОС CentOS 6.7 Final, Апач 2, php работает как модуль.
Решить задачу нужно именно на PHP.
В данный момент необходимо работать с файлами в каталоге /etc/ - нужно сменить владельца и права на некоторые каталоги, выполнить копирование, бекап и тд и после этого снова вернуть первоначальные права.
Так вот - проблема в том, что апач не позволяет выполнять команды на php от рута:
shell_exec('chmod -R 777 /etc/catlib/'); - говорит недостаточно прав, нот пермиссион и тд.
Скрипты выполняются от пользователя Apache (echo exec('whoami');)
Запуск веб сервера от рута, добавление Apache в группу рута не помогают.
и всё равно не получается изменить права командой: shell_exec(' sudo chmod -R 777 /etc/catlib/');
Собственно вопрос - как решить ?
Не хочется делать ССШ соединение в скрипте само на себя и уже менять права. Что изменить в системе, чтобы дать php права рута для всего и вся ? Может в Sudo не та инструкция прописывается ?
нужно именно от судо выполнять. Безопасность не важна, это домашний сервер - там главное чтобы работало. Потом, по решению задачи буду делать как положено.
И правильно делает, поскольку это не просто костыль а мега костыль и крест на безопасности.
Могу порекомендовать вам поднять демона на отдельном порту который уже смоежт работать от рута а апачь уже будет управлять им