From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Headlong John To: ALT Linux Community X-Priority: 3 MIME-Version: 1.0 X-Mailer: DenMail v1.0 by ORC X-Uid: 1381502 X-RemoteIP: 81.27.49.171 (81.27.49.171) Date: Thu, 14 Sep 2006 18:18:40 +0400 Message-ID: <1158243520.26576.denwebmail-5@johnheadlong@nightmail.ru> In-Reply-To: <1157101317.3285.denwebmail-1@johnheadlong@nightmail.ru> X-DWM-In-Reply-To: <1158243520.26576.denwebmail-11-INBOX@johnheadlong@nightmail.ru> Content-type: text/plain; charset="koi8-r" Subject: Re: [Comm] Question on FTP X-BeenThere: community@lists.altlinux.org X-Mailman-Version: 2.1.9rc1 Precedence: list Reply-To: ALT Linux Community List-Id: ALT Linux Community List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Sep 2006 14:18:41 -0000 Archived-At: List-Archive: List-Post: В общем, решил проблему так. Мой /etc/vsftd.conf: anonymous_enable=NO local_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES local_root=/var/ftp chroot_local_user=YES write_enable=YES Мой /etc/xinetd.d/vsftpd: service ftp { disable = no socket_type = stream protocol = tcp wait = no user = root nice = 10 rlimit_as = 16M server = /usr/sbin/vsftpd only_from = 192.168.0.0/24 } Мой /etc/fstab: ... # Это чтобы автоматически передеплоивать целиком приложение (ear) или модуль (war, ejb-jar) /opt/SUNWappserver/domains/domain1/autodeploy /var/ftp/domain1/autodeploy none rw,bind 0 0 Права на домен назначил так: [root@server-java john]# cd /var/ftp [root@server-java ftp]# ls -la total 3 drwxr-xr-x 3 root vsftpd 1024 Sep 14 16:50 . drwxr-xr-x 21 root root 1024 Sep 14 16:48 .. drwxr-xr-x 5 root vsftpd 1024 Sep 14 19:33 domain1 Для работы над проектом создаю группу, соответствующую имени проекта, например library, включаю туда пользователей-разработчиков проекта. Далее в каталоге домена создаю пустой файл, соответствующий имени файла приложения или модуля с проектом, и назначаю ему права, например для проекта library: [root@server-java ftp]# cd domain1 [root@server-java domain1]# ls -la total 3 drwxr-xr-x 3 root vsftpd 1024 Sep 14 21:51 . drwxr-xr-x 5 root vsftpd 1024 Sep 14 19:33 .. drwxr-xr-x 2 root root 1024 Sep 14 20:05 .autodeploystatus -rw-rw---- 1 root library 0 Sep 14 20:05 library.ear После этого через FTP разработчики могут обновлять свои и только свои проекты. И они могут перемещаться только по той части файловой системы, которая расположена в /var/ftp с учетом примонтированных частей (после подключения они попадают в /var/ftp). Удалять и создавать проекты они не могут. В результате получил примерно то, что хотел :-) Единственное, что не получилось сделать как я хотел, так это предоставить возможность работать с проектом в распакованном виде. Дело в том, что сервер приложений распаковывает продеплоенное приложение в подкаталог каталога /opt/SUNWappserver/domains/домен/applications/j2ee-apps, а продеплоенный модуль - в подкаталог каталога /opt/SUNWappserver/domains/домен/applications/j2ee-modules, имя которого соответствует имени приложения или модуля. Например, приложение library.ear будет распаковано в /opt/SUNWappserver/domains/домен/applications/j2ee-apps/library. Проблема же в том, что при передеплойменте этот каталог удаляется и создается заново и для него устанавливается владелец и права доступа в соответствии с глобальными настройками (у меня это root:root и 755 соответственно), учесть права доступа на уровне участников разных проектов тут не получается :-( Что же касается каталога /opt/SUNWappserver/domains/домен/autodeploy, то сюда можно записывать только приложения или модули в виде архивов ear или war, ejb-jar соответственно. > У меня сервер под Линуксом для джава-разработок, дистрибутив 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, попадает в некий виртуальный > корневой каталог. Там, скажем, каталоги, соответствующие доменам сервера > приложений, а в них - каталоги проектов этого домена. Он может ходить > только по тем из этих каталогов и делать с ними только то, что разрешено > (на уровне файловой системы). При этом никаких других частей файловой > системы не должно быть доступно.