fopen и safe mode

clevel

Новичок
fopen и safe mode

День добрый!

Пытался самостоятльно найти ответ через поиск и чтение мануала. Не помогло. Прошу помощи у вас, гуру.

на сервере Freebsd 5.4, апача патченный (чтобы форкал под нужной юзер/группой чайлды) , Apache/1.3.27 (Unix) PHP/4.4.3 mod_ssl/2.8.12 OpenSSL/0.9.7e rus/PL30.16

Есть несколько виртуальных хостов, принцип размещения простой:
/usr/hosting/domain/html
/usr/hosting/domain2/html

в настройках вирутальных хостов для каждого из них прописана своя юзер/группа, под которой работает каждый хост. Во фрюхе, естественно, созданны соотвествующие юзер/группа для каждого.

Все работает.

Но!
Появился тут пакет файлов от maxMind. Я его поместил в папку /usr/local/share/GeoIP
и хочу, чтобы каждый хост имел к нем доступ. Для этого создаю симлинк для первого хоста:
ln -s /usr/local/share/GeoIP /usr/hosting/domain/GeoIP
chown -R -h domain:domain /usr/hosting/domain/GeoIP
У меня владельцем симлинка и файлов в нем становится нужный юзер/группа, из под которого работает данный хост.

Но! При попытке сделать fopen одного из файлов в /usr/hosting/domain/GeoIP мне начинают валится сообщения "safe mode restriction", что юзер с таким то uid пытается открыть файл, владелей которого имеет другой uid.

В конфиге апача пытался пошаманить с SymLinksIfOwnerMatch и FollowSymlinks - не помогло.

Сейчас пришлось отключить защищенный режим, чтобы обеспечить функционал, однако это не выход из ситуации. Так же как и не выход каждому хосту копировать эту папку (систематически надо обновлять базы, и каждый раз везде перезаписывать - напрягает. Ну и место тоже жалко - одна копия - минимум 100 метров).

Подскажите, как можно грамотно обойти это ограничение, сохранив при этом safe_mode и по возможности, симлинк на нужную папку.

Заранее спасибо!
 

440hz

php.ru
[offtopic]

апача патченный (чтобы форкал под нужной юзер/группой чайлды)
можно в личку или сюда поподробнее? давно хотел это реализовать.

---

по твоему вопросу я бы подмапил все это через /etc/fstab/ в нужные папки через nullfs и не парился

как-то вот так ...

/etc/fstab/:

/usr/www/wwwroot/geoip/ /usr/www/wwwroot/server1/geoip/ nullfs rw 3 0
/usr/www/wwwroot/geoip/ /usr/www/wwwroot/server2/geoip/ nullfs rw 3 0
/usr/www/wwwroot/geoip/ /usr/www/wwwroot/server2/geoip/ nullfs rw 3 0

ну и потом mount -a
 

clevel

Новичок
440hz, к сожалению у меня нет исходников этого патча (и не я правл), поэтому помочь в этом не могу.

Сейчас вышел из положения следующим образом:
1. сделал группу для виртуального хоста clevel,
2. /usr/local/share/GeoIP сделал тоже под группой clevel
3. в конфе хоста прописал php_admin_flag safe_mode_gid on и группу - clevel

Вроде все заработало.
Подскажите, насколько я ослабил защиту, введя более мягкое условие проверки не по юзеру, а по группе?
 
Сверху