[Comm] Question on FTP

Headlong John =?iso-8859-1?q?johnheadlong_=CE=C1_nightmail=2Eru?=
Пт Сен 1 13:01:57 MSD 2006


Здравствуйте.

У меня проблема возникла, не могу решить, не знаю, к кому обратиться и где
посмотреть информацию. Направьте меня, пожалуйста. Кратко опишу проблему.

У меня сервер под Линуксом для джава-разработок, дистрибутив ALT Master
2.4. Так вот, я хочу обеспечить разработчикам возможность самим деплоить
приложения на него не обладая при этом ни правами root'а ОС, ни правами
администратора сервера приложений (дает возможность, кроме деплоймента,
конфигурировать сервер приложений через веб или утилитами командной
строки). Для этого решил использовать возможность автоматического
деплоймента, когда собранные модули и приложения просто выкладываются в
определенный каталог. Решил использовать для этого FTP, чтобы не
привязываться к файловым службам, специфическим для ОС (nfs или smb).

При этом желательно сделать так, чтобы можно было ограничить возможность
перемещения пользователей FTP по файловой системе определенными участками,
а также сделать так, чтобы можно было права на проекты раздавать. Решил
использовать vsftpd из ALT Master 2.4. В результате не могу добиться того,
что мне нужно.

Сервер приложений установлен в /opt/SUNWappserver (это Sun Java System
Application Server 8.2). Сервер приложений поддерживает понятие доменов,
каждый домен, грубо говоря, - это совокупность настроек и продеплоенных
приложений. Каждый домен расположен в своем подкаталоге каталога
/opt/SUNWappserver/domains. Например, домен по умолчанию - в
/opt/SUNWappserver/domains/domain1. Для автоматического деплоймента
достаточно записать модуль или приложение в подкаталог autodeploy, можно в
распакованном виде (то есть в подкаталог проекта в каталоге autodeploy
нужного домена), что удобно с точки зрения обновления приложения и
управления доступом разных людей к разным проектам.

То есть в итоге должно получиться примерно следующее:

Домен domain1:

/opt/SUNWappserver/domains/domain1/autodeploy

Проекты в домене domain1:

каталог project1a - доступ у user1, user2
каталог project1b - доступ у user2, user3

Домен domain2:

/opt/SUNWappserver/domains/domain2/autodeploy

каталог project2a - доступ у user1, user3
каталог project2b - доступ у user4

Скажем, пользователь подключается по FTP, попадает в некий виртуальный
корневой каталог. Там, скажем, каталоги, соответствующие доменам сервера
приложений, а в них - каталоги проектов этого домена. Он может ходить
только по тем из этих каталогов и делать с ними только то, что разрешено
(на уровне файловой системы). При этом никаких других частей файловой
системы не должно быть доступно.

Так вот. Если использовать доступ под реальными пользователями, то
получается, что они могут гулять по всей файловой системе, зато можно
сделать симлинки на нужные каталоги из домашнего каталога. Если chroot'ить
их, то они будут ограничены своим домашним каталогом, а в нужные для
деплоймента каталоги не попадут никогда, и ALT Master не дает создавать
хардлинки на каталоги (у меня файловая система Ext2). chroot'ить их в
/opt/SUNWappserver/domains, естественно, я тоже не хочу, потому что мало
ли, может нужно будет предоставить по FTP доступ к какому-нибудь каталогу
за пределами ветви /opt/SUNWappserver/domains и чего?

Если использовать виртуальных пользователей, то ситуация аналогичная, но
еще ухудшается тем, что доступ к файловой системе все виртуальные
пользователи получают под одним и тем же пользователем ОС, что исключает
возможность ограничения доступа пользователей к проектам друг друга.

Что я хочу. Я хочу собрать виртуальное дерево FTP-сервера на основе
реальных каталогов, произвольно разбросанных по файловой системе, и
управлять доступом к нему для пользователей. Я хочу, чтобы структура
дерева каталогов FTP-сервера не была жестко привязана к структуре
каталогов на диске.

Подскажите, пожалуйста, куда смотреть, где читать, потому что документация
по vsftpd довольно скудная, тем более нет документации концептуального
характера.

Спасибо заранее.



Подробная информация о списке рассылки community