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 [email protected] [email protected] [email protected]
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.
pgpeVCegzg8nJ.pgp
Description: PGP signature

