N
N
Netscout2016-06-06 12:30:02
linux
Netscout, 2016-06-06 12:30:02

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

3 answer(s)
Виктор Таран, 2016-06-06
@shambler81 Куратор тега Linux

И правильно делает, поскольку это не просто костыль а мега костыль и крест на безопасности.
Могу порекомендовать вам поднять демона на отдельном порту который уже смоежт работать от рута а апачь уже будет управлять им

Андрей, 2016-06-06
@VladimirAndreev

я бы сам php скрипт от root'а запускал, и всех дел.
пользователя apache/www-data добавлять в sudoers - это оч.плохая идея...

A
alegzz, 2016-06-06
@alegzz

1.

shell_exec('sudo /path/to/script');
cat /path/to/script:
#!/bin/bash
chmod -R 777 /etc/catlib/

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

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question