Date: Wed, 04 Dec 2002 16:40:42 +0500
From: Victor Wagner <vitus@communiware.ru>
Newsgroups: ftn.ru.perl
Subject: Методы организации массового хостинга
A> Интересно, что в различной литературе особо подчеркивается,
A> что в случае cgi-скриптов они всегда исполняются не от
A> имени владельца файла скрипта, а с правами пользователя
A> 'nobody', и использование SUID скриптов является делом
A> чрезвычайно небезопастным.
Потому что различная литература написана не для админов массовых
хостингов.
A> Hа самом же деле, оказывается, что на 'массовых хостингах'
A> все скрипты фактически исполняются со столь широкими
A> полномочиями владельца скрипта?
Хитрость заключается в том, что на массовых хостингах требуется
в первую очередь разграничить полномочия МЕЖДУ пользователями.
Т.е. скрипт выложенный на сервер юзером vasya должен уметь работать
(и читать, и писать) с какими-то данными юзера vasya, но не должен
иметь доступа к данным юзера petya и наоборот.
Поэтому недопустимо чтобы скрипты обоих этих юзеров выполнялись
из-под одного пользователя.
Если пользователь vasya поставил себе глючный скрипт, который взломали и
попортили его данные - он сам себе дурак. А если админ позволил юзеру
petya намерено написать такой скрипт, котоорый портит данные юзера
vasya и у юзера vasya нет никакой возможности от этого защититься,
потому что от этого перестанут работать его собственные скрипты, то
виноват админ.
По хорошему счету для каждого юзера нужно заводить двух системных
пользователей - одного, который имеет право выкладывать на сервер файлы,
а другого, от имени которого выполняются скрипты, и объединять их в
группу, чтобы тот, который выкладывает файлы, мог дать право скриптам
писать в определенные файлы (скажем сохранять реплики, запощенные в
форум) или читать из них (скажем пароли к базе данных).
Hо что-то я не знаю ни одного хостинга, где бы с этим заморачивались.
Реально попадались три варианта
1. Все скрипты из-под одного юзера (www)
2. Скрипты каждого юзера выполняются от его имени, и от этого же имени
выкладываются на сервер его данные
3. Каждому юзеру по виртуальной машине.