一、安装ftp服务
yum install -y vsftp
# 安装虚拟用户数据库
yum -y install libdb-utils
二、增加一个系统用户‘virftp’ ,所有虚拟用户都会映射到此用户后对文件系统进行读写操作
#添加用户,用户登录时使用nologin
useradd -s /sbin/nologin virftp
#设置用户密码
passwd virftp
三、配置vsftp主配置文件
#备份vsftpd主配置文件
cp /etc/vsftpd/vsftpd.conf{,.bak}
#查看过滤配置文件注释后内容
grep -v "#" /etc/vsftpd/vsftpd.conf
vim /etc/vsftpd/vsftpd.conf

#禁止匿名用户登录
anonymous_enable=NO
#允许本地用户登录
local_enable=YES
#启用虚拟账户 
guest_enable=YES
#把虚拟账户映射到系统账户virftp              
guest_username=virftp
#使用虚拟用户验证(PAM验证)
pam_service_name=vsftpd
#设置存放各虚拟用户配置文件的目录(此目录下与虚拟用户名相同的文件为它的配置文件)
user_config_dir=/etc/vsftpd/vsftpd_viruser
#启用chroot时,虚拟用户根目录允许写入
allow_writeable_chroot=YES
#被动模式,文件传输端口的最大最小范围 pasv_min_port=30000 pasv_max_port=35000
 
四、配置vsftpd pam验证文件
#备份
cp /etc/pam.d/vsftpd{,.bak}
#将auth及account的所有配置行均注释掉,再添加如下两行
vim /etc/pam.d/vsftpd
auth       required     pam_userdb.so   db=/etc/vsftpd/vir_user          
account    required     pam_userdb.so   db=/etc/vsftpd/vir_user
 
五、配置虚拟用户访问vsftpd服务
#创建虚拟用户密码文件(奇数行为帐号,偶数行为密码)
vim /etc/vsftpd/vir_user
test01
pwd_test01
test02
pwd_test02
六、配置虚拟用户各自的配置文件
#创建‘虚拟用户配置文件’的存放目录
mkdir /etc/vsftpd/vsftpd_viruser/

#创建和配置虚拟用户各自的配置文件(文件名称是‘虚拟用户名’)
vim /etc/vsftpd/vsftpd_viruser/test01

# 允许写入
write_enable=YES
#允许浏览FTP目录和下载
anon_world_readable_only=NO
#禁止用户下载
#download_enable=NO
# 允许虚拟用户上传文件
anon_upload_enable=YES
# 允许虚拟用户创建目录
anon_mkdir_write_enable=YES
# 允许虚拟用户执行其他操作(如改名、删除)
anon_other_write_enable=YES
# 上传文件的掩码,如022时,上传目录权限为755,文件权限为644
anon_umask=022
# 指定虚拟用户的虚拟目录(虚拟用户登录后的主目录,即登录ftp后访问的根目录)
local_root=/home/virftp/test01
七、生成虚拟用户数据库
db_load -T -t hash -f /etc/vsftpd/vir_user  /etc/vsftpd/vir_user.db
chmod 700 /etc/vsftpd/vir_user.db
八、创建虚拟用户的根目录,要保证虚拟用户映射的系统用户,对这个根目录有读写权限
#创建虚拟用户对应根目录
mkdir -p /home/virftp/test01
#修改目录权限
chown -R virftp.virftp /home/virftp/test01
九、重启服务
systemctl restart vsftpd
#开放端口
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=30000-35000/tcp --permanent
firewall-cmd --reload
注:若添加新虚拟用户,创建用户对应根目录文件夹、在/etc/vsftpd/vsftpd_viruser/目录下创建用户名为文件名的配置文件,/etc/vsftpd/vir_user文件中添加帐号密码
#再执行
db_load -T -t hash -f /etc/vsftpd/vir_user  /etc/vsftpd/vir_user.db
#重启服务
systemctl restart vsftpd

 

 

#被动模式,文件传输端口的最大最小范围pasv_min_port=30000pasv_max_port=35000