1.建立虚拟用户口令库
vi /etc/vsftpd/logins.txt
在里面写用户名和口令,奇数行用户名,偶数行口令,例如:
user01
666666
user02
666666
2.生成vsftpd的认证文件
首先安装认证软件
yum install db4
生成认证文件命令: db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db 
3.更改文件权限
chmod 600 /etc/vsftpd/vsftpd_login.db   vsftpd_login.db只对root用户可读写(安全起见)
4.建立虚拟用户所需的PAM配置文件
vi /etc/pam.d/vsftpd.vu  在里面写下面的内容 (新建)
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login       
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
保存退出.
vsftpd_login 是认证文件去掉.db
5.建立虚拟用户及所要访问的目录并设置相应权限
groupadd ftpd
useradd -g ftpd -d /www -s /sbin/nologin -M ftpd     宿主目录home/ftpsite 帐号:virtual
chmod 700 /homegtpstie/                              宿主目录的权限设为700
vsftpd服务器中的所有虚拟用户帐号登陆后都在 /www下
新建虚拟用户也不一定非得放在/www下,放在其他目录也行,只要文件宿主都是ftpd.ftpd就行.
6.设置vsftpd.conf配置文件
vi /etc/vsftpd/vsftpd.conf  最后面加上
 
guest_enable=YES               激活虚拟用户
guest_username=ftpd            虚拟用户在linux里的用户名
pam_service_name=vsftpd.vu     判断虚拟用户的数据文件
user_config_dir=/etc/vsftpd_user_conf  虚拟用户指定的配置文件所在地址  (vsftpd_user_conf是文件夹)
virtual_use_local_privs=YES    设置为 YES 时,虚拟用户使用与本地用户相同权限,设置为 NO 时,虚拟用户使用与匿名用户相同权限  (必须开启)
7.为不同的虚拟用户设置不同的权限
1)为虚拟用户设置主配置文件  
在vsftpd.conf配置文件中,添加user_config_dir项,并设置保存的目录
user_config_dir=/etc/vsftpd_user_conf
2)建立配置文件目录  (上面指定了目录,现在还没有建呢)
mkdir /etc/vsftpd_user_conf
3)为每个不同的虚拟用户建立不同的配置文件
在/etc/vsftpd_user_conf目录中可以为每个虚拟用户建立单独的配置文件,配置文件名称和用户名相同。
local_root=/data/userspace    设置虚拟用户登录后的主目录
anon_world_readable_only=NO   具有浏览FTP目录和下载权限 
anon_upload_enable=YES        具有上传文件权限 
anon_mkdir_write_enable=YES   具有建立和删除目录的权利 
anon_other_write_enable=YES   具有文件改名和删除文件的权利

最后重启vsftpd

设置文件和文件夹上传后的权限
vi /etc/vsftpd/vsftpd.conf
local_umask=022
file_open_mode=0644
开启目录访问控制
chroot_list_enable=YES       锁定某些用户在自家目录中。即当这些用户登录后,不可以转到系统的其他目录,只能在自家目录(及其子目录)下。具体的用户在chroot_list_file参数所指定的文件中列出。默认值为NO。
chroot_list_file=/etc/vsftpd/chroot_list
  指出被锁定在自家目录中的用户的列表文件。文件格式为一行一用户。通常该文件是/etc/vsftpd/chroot_list。此选项默认不设置。
 
要创建/etc/vsftpd/chroot_list这个文件,然后把要锁定在自家目录的用户名都写上去,一行一个用户名.
最后重启vsftpd