可以设置vsftpd来在每个虚拟用户的基础上configuration任意的chroot

理想情况下,我想像proftpds能够做到这一点

DefaultRoot /var/www/whatever/userone/ user1 DefaultRoot /home/directory/whatever/ user2 

这对于虚拟用户来说很重要。

是的,这是可能的,看到我的post在这里:

vsftpd – local_root = / var / www / sites / $ USER不会被解释?

您需要使用每个用户的configuration文件来为它们指定一个唯一的chroot位置。 在你的情况下,每个用户configuration“local_root”将根据需要在/ var / www / sites /之外改变值。

这可以用PAM很容易地完成。

如果您的disto没有带PAM,那么您需要获得一个副本,因为vsftpd使用PAM来进行虚拟用户的身份validation。

现在已经有一个用于pam_pwdfile的debian软件包,如果你的linux版本没有包含它,你也可以下载并编译它:

 apt-get install libpam-pwdfile 

首先,为第一个用户创build一个密码文件:

 htpasswd -c /etc/vsftpd/passwd user1 

接着:

 htpasswd /etc/vsftpd/passwd user2 

接下来你需要编辑vsftpdconfiguration文件/etc/vsftpd.conf

 listen=YES anonymous_enable=NO local_enable=YES virtual_use_local_privs=YES write_enable=YES connect_from_port_20=YES secure_chroot_dir=/var/run/vsftpd pam_service_name=vsftpd guest_enable=YES user_sub_token=$USER local_root=/var/www/sites/$USER chroot_local_user=YES hide_ids=YES 

最后你需要configurationPAM来使用密码文件,所以编辑/etc/pam.d/vsftpd

 # Customized login using htpasswd file auth required pam_pwdfile.so pwdfile /etc/vsftpd/passwd account required pam_permit.so 

不要忘记重新启动vsftpd,这就是它!