[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: хост для простых сайтов на апаче



On Thu, Aug 20, 2009 at 06:33:47AM +0800, Денис wrote:
> Иван Лох пишет:
> > On Thu, Aug 20, 2009 at 04:13:16AM +0800, Денис wrote:
> >> заливать свои сайты пользователи будут через WebDAV скорее всего, ну
> >> может быть ещё через ftp. список имён-паролей тоже будет лежать у них в
> >> директории
> >>
> >> Так же у пользователей должна быть возможность заливать и запускать
> >> скрипты и прочую муру.
> >  ^^^^^^^^
> >> принадлежать все страницы будут пользователю типа www-data, видимо
> >>
> >> вопрос: как по debian way красиво разграничить этим пользователям доступ
> >> чтобы они друг-другу скриптами странички не портили? (да саму систему от
> >> этого тоже бы желательно защитить, если это возможно, конечно)
> > 
> > Со скриптами IMHO, никак. Кто помешает скрипту убить _свой_ процесс или
> > удалить _свой_ файл? 
> 
> Действительно, согласен, будем заводить юзеров

Юзеров можно завести заведомо и без описания их всех в /etc/passwd.
Одно возможное решение:
- PostgreSQL база данных
- libnss-pgsql2 чтоб "getent passwd" / getpwnam() и т.д. работали
- libpam-pgsql чтоб юзеры могут пользовать FTP и SSH
- отдельные user ID's для разных акаунтов (более чем один username
  per account, может с разными home directory и shell, но один user ID)
- все юзеры - в одной группе, скажем, hosting
- все home directories - собственость юзера и той группы
- все home directories - с правами 701, чтоб никто не смог щупать
  чужих файлов
- либо готовыми средствами, либо собственноручно создаными программами
  создать chroot-окружение для разных акаунтов; bind mount и
  recursive bind mount - полезние штуки; awk -F: '$1 < 1000' /etc/passwd
  так же.
- забыть о mod_php; завести libapache2-mod-suphp >= 0.7.1 для поддержки
  chroot-а и т.д.

Отладка libnss-pgsql2 может быть несколько досадной - nscd глючил
изрядно и в etch, и в ранных периодов testing-что-попозже-стал-lenny,
а без nscd база сорвется за минуту (while true { getent passwd }).
Но однажды отладил, потом проблем нету.

Отладка libpam-pgsql - попроще; нужно только чтобы догадаться, что
для важных услуг (FTP, SSH) нужно вообще удалить common-auth и
common-account из /etc/pam.d/*, далее просто.

Я теперь в процессе финального сглажения нескольких патчов, которые
добавляют к Apache директиву SuexecChrootDir так чтобы mod_cgi, mod_cgid
и libapache2-mod-fcgid ее использовали, и учут этих модулей чтобы
подчинялись RLimit*.  Уже используем на нашем хостинге в течение месяцев
без проблем.  Не более чем через неделю я этих патчов опубликую.

О WebDAV не знаю, никогда не пробовал, кроме через mod_dav_svn :)

Всего лучшего,
Петр

-- 
Peter Pentchev	roam@ringlet.net    roam@space.bg    roam@FreeBSD.org
PGP key:	http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint	FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
This sentence claims to be an Epimenides paradox, but it is lying.

Attachment: pgpjRtRPwGLui.pgp
Description: PGP signature


Reply to: