• Записи 162
  • Теги 66
  • Комментарии 330

Компьютерное

Настройка suexec под Debian

Недавно потребовалось на своем VDS с Debian 7 создать отдельного пользователя и предусмотреть для него возможность запуска скриптов от его имени. Как выяснилось, это не особо сложно:


для начала включаем модули cgi и suexec в Apache:


# a2enmod cgi suexec

и прописываем в конфигурационном файле сайта директиву SuexecUserGroup, а также указание на необходимость обработки файлов .py (в моем случае требовалось разрешить скрипты на python):


<VirtualHost *:80>
ServerName test.ru
SuexecUserGroup user1 user1
Options +ExecCGI
AddHandler cgi-scipt .py
....
</VirtualHost>

Однако если перезапустить Apache сейчас, он выдаст предупреждение "SuexecUserGroup directive requires SUEXEC wrapper.". Чтобы все заработало, нужно установить пакет apache2-suexec-custom. (Тут я сначала допустил ошибку, поставив простой apache2-suexec — у него нет возможности изменять docroot, и он будет позволять запускать скрипты только из /var/www, а на остальные ругаться "command not in docroot".)


# apt-get install apache2-suexec-custom

Далее открываем файл /etc/apache2/suexec/www-data и прописываем там путь (в моем случае это что-то вроде /home/user1/test.ru). Далее остается только перезапустить Apache:


# service apache2 restart

и не забыть проставить проставить корректные разрешения на исполняемом файле (а также то, что для корректной работы скрипты нужно грузить в ASCII-режиме).

1 комментарий:

MadTechGuy
0

Похожую, но немного другую задачу выполняет apache2-mpm-itk — он запускает рабочие процессы от пользователя, указанного в конфигурации виртуального хоста. Пример:

<VirtualHost *:80> ... AssignUserId phpmyadmin phpmyadmin ... </VirtualHost>


А ещё есть модуль AppArmor для Apache (пакет libapache2-mod-apparmor), который позволяет применять профили AppArmor к виртуальным хостам, что фактически позволяет создавать для каждого сайта изолированную среду, так называемую "песочницу".

Ещё есть PAM-модуль аутентификации libpam-apparmor. Если всё сделать правильно, то можно позволить пользователям сайтов логиниться по SSH. Также нужно помнить про cgroups, который позволяет защитить хост от локальных DoS-атак и cron, который всё равно будет запускать пользовательские процессы, не применяя к ним профили AppArmor (решения я пока не нашёл).
Написать комментарий


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