ftp工作模式:主动(FTP服务器主动向客户端发起连接请求)、被动(默认方式)
vsftpd三种认证模式:匿名模式、本地用户模式、虚拟用户模式(最安全)
1、安装vsftpd并设置开启启动
yum -y install vsftpd ftp
systemctl enable vsftpd
2、编辑虚拟数据库文件
vi /etc/vsftpd/ftp.list
文件内容:
奇数行为用户名,偶数行为密码
如xiaoming
123
xiaohong
456
3、将虚拟用户数据库文件转换为认证模块识别的数据文件
db_load -T -t hash -f /etc/vsftpd/ftp.list /etc/vsftpd/ftp.db
4、给虚拟用户数据库文件和认证模块识别的数据文件指定权限
chmod 600 /etc/vsftpd/ftp.*(此处的ftp与步骤2中的ftp.list对应)
5、创建一个目录作为上传数据目录
mkdir /data/
6、创建用户并指定家目录
useradd -d /data/ -s /sbin/nologin ftpuser
7、查看是否创建系统用户并指定家目录为/data/
cat /etc/passwd
8、给这个用户家目录设置权限
chmod 755 /data/
9、创建每个虚拟用户的家目录
mkdir /data/file_1
mkdir /data/file_2
10、递归更改用户家目录属性
chown -R ftpuser:ftpuser /data/(此处的ftpuser与步骤6的ftpuser对应)
11、备份pam认证模块配置文件
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam
12、配置pam认证模块文件
vi /etc/pam.d/vsftpd
文件内容:(下面的ftp与步骤2中ftp.list对应)
auth required pam_userdb.so db=/etc/vsftpd/ftp
account required pam_userdb.so db=/etc/vsftpd/ftp
13、备份vsftpd配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
14、编辑vsftpd配置文件
vi /etc/vsftpd/vsftpd.conf
文件内容:
local_umask=022
connect_from_port_20=YES
use_localtime=YES
local_enable=YES
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
guest_enable=YES
#此处的ftpuser与步骤6的ftpuser对应
guest_username=ftpuser
user_config_dir=/etc/vsftpd/dir
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
allow_writeable_chroot=YES
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
xferlog_file=/var/log/vsftpd.log
xferlog_enable=YES
xferlog_std_format=YES
pasv_enable=YES
pasv_min_port=40000
pasv_min_port=41000
15、创建根本目录列表文件
vi /etc/vsftpd/chroot_list
文件内容:
xiaoming
xiaohong
16、创建虚拟用户配置文件目录
mkdir /etc/vsftpd/dir
17、创建虚拟用户配置文件
vi /etc/vsftpd/dir/xiaoming
vi /etc/vsftpd/dir/xiaohong
文件内容:
#此处为file_1或file_2
local_root=/data/file_1/
write_enable=YES
anon_umask=022
anon_world_readable_only=no
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
max_per_ip=10
local_max_rate=2500000
idle_session_timeout=300
data_connection_timeout=300
max_clients=2
18、重启vsftpd服务
systemctl restart vsftpd
19、打开防火墙端口
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=40000-41000/tcp
20、重启防火墙
firewall-cmd --reload
21、关闭SELinux
vi /etc/selinux/config
SELINUX=disabled