Как выполнить sh скрипт из PHP, который создаст место, юзера на сервере и загрузит MODx

Здравия всем.

Вопрос скорее всего будет направлен к Василию, однако буду благодарен и тем, кто готов помочь. :)

Решил сделать для себя небольшую панельку, как у Василия на хостинге. Столкнулся с траблой. Как я понял, запускать shell скрипт (который бы создавал место для сайта и заливал modx) нужно от рута или от пользователя, который имеет доступ ко всем нужным каталогам и т.д. Проблема в том, что я не могу понять, как это сделать. С трудом удалось через PHP запустить тестовый sh скриптик и передать в него нужный аргумент.

Василий и все, кто может помочь. Будьте добры, объясните, как можно запустить скрипт от рута из под PHP, либо дать пользователю все необходимые права на выполнение скрипта, который бы создавал место, пользователя и заливал modx? БлагоДарю.

P.S.: Сервер настроен по инструкции Василия. За что ему огромная благодарность!!!
Пашок
02 апреля 2015, 19:44
modx.pro
3
1 958
0

Комментарии: 5

Ivan Shvindin
02 апреля 2015, 23:16
+1
Насколько я понимаю, у Василия запущен демон на питоне, который имеет необходимые права и в него зашит весь функционал. Он слушает сокет от панельки и принимает команды, поэтому с безопасностью полный порядок.
    Alexei
    03 апреля 2015, 00:19
    +2
    я сделал это на nodejs. Тоже по примеру Василия, не знаю как в пхп, но у себя разбил скрипт на куски, и выполнял команды по очереди, с необходимыми параметрами. Процесс выполняется из под рута, в конце действия через chown все файлы и папки назначаются созданному юзеру.

    PS. качество видео плохое, первый раз снимал…
      Алексей
      04 апреля 2015, 07:22
      0
      круто круто. можно по-подробнее, каким образом реализовано?
      Василий Наумкин
      03 апреля 2015, 04:41
      1
      +4
      как можно запустить скрипт от рута из под PHP, либо дать пользователю все необходимые права на выполнение скрипта
      Сервер настроен по инструкции Василия.
      Основной смысл моей инструкции именно в том, чтобы не давать сайтам дополнительных прав. Каждый сайт запускается из под своего пользователя и он имеет доступ только к своим файлам.

      А теперь представь, что если бы существовал способ делать так, как ты хочешь? Выходит, что любой сайт мог бы выполнять команды от root и в чем тогда защита? Злоумышленник ломает сайт и получает доступ ко всему серверу, ко всем сайтам и файлам.

      Так что, ответ прост — это невозможно.

      Процесс, который создаёт сайты должен работать не как обычный сайт. Это или отдельный демон на Python, как у нас на хостинге, или отдельный процесс на PHP, но запущенный от root и защищенный по IP от случайного коннекта. Или просто консольные скрипты, как в моей инструкции.

      Когда я делал тестовые сайты, там использовались именно эти скрипты, которые запускались по расписанию раз в n минут.
      То есть, юзер заходил на обычный сайт, заказывал себе тест, запрос сохранялся в БД, а сервер уже раз в 10 минут от root запускал скрипт, который проверял заказы в БД, создавал тестовые сайты и отправлял на email уведомления об этом.

      Ты можешь сделать так же.
        Пашок
        Пашок
        03 апреля 2015, 20:43
        0
        Спасибо, Василий, за подробное объяснение!
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        5