Answer the question
In order to leave comments, you need to log in
How to change permissions on Linux system directory via PHP (run commands as root)?
Здравствуйте !
Столкнулся с такой задачей - нужно с помощью PHP работать с файловой системой всего Linux сервера (сервер для экспериментов стоит в домашней локалке, за фаерволом и заточен под определённые нужды). Установленная ОС CentOS 6.7 Final, Апач 2, php работает как модуль.
Решить задачу нужно именно на PHP.
В данный момент необходимо работать с файлами в каталоге /etc/ - нужно сменить владельца и права на некоторые каталоги, выполнить копирование, бекап и тд и после этого снова вернуть первоначальные права.
Так вот - проблема в том, что апач не позволяет выполнять команды на php от рута:
shell_exec('chmod -R 777 /etc/catlib/'); - говорит недостаточно прав, нот пермиссион и тд.
Скрипты выполняются от пользователя Apache (echo exec('whoami');)
Запуск веб сервера от рута, добавление Apache в группу рута не помогают.
Вспомнил про SUDO, сделал следующее:
открыл: /etc/sudoers
добавил: apache ALL=NOPASSWD: /path/to/script
и всё равно не получается изменить права командой: shell_exec(' sudo chmod -R 777 /etc/catlib/');
Собственно вопрос - как решить ?
Не хочется делать ССШ соединение в скрипте само на себя и уже менять права. Что изменить в системе, чтобы дать php права рута для всего и вся ? Может в Sudo не та инструкция прописывается ?
Спасибо за ответ !
Answer the question
In order to leave comments, you need to log in
И правильно делает, поскольку это не просто костыль а мега костыль и крест на безопасности.
Могу порекомендовать вам поднять демона на отдельном порту который уже смоежт работать от рута а апачь уже будет управлять им
я бы сам php скрипт от root'а запускал, и всех дел.
пользователя apache/www-data добавлять в sudoers - это оч.плохая идея...
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question