URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 62178
[ Назад ]

Исходное сообщение
"APACHE+MOD_PHP4+SUEXEC  -> WORK"

Отправлено unk2k , 28-Ноя-05 05:51 
Тех-характеристики
Freebsd 5.x
Apache 1.3.x
PHP 4.4.x


Задача:
Исполнение скрипта от имени заданным через модуль suexec в virtualhost.

Прошло 40 часов со момента моего пробуждения и все ради того что бы сделать mod_php4 + suexec, а не CGI PHP + suexec

Долгие поиски ничего мне не дали. И кстати многим то же, а все потому что мы не там ищем, не там мы копаем.

СТЭЕ : Технический специалист посоветовал собирать мне web-server из портов, ну я с ним в этом немного согласен, но если бы не надо было компилировать php в apache

Решение я нашел с третьего разговора с тех поддержкой одного из крупных хостинг - провайдеров СПБ (у которых я держу пару своих сайтов), дело в том что искал везде, множество провайдеров там где есть suexec то php обязательно используется через CGI и только у моего хостинг - провайдера php как модуль (вшитый в Apache)

Теоретически решение проблемы (еще не дошли руки до пробы, спать хочу)

Почему у всех не работает? Ответ просто
APACHE -> MOD_PHP4 -> SCRIPT
(suexec не может вмешаться после APACHE и после MOD_PHP4) и именно из-за этого у скрипт работает от имени APACHE
Теоретически все должно работать если сделать так
APACHE_MOD_PHP4{_MOD_SSL} -> SUEXEC -> SCRIPT


<VirtualHost +>
ServerName +
ServerAlias www.+
DocumentRoot /home/+
Options FollowSymLinks Includes MultiViews
CustomLog /home/+.log Combined
ErrorLog /home/+-error_log
CharsetSourceEnc windows-1251
User user
Group group
</VirtualHost>

Компилим апачи примерно с такими модулями

./configure \
"--with-layout=Apache" \
"--prefix=/usr/local/apache" \
"--activate-module=src/modules/php4/libphp4.a" \
"--activate-module=src/modules/standard/mod_vhost_alias.c" \
"--activate-module=src/modules/standard/mod_rewrite.o" \
"--activate-module=src/modules/standard/mod_usertrack.c" \
"--activate-module=src/modules/standard/mod_expires.c" \
"--activate-module=src/modules/extra/mod_deflate.o" \

"--activate-module=src/modules/extra/mod_limitipconn.c" \
"--with-forward" \
"--with-manyfiles" \
"--enable-suexec" \
"--suexec-caller=httpd" \
"--suexec-userdir=www" \
"--suexec-docroot=/home" \
"--enable-module=so"


Настраиваем и радуемся.

developer@fxteam.ru

*UNIX DELETANTES*


Содержание

Сообщения в этом обсуждении
"APACHE+MOD_PHP4+SUEXEC  -> WORK"
Отправлено unk2k , 28-Ноя-05 16:09 
Ага :) Работает :) Чувствую что требуется вмешательства в сорскод

"APACHE+MOD_PHP4+SUEXEC  -> WORK"
Отправлено Lucf3r , 13-Ноя-07 14:31 
Добавь в статью о том, что для того, чтобы Apache мог делать переключение юзеров в VirtualHost'ах сам Апач должен быть запущен от root'а, т.е. в httpd.conf:

User root
Group root


"APACHE+MOD_PHP4+SUEXEC  -> WORK"
Отправлено Lucf3r , 13-Ноя-07 14:45 
>Добавь в статью о том, что для того, чтобы Apache мог делать
>переключение юзеров в VirtualHost'ах сам Апач должен быть запущен от root'а,
>т.е. в httpd.conf:
>
>User root
>Group root

Да, так же забыл сказать, что новые версии Апача не дадут Вам запустить Apache под рутом, ибо это большая security vulnerability:

Error: Apache has not been designed to serve pages while
running as root.  There are known race conditions that
will allow any local user to read any file on the system.
If you still desire to serve pages as root then
add -DBIG_SECURITY_HOLE to the CFLAGS env variable
and then rebuild the server.
It is strongly suggested that you instead modify the User
directive in your httpd.conf file to list a non-root
user.