FTP(File Transfer Protocol)文本传输协议。它使用的是C/S模式,属于OSI七层模型的应用层,基于TCP协议。使用TCP协议的21号端口用来连接,20号端口用来传输数据(tftp是基于UDP协议,使用的是udp 69号端口)。也就是说,在进行FTP文件传输中客户端首先连接到FTP服务器的21号端口进行身份验证,身份验证通过要传输文件时,服务器会打开20号端口进行数据传输。
搭建FTP服务器
1.关闭防火墙和SELinux
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #设置开机不自启防火墙
setenforce 0 #临时关闭防火墙
vim /etc/selinux/conf #将SELINUX=enforcing 改为 SELINUX=disabled(此项修改生效需重启)
2.安装vsftp
yum -y install vsftp #安装vsftp
rpm -qa | grep vsftp #查看安装的vsftp
3.服务安装后,开始修改配置文件
在修改配置文件之前一定要将配置文件进行备份(养成这个习惯)。
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak #备份配置文件
vi /etc/vsftpd/vsftpd.conf #修改配置文件
打开配置文件后,按esc键进入命令模式输入:
:set number #显示行号
具体修改如下:
12行 anonymous_enable=NO
33行 anon_mkdir_write_enable=YES
48行 chown_uploads=YES
72行 async_abor_enable=YES
83行 ascii_upload_enable=YES
84行 ascii_download_enable=YES
87行 ftpd_banner=Welcome to blah FTP service.
101行 chroot_local_user=YES
在配置文件的末尾加入以下信息
use_localtime=YES
listen_port=21
idle_session_timeout=300
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/vconf
data_connection_timeout=1
virtual_use_local_privs=YES
pasv_min_port=40000
pasv_max_port=40010
accept_timeout=5
connect_timeout=1
allow_writeable_chroot=YES
4.建立用户文件
touch /etc/vsftpd/virtusers #创建用户文件
vim /etc/vsftpd/virtusers #编辑用户文件
cat /etc/vsftpd/virtusers #查看用户文件
zhangshuyun #用户名
123456 #密码
5.生成用户数据文件
cd /etc/vsftpd
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
chmod 600 virtusers.* #修改文件权限
6.指定认证方式
需要修改/etc/pam.d/vsftpd文件
修改之前先要备份
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
vi /etc/pam.d/vsftpd
将文件中原有的全都注释
增加下列内容
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
如果系统是32位的需要将lib64改为lib
创建新用户(要求有家目录但是不能登录)
useradd -s /sbin/nologin vsftpd
chown -R vsftpd:vsftpd /home/vsftpd
7.建立用户个人配置文件
mkdir /etc/vsftpd/vconf #创建目录
touch /etc/vsftpd/vconf/zhangshuyun #创建文件
vim /etc/vsftpd/vconf/zhangshuyun #编辑文件
cat /etc/vsftpd/vconf/zhangshuyun #查看文件
local_root=/home/vsftpd/zhangshuyun/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
mkdir -p /home/vsftpd/zhangshuyun/ #创建用户自己的目录
重启ftp服务,是配置生效
systemctl restart vsftpd #重启vsftpd服务
systemctl status vsftpd #查看vsftpd服务的状态
8.测试
在/home/vsftpd/zhangshuyun/目录下创建123.txt文件,在浏览器的地址栏中输入ftp://<ftp服务器IP地址>