Назад | Перейти на главную страницу

Как мне настроить общий веб-хостинг с динамическими vhosts?

Мы создаем своего рода настройку веб-сервера общего хостинга, но все управляется веб-приложением на нашем домене, которое имеет пользователя apache по умолчанию (www-data) для доступа к файлам каждого.

У всех есть имя_пользователя, а их корневой_веб-каталог - [some_root_folder] / [user_name]

Мы создаем динамические виртуальные хосты, используя

http://httpd.apache.org/docs/2.0/vhosts/mass.html#xtra-conf

так как

[some_root_folder]/[user_name] user_name.ourdomain.com

мы делаем

chown 770 user_name:www-data -R [some_root_folder]/[user_name]

Мы не хотим создавать отдельные виртуальные хосты, потому что это требует перезагрузки apache при каждой регистрации (я спрошу ваше мнение о создании отдельных виртуальных хостов с использованием mpm-itk для другой записи).

Вопрос

Если user_michael выполняет:

<?php echo file_get_contents(‘../user_george/index.php’); ?> на user_michael.ourdomain.com/index.php

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

Итак: как www-data может изменять файлы Майкла и Джорджа, но не могут изменять файлы друг друга, учитывая настройку выше?

Перезапуск Apache после каждой регистрации, вероятно, не проблема. Видеть плавный перезапуск.

Для вашей проблемы с разрешением, если вам нужен только php и вы не хотите запускать CGI, вы можете изучить Безопасный режим PHP. Это устаревший способ, не лучший, но простой в использовании.
Другой способ - использовать suPHP для запуска скрипта php от имени пользователя user_name вместо пользователей apache.

Когда вы запускаете file_get_contents, пользователь, который читает файл ../user_george/index.php, совпадает с веб-сервером (www-data), а не владельцем файла.

Безопасный режим PHP является решением этой проблемы, но считается устаревшим. Рекомендую проверить эта серия для решений по безопасности в виртуальном хостинге.