创建虚拟用户

先创建个 ftpuser.txt 内容:

 admin
 passadmin
 test
 passtest

装数据库 db (注: db3 没有了 要db4)

 apt-get install db4.8-util 

生成数据库

 db4.8_load -T -t hash -f  ftpuser.txt /etc/vsftpd_login.db 

设置权限

 chmod 600 /etc/vsftpd_login.db 

二 配置PAM 修改/etc/pam.d/vsftpd 内容如下:

   auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
   account required /lib/security/pam_userdb.so db=/etc/vsftpd_login 

为虚拟用户创建本地用户

   useradd -d /home/ftpsite  -s /sbin/nologin virtual
   mkdir /home/ftpsite
   chown virtual.virtual /home/ftpsite 
   ls -ld /home/ftpsite
   drwxr-sr-x 2 virtual virtual 48 2006-08-18 05:48 /home/ftpsite

根据需要创建/etc/vsftpd.conf,但要确保含有一下设置:

   anonymous_enable=NO
   local_enable=YES
   write_enable=NO
   anon_upload_enable=NO
   anon_mkdir_write_enable=NO
   anon_other_write_enable=NO
   chroot_local_user=YES
   guest_enable=YES
   guest_username=virtual
   listen=YES
   listen_port=21
   pasv_min_port=30000
   pasv_max_port=30999 

重启 vsftpd OK
原文 http://debian.linuxsir.org/doc/inthedebianway/vsftpd/vsftpd.conf-7.html

注: vsftp默认 匿名 不能在根目录上传 建立文件 出现500错误的时候 是/home/ftp 的权限问题 ftp用户不能有写的权限 如果需要匿名上传 在 /home/ftp 目录下 建立一个 ftp:ftp 所有的 目录 即可使用匿名上传

 例: mkdir upload 
      chown  ftp:ftp upload

虚拟用户 如果不能登入 请注释掉 /etc/pam.d/vsftpd 里的

 #@include common-account
 #@include common-session
 #@include common-auth
 #auth   required    pam_shells.so

现在使虚拟用户 使用不同的目录

首先 编辑vsftp.conf 增加

 user_config_dir=/etc/vsftpd/vsftpd_user_conf 

然后

 mkdir /etc/vsftpd
 mkdir /etc/vsftpd/vsftpd_user_conf 

建立 虚拟用户名字的文本文件 例如:你一个虚拟用户名字为 test

 touch /etc/vsftpd/vsftpd_user_conf/test 

编辑test 加入test的目录

 local_root=/home/test 

(test的目录 要更改为 virtual用户的权限)

 mkdir test
 chown virtual:virtual  test