LinuxDoc.ru - Обмен опытом - Организация запуска скриптов пользователя на APACHE

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

LinuxDoc.Ru,
Описание задачи

При организации виртуального хостинга одним из краеугольных камней в данном вопросе является делегирование прав постороннему пользователю - "хозяину хоста". Самое простое дать ему права на то чтобы он смог заливать информацию через 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.
Цель достигнута - можно работать :)
{keyw}

Обмен опытом

. Организация запуска скриптов пользователя на APACHE Организация запуска скриптов пользователя на APACHE
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Если Вы обнаружите в опубликованных документах ошибки, опечатки, несоответствия и неточности - сообщите о них.


Редакция портала:

Добро пожаловать на сайт, посвященный документации к ОС Linux, ее переводу и распространению. Мы надеемся, что Вы найдете тут всю необходимую информацию. Здесь представлены три основных вида документации на русском языке: руководства (man-pages), HOWTO и mini-HOWTO. В скором будущем возможно появление и других видов документации.
Авторские права на представленные документы принадлежат авторам перевода и распространяются в соответствии со Стандартной Общественной Лицензией, если в документе не указано обратное.
Если Вы обнаружите в опубликованных документах ошибки, опечатки, несоответствия и неточности - сообщите о них.