[Comm] PHP: Виртуальный хостинг
Прокопьев Евгений
=?iso-8859-1?q?john_=CE=C1_rmts=2Edonpac=2Eru?=
Вс Ноя 23 12:59:41 MSK 2003
Здравствуйте!
Необходимо организовать виртуальный хостинг для PHP, пользователям
которого требуется:
1. Возможность исполнять php-скрипты от своего имени, а не от имени
пользователя apache
2. Возможность творить в своем домашнем каталоге (и только в нем)
средствами php все что угодно (удалять и создавать каталоги, файлы).
Первая задача легко решается средствами suexec и использованием php в
виде cgi (это единственное решение?). В этом случае приходится создавать
виртуальный хост следующего вида:
<VirtualHost 192.168.1.1>
User web1
Group webusers
ServerName web1.athlon.home
DocumentRoot /home/web1/web
ScriptAlias /bin/ "/home/web1/web/bin/"
AddType appication/x-httpd-php .php
Action appication/x-httpd-php /bin/php
</VirtualHost>
Структура каталогов пользователя web1 и права доступа в этом случае
выглядят так:
# ls -l /home/
total 866
...
drwxr-xr-x 5 web1 webusers 208 Nov 22 14:17 web1
# ls -l /home/web1/
total 1
drwx------ 7 web1 webusers 224 Nov 22 14:08 tmp
drwxr-xr-x 3 web1 webusers 136 Nov 22 14:08 web
# ls -l /home/web1/web/
total 9
drwxr-xr-x 2 web1 webusers 96 Nov 22 11:02 bin
-rw-r--r-- 1 web1 webusers 207 Nov 22 14:13 index.html
-rw-r--r-- 1 web1 webusers 17 Nov 22 11:36 index.php
# ls -l /home/web1/web/bin/
total 1300
-rwxr-xr-x 1 web1 webusers 1293658 Nov 22 11:02 php
-rw-r--r-- 1 web1 webusers 36754 Nov 22 11:02 php.ini
И вот такое решение не дает решить вторую задачу, а именно, ограничить
пользователя web1 своим каталогом, запретив ему средствами php читать
чужие файлы (или хотя бы файлы пользователей web2 и web3, у которых
структура каталогов и описание хоста аналогичны).
Если выставить для домашних каталогов пользователей права rwx------, то
при обращении к любому файлу витруального хоста получаем "You don't have
permission to access /index.php on this server".
Если включить safe_mode=on в php.ini, то очевидно, что никто не помешает
пользователю выключить его, то же касается любых вариантов ограничить
действия пользователя средствами php. Чтобы пользователь не смог
модифицировать php.ini или бинарник php, необходимо сделать владельцем
его домашего каталога другого пользователя - тем самым мы сломаем suexec.
Что остается?
--
С уважением, Прокопьев Евгений
Подробная информация о списке рассылки community