Ну вот написал я себе в httpd.conf:
RewriteEngine on
RewriteMap lowercase int:tolower# define the map file
RewriteMap vhost txt:/usr/local/www/vhost.map# deal with aliases as above
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
# this does the file-based remap
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/docs/$1RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/cgi-bin/$1А в /usr/local/www/vhost.map:
www.def.gm.lan /var/spool/datamail/gm.lan/def/ftpСогласовал привилегии доступа и т.д. И всё заработало. Могу создав юзверя с почтовым я щиком и ftp доступом и виртуальным хостингом заполнив однк форму и всё!!!
Но вот вылезла другая фигня. Через php или cgi я могу добраться к любому файлу своей системы.... Сами понимаете - не хорошо это.
И честно говоря не могу даже представить себе как это запретить.... 8((
Может поделитесь опытом, или а мысль натолкнёте?
Поднимаешь apache, perl и другие необходимые хостерам программы в chroot.
Делаешь /chroot и в качетсве homedir у юзеров приписываешь /chroot/home.
Периодически копируешь mail-spool из chroot в реальный спул (для того чтобы из скриптов могли почту рассылать) и синхринизируешь /etc/passwd (без паролей) в chroot окружение (для работы suexec). ftpd запускаешь не из под chroot, но с настройкой (например в vsftpd) или патчем затавляющийм сразу делать chroot в хоме юзера, чтобы юзер не видел ничего лишнего.
>Поднимаешь apache, perl и другие необходимые хостерам программы в chroot.
>Делаешь /chroot и в качетсве homedir у юзеров приписываешь /chroot/home.
>Периодически копируешь mail-spool из chroot в реальный спул (для того чтобы из
>скриптов могли почту рассылать) и синхринизируешь /etc/passwd (без паролей) в chroot
>окружение (для работы suexec). ftpd запускаешь не из под chroot, но
>с настройкой (например в vsftpd) или патчем затавляющийм сразу делать chroot
>в хоме юзера, чтобы юзер не видел ничего лишнего.Да! Но при этом получается, что такая вот такой вот скриптик:
#!/usr/bin/perl
open (f, "</chroot/home/pupkin/docs/index.php");
while (<f>)
{
print;
}
close f;примило даст на чтение всё что надо юзверю не "pupkin"-у....
В принципе тот же фтп можно заставить создавать файлы с одним пермишеном типа 700 но тогда апач не сможет работать.....
Вот ведь в чём дело!!!!
>Да! Но при этом получается, что такая вот такой вот скриптик:
>#!/usr/bin/perl
>open (f, "</chroot/home/pupkin/docs/index.php");не /chroot/home/pupkin/docs/index.ph, а /home/pupkin/docs/index.ph апач в chroot'е вместе со всеми скриптами.
>примило даст на чтение всё что надо юзверю не "pupkin"-у....
А права нормальные на директории пользователей совесть не позволяет ?
Ставь оунером юзера, а группу web севрера - чтобы статику отдавать мог. Скрипты чужих юзеров туда доступ не получат так как скрипты запускаются через suexec, т.е. под UID текущего пользователя.
drwx--x--- 4 pupkin web 4096 Дек 23 2001 pupkin
>>Да! Но при этом получается, что такая вот такой вот скриптик:
>>#!/usr/bin/perl
>>open (f, "</chroot/home/pupkin/docs/index.php");
>
>не /chroot/home/pupkin/docs/index.ph, а /home/pupkin/docs/index.ph апач в chroot'е вместе со всеми скриптами.
>
>>примило даст на чтение всё что надо юзверю не "pupkin"-у....
>
>А права нормальные на директории пользователей совесть не позволяет ?
>Ставь оунером юзера, а группу web севрера - чтобы статику отдавать мог.
>Скрипты чужих юзеров туда доступ не получат так как скрипты запускаются
>через suexec, т.е. под UID текущего пользователя.
>drwx--x--- 4 pupkin
>web
>4096 Дек 23 2001 pupkin
Угу! и при этом каждому юзверю всё равно будет доступна на чтение /home/pupkin/docs/index.php так как у него група web.
А если сдеть так что бы он не смог читать чужое то и апач не сможет.
Единственный выхот на мой взгляд - это пускать всё (даже php) под uid&gid конкретного юзверя, а вот как это сделать?????
>Угу! и при этом каждому юзверю всё равно будет доступна на чтение
>/home/pupkin/docs/index.php так как у него група web.Юзер не в группе WEB, в группе WEB твой apache. Соответсвтенно все, что запускается под UID/GID юзера доступ к чужим директориям никак получить не может, apache же будет прекрасно отдавать статику от всех юзеров. Это касается cgi-скриптов запущенных из-под suexec и .php файлов обработанных mod_php с включенным safe_mode.
>Единственный выхот на мой взгляд - это пускать всё (даже php) под
>uid&gid конкретного юзверя, а вот как это сделать?????suexec + safe_mode в mod_php.
>>Угу! и при этом каждому юзверю всё равно будет доступна на чтение
>>/home/pupkin/docs/index.php так как у него група web.
>
>Юзер не в группе WEB, в группе WEB твой apache. Соответсвтенно все,
>что запускается под UID/GID юзера доступ к чужим директориям никак получить
>не может, apache же будет прекрасно отдавать статику от всех юзеров.
>Это касается cgi-скриптов запущенных из-под suexec и .php файлов обработанных mod_php
>с включенным safe_mode.
>
>
>>Единственный выхот на мой взгляд - это пускать всё (даже php) под
>>uid&gid конкретного юзверя, а вот как это сделать?????
>
>suexec + safe_mode в mod_php.
Хмм...
Надо будет покопать на тему suexec + safe_mode в mod_phpСенкс. Если что то отрапортую.... 8))
А поставить группу и юзера pupkin/pupkin и пермишны 770 на хоумдир пупкина и включить в группу pupkin юзера апача идеология не позволяет? Да, естественно никаких mod_php - только php as cgi. И это - правильно, т.к. нельзя поставить лимитов на деток апача - соответственно ты никак mod_php лимитировать не сможешь.