理想情况下,我想像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,这就是它!