1.创建用户文本文件

[root@kroqi ~]# vim /etc/vsftpd/vsftpd_virtualuser.txt

[root@kroqi ~]# cat /etc/vsftpd/vsftpd_virtualuser.txt#一行用户一行密码

ftp

123456

vip

123456


2.生成数据库文件

[root@kroqi ~]# rpm -qf `which db_load`

db4-utils-4.7.25-22.el6.x86_64

[root@kroqi ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_virtualuser.txt /etc/vsftpd/vsftpd_virtualuser.db  

[root@kroqi ~]# 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@kroqi ~]# chmod 600 /etc/vsftpd/vsftpd_virtualuser.db 

[root@kroqi ~]# 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@kroqi ~]# vim /etc/pam.d/vsftpd


[root@kroqi ~]# 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@kroqi ~]# useradd -d /var/ftp/ftp ftpuser

[root@kroqi ~]# useradd -d /var/ftp/vip ftpvip

ftpuser为公共帐号,只允许下载和读取,不能上传

ftpvip可以上传下载读取


[root@kroqi ~]# chmod 500 -R /var/ftp/ftp/

[root@kroqi ~]# chmod 700 -R /var/ftp/vip/ 

[root@kroqi ~]# 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@kroqi vsftpd]# cd /etc/vsftpd/

[root@kroqi vsftpd]# cp vsftpd.conf vsftpd$(date +%F).conf

[root@kroqi vsftpd]# vim vsftpd.conf

[root@kroqi 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@kroqi vsftpd]# mkdir vuserconfig

[root@kroqi 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@kroqi vsftpd]# /etc/init.d/vsftpd restart

Shutting down vsftpd:                                      [  OK  ]

Starting vsftpd for vsftpd:                                [  OK  ]


8.测试

注意服务端要放行21和20端口

21是传指令

20是传数据

根据情况来调节本地ftp主被动模式连连接测试。

点评
还没有点评哦!