1.创建用户文本文件
[root@shnne ~]# vim /etc/vsftpd/vsftpd_virtualuser.txt
[root@shnne ~]# cat /etc/vsftpd/vsftpd_virtualuser.txt#一行用户一行密码
ftp
123456
vip
123456
2.生成数据库文件
[root@shnne ~]# rpm -qf `which db_load`
db4-utils-4.7.25-22.el6.x86_64
[root@shnne ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_virtualuser.txt /etc/vsftpd/vsftpd_virtualuser.db
[root@shnne ~]# ll /etc/vsftpd/
total 36
-rw------- 1 root root 125 Mar 22 2017 ftpusers
-rw------- 1 root root 361 Mar 22 2017 user_list
-rw------- 1 root root 4599 Mar 22 2017 vsftpd.conf
-rwxr--r-- 1 root root 338 Mar 22 2017 vsftpd_conf_migrate.sh
-rw-r--r-- 1 root root 12288 Nov 9 20:50 vsftpd_virtualuser.db
-rw-r--r-- 1 root root 22 Nov 9 20:44 vsftpd_virtualuser.txt
-T 允许应用程序能够将文本转译载入数据库
-t hash 使用hash码加密
-f 指定包含用户名密码文件文本。格式:奇数行用户名,偶数行密码
[root@shnne ~]# chmod 600 /etc/vsftpd/vsftpd_virtualuser.db
[root@shnne ~]# ll /etc/vsftpd/vsftpd_virtualuser.db
-rw------- 1 root root 12288 Nov 9 20:50 /etc/vsftpd/vsftpd_virtualuser.db
最好删除/etc/vsftpd/vsftpd_virtualuser.txt文件
3.配置PAM文件
[root@shnne ~]# vim /etc/pam.d/vsftpd
[root@shnne ~]# cat /etc/pam.d/vsftpd
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuser
4.创建系统帐号来对应虚拟帐号
[root@shnne ~]# useradd -d /var/ftp/ftp ftpuser
[root@shnne ~]# useradd -d /var/ftp/vip ftpvip
ftpuser为公共帐号,只允许下载和读取,不能上传
ftpvip可以上传下载读取
[root@shnne ~]# chmod 500 -R /var/ftp/ftp/
[root@shnne ~]# chmod 700 -R /var/ftp/vip/
[root@shnne ~]# ll /var/ftp/
total 12
dr-x------ 2 ftpuser ftpuser 4096 Nov 9 21:02 ftp
drwxr-xr-x 2 root root 4096 Mar 22 2017 pub
drwx------ 2 ftpvip ftpvip 4096 Nov 9 21:04 vip
5.修改vsftpd.conf主配置文件
[root@shnne vsftpd]# cd /etc/vsftpd/
[root@shnne vsftpd]# cp vsftpd.conf vsftpd$(date +%F).conf
[root@shnne vsftpd]# vim vsftpd.conf
[root@shnne vsftpd]# egrep -v "^#|^$" vsftpd.conf
anonymous_enable=NO#修改成NO
local_enable=YES#确认是否开启
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES#去掉注释
listen=YES
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd/vuserconfig#添加此条
max_clients=300#添加此条
max_per_ip=10#添加此条
userlist_enable=YES
tcp_wrappers=YES
6.建立虚拟帐号配置文件
[root@shnne vsftpd]# mkdir vuserconfig
[root@shnne vsftpd]# touch vuserconfig/{ftp,vip}
在ftp下写入
guest_enable=yes
guest_username=ftpuser
anon_world_readable_only=no
anon_max_rate=50000
在vip写入
guest_enable=yes
guest_username=ftpvip
anon_world_readable_only=no
write_enable=yes
anon_mkdir_write_enable=yes
anon_upload_enable=yes
anon_other_write_enable=yes
anon_max_rate=100000
7.启动或者重启服务
[root@shnne vsftpd]# /etc/init.d/vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
8.测试
注意服务端要放行21和20端口
21是传指令
20是传数据
根据情况来调节本地ftp主被动模式连连接测试。