Добавить в избранное | Сделать стартовой страницей

Большая Linux библиотека для пользователей OS Linux и ПО для нее
Есть что сказать? Нужен совет? Посети наш форум.


При поддержке
Продвижение сайта
Продвижение сайта
Раскрутка сайта
Создание сайта
Оптимизация сайта
Интернет реклама
Аудит сайта
Администрирование сервера
настройка сервера
установка сервера
аренда сервера
Администрирование сервера
администрирование сервера
настройка сервера
аренда сервера
Rambler's Top100


Организация запуска скриптов пользователя на APACHE.

Описание задачи

При организации виртуального хостинга одним из краеугольных камней в данном вопросе является делегирование прав постороннему пользователю - "хозяину хоста". Самое простое дать ему права на то чтобы он смог заливать информацию через ftp. С HTML проблем не возникает, но как быть с тем чтобы разрешить выполнение скриптов. Очевидным решением - использование встроенной в APACHE функции suEXEC
Так как в качестве системы используется ASPLinux, то и APACHE используем их же сборки. Документацию по suEXEC в APACHE можно найти здесь.

Подготовка

После изучения документации выясняем, что если APACHE собран с поддержкой suEXEC - это отображается в логах.

Проверяем:
[root@ns logs]# cat error_log | grep suEXEC

Если есть, должны увидеть нечто подобное:

[Sun Jul 28 04:02:19 2002] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)

По логу видно что проживает suEXEC по адресу /usr/sbin/
но "точность никогда не бывает лишней" и поэтому проверим:

[swan@ns swan]$ whereis suexec

имеем:

suexec: /usr/sbin/suexec /usr/share/man/man8/suexec.8.gz

проверим его работоспособность:

[swan@ns swan]$ su
Password:
[root@ns swan]# /usr/sbin/suexec -V
Внимание от имени обычного пользователя он не запустится

-D DOC_ROOT="/var/www"
-D GID_MID=100
-D HTTPD_USER="apache"
-D LOG_EXEC="/var/log/httpd/suexec_log"
-D SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D UID_MID=100
-D USERDIR_SUFFIX="public_html"


Результат выполнения команды указывает на то, что suexec жив и с какими дирректориями(каталогами) он будет работать

Важно

Проблема может возникнуть если скрипты выполняются в тех виртуальных хостах, для которых определены конкретные пользовател(ь|и) и групп(а|ы) в разделе конфигурационного файла:

VirtualHost
user
group
........

скрипты не выполняются, даже самые простые, если documentroot не является подкаталогом в пути, который указан переменной "DOC_ROOT"

Что бы этого не произошло скрипты необходимо разместить, например, в /var/www/.../cgi-bin/

Тест

Создадим простой скрипт: test.bash

echo Content-type: text/html
echo
echo
whoami

Прописываем в конфигруации APACHE в разделе
VirtualHost
user
group

запускаем браузер http://Виртуальный хост/cgi-bin/test.bash
В результате выполнения мы увидим имя пользователя - от имени которого он выполнился, а не от имени apache.
Цель достигнута - можно работать :)


Обсудить данную тему на нашем форуме "Все о Linux"