#安装软件包

yum -y install vsftpd db4-utils

#关闭SELinux

vim /etc/sysconfig/selinux
SELINUX=permissive

#命令行输入,立即生效SELinux配置 getenforce 0 #防火墙允许22号端口

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

iptables -I INPUT -p tcp --dport 8564 -j ACCEPT

iptables -I OUTPUT -p tcp --sport 8564 -j ACCEPT

service iptables save

#建立虚拟用户登录文件,基数行为用户,偶数行为密码,只能这样写,否则系统不认

vim /etc/vsftpd/virtual_user_list.txt
usera
123456
userb
123456
userc
123456

#生成口令认证文件

db_load -T -t hash -f /etc/vsftpd/virtual_user_list.txt /etc/vsftpd/virtual_user_list_db.db
chmod 600 /etc/vsftpd/virtual_user_list_db.db

#创建虚拟用户认证文件

vim /etc/pam.d/vsftpd.vu
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_user_list_db
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_user_list_db
#64位系统就是/lib64/security/pam_userdb,32位系统就是/lib/security/pam_userdb #切忌不可以加“.db”,否则不生效

#创建虚拟用户

useradd -d /home/virtual -s /sbin/nologin virtual
chmod 777 /home/virtual #给777权限否则用户不能访问

#修改主配置文件

vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #当然你也可以设成YES,同时允许匿名用户登陆,但不推荐
listen_port=8564 #端口更改
local_enable=YES #必须设置为YES,因为虚拟用户是映射本地用户来访问的
#local_write=NO #本地用户不允许写
guest_enable=YES #启用虚拟用户
guest_username=virtual #映射虚拟用户
pam_service_name=vsftpd.vu #ftp认证文件
user_config_dir=/etc/vsftpd/virtual_user_list #为不同用户分配不同权限

#创建虚拟用户配置文件夹

mkdir /etc/vsftpd/virtual_user_list
cd /etc/vsftpd/virtual_user_list
touch usera userb userc #与logins.txt文件的登录名要一样

#usera用户只能下载:

vim usera
local_root=/home/virtual
anon_world_readable_only=NO

#userb用户只能上传配置:

vim userb
local_root=/home/virtual
download_enable=NO
write_enable=YES
anon_upload_enable=YES

#userc用户有所有权配置:

vim userc
local_root=/home/virtual
download_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

#启动服务,测试虚拟用户,验证效果;

service vsftpd start
chkconfig vsftpd on
ftp localhost