ProFTPd为不同的用户创build不同的虚拟主机

我对ProFTPd服务器是全新的,我真的不知道如何configuration我所需要的。 我想对虚拟服务器和每个目录规则有一些解释。

我正在运行Debian Debian Linux 6.0.7(Squeeze)和ProFTPd版本1.33。

我需要的是,2个不同的用户(假设我已经在服务器上创build了Unix用户ftpuser1ftpuser2 )可以通过FTP访问2个不同的文件夹(ftpser1 /var/ftpfolder2/var/ftpfolder2 ftpuser2 )。

我的意思是,如果ftpuser1通过FTP(例如FileZilla客户端)连接到我的服务器,他必须只能访问文件夹/var/ftpfolder1 (对用户“2”相同)。 他们无法看到服务器中的任何其他文件夹。

我认为最好的办法是给这两个用户两个不同的URL指向相同的IP(同一台服务器),即。 ftpsite1.domain.com用于ftpuser1ftpsite2.domain.com用于ftpuser2
所以我试图为用户1创build一个虚拟服务器,另一个用户2在这个主题上search互联网上的一些教程,但是我无法达到我想要的结果。 我也试过configurationper-directory指令没有任何成功。 问题是用户能够通过FTP连接到服务器,但他们只能看到他们的HOME文件夹,而不是我想要的文件夹。

在这里你会发现我尝试的configuration。

我也想从你的理解虚拟服务器和每个目录指令之间的区别。 我的意思是:我想像的是类似于Apache可以做的东西…但我真的不能完全理解如何正确configuration它们。

谢谢。

尝试目录configuration

ftpuser1

 <Directory /var/ftpfolder1> <Limit ALL> DenyAll </Limit> <Limit ABOR APPE LIST MLSD NLST NOOP OPTS REST STOR PASS FEAT PWD USER CWD> DenyAll AllowUser ftpuser1 </Limit> </Directory> 

ftpuser2

 <Directory /var/ftpfolder2> <Limit ALL> DenyAll </Limit> <Limit ABOR APPE LIST MLSD NLST NOOP OPTS REST STOR PASS FEAT PWD USER CWD> DenyAll AllowUser ftpuser2 </Limit> </Directory> 

尝试虚拟服务器configuration

ftpuser1

 <VirtualHost ftpsite1.domain.com> ServerName "FTP for user 1" #Port 21 #Umask 027 <Limit LOGIN> DenyAll AllowUser ftpuser1 </Limit> <snt_ftp /var/ftpfolder1> User ftpuser1 Group proftpdusers UserAlias ftpuser1 <Limit LOGIN> AllowAll </Limit> <Limit WRITE> DenyAll AllowUser ftpuser1 </Limit> </snt_ftp> </VirtualHost> 

你不需要任何幻想的东西。 所有你需要做的就是将他们的HomeDir设置为不同的东西,然后通过在你的configuration中设置DefaultRoot ~使用chroot。 当每个用户login时(不pipe用什么名字来访问它们),他们都会被困在他们的目录中。 不需要虚拟主机(因为它们需要单独的IPS或端口,因为FTP没有像HTTP那样的基于名称的虚拟主机)

你可以使用chroot

 # useradd -s /sbin/nologin -d /var/ftpfolder1 ftpuser1 # useradd -s /sbin/nologin -d /var/ftpfolder2 ftpuser2 

在proftpd.conf中添加以下选项

 DefaultRoot ~ !adm <Global> RequireValidShell no ... </Global> 

并重新启动服务器。 如果你真的需要虚拟主机,你可以尝试像下面这样的东西

 <VirtualHost ftpsite1.domain.com> ServerName "FTP1." DefaultRoot ~ Umask 002 Port 21 <LIMIT LOGIN> AllowUser ftpuser1 </LIMIT> </VirtualHost> <VirtualHost ftpsite2.domain.com> ServerName "FTP2." DefaultRoot ~ Umask 002 Port 21 <LIMIT LOGIN> AllowUser ftpuser2 </LIMIT> </VirtualHost>