Задать вопрос
@Netscout

Как изменить права на системный каталог 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 в группу рута не помогают.

Вспомнил про SUDO, сделал следующее:

открыл: /etc/sudoers
добавил: apache ALL=NOPASSWD: /path/to/script

и всё равно не получается изменить права командой: shell_exec(' sudo chmod -R 777 /etc/catlib/');

Собственно вопрос - как решить ?
Не хочется делать ССШ соединение в скрипте само на себя и уже менять права. Что изменить в системе, чтобы дать php права рута для всего и вся ? Может в Sudo не та инструкция прописывается ?

Спасибо за ответ !
  • Вопрос задан
  • 434 просмотра
Подписаться 3 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 3
shambler81
@shambler81 Куратор тега Linux
И правильно делает, поскольку это не просто костыль а мега костыль и крест на безопасности.
Могу порекомендовать вам поднять демона на отдельном порту который уже смоежт работать от рута а апачь уже будет управлять им
Ответ написан
Комментировать
VladimirAndreev
@VladimirAndreev
php web dev
я бы сам php скрипт от root'а запускал, и всех дел.
пользователя apache/www-data добавлять в sudoers - это оч.плохая идея...
Ответ написан
@alegzz
1.
shell_exec('sudo /path/to/script');
cat /path/to/script:
#!/bin/bash
chmod -R 777 /etc/catlib/

2. поставить incron, создавать в пхп файл, прописать на создание файла запуск скрипта
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 20:40
10000 руб./за проект
22 дек. 2024, в 20:34
3000 руб./за проект
22 дек. 2024, в 20:12
10000 руб./за проект