一,FTP传输模式

1.主动模式:

服务器主动发起数据连接。

首先客户端的高位端口向服务器的21端口建立FTP连接请求(连接请求包括:认证,用户,密码,连接模式,命令PORT端口); FTP服务器响应ACK确认,服务器的21号端口和客户端的高位端口建立ftp会话连接; FTP服务器从自己的20号端口连接客户端发送的连接请求是主动模式命令提供的端口; 客户端发送ACK确认,开始数据传输

弊端:客户端的防火墙未关,可被拦截

2.被动模式:

客户机主动发起数据连接。

首先客户端的高位端口向服务器的21端口建立FTP连接请求(连接请求包括:认证,用户,密码,连接模式,命令PORT端口);
FTP服务器响应ACK确认,服务器的21号端口和客户端的高位端口建立ftp会话连接,并告诉客户端已开放20号端口,等你来连接;
客户端用自己的一个高位端口连接服务器响应的一个高位端口;
服务器给客户端发送ACK确认,开始数据传输

二,FTP用户

类型:匿名用户,本地用户,虚拟用户

虚拟机192.168.10.11作为服务器
yum -y install vsftpd
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

1.设置匿名用户访问FTP服务(最大权限)

anonymous_enable=YES  #开启匿名用户访问,默认已开启
write_enable=YES #开放服务器的写权限(若要上传,必须开启)
anon_umask=022 #设置匿名用户所上传数据的权限掩码
anon_upload_enable=YES #允许匿名用户上传文件,默认注释,需要取消注释
anon_mkdir_write_enable=YES#允许匿名用户创建目录,默认注释,需要取消
anon_other_write_enable=YES #允许删除,重命名,覆盖等

pam_service_name=vsftpd
userlist_enable=NO ####因未启用本地用户,可将用户列表功能禁用
tcp_wrappers=YES

chmod 777 /var/ftp/pub
#给匿名用户访问ftp的根目录下的pub子目录设置最大权限,以便匿名用户上传数据

2.开启服务,关闭防火墙和核心防护

systemctl start vsftpd
systemctl stop firewalld
setenforce 0
永久关闭核心防护:
vim /etc/selinux/config
SELINUX=enforcing enforcing改为disabled

3.匿名访问测试

1.Window主机在我的电脑浏览器地址栏中输入ftp://192.168.10.11/ #####在里面进行传文件 下文件 删文件操作

C:\Users\Administrator>ftp 192.168.10.11
连接到 192.168.10.11。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.10.11:(none)): ftp
331 Please specify the password.
密码:
230 Login successful.
ftp> pwd
257 undefined/undefined
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
pub
226 Directory send OK.
ftp: 收到 8 字节,用时 0.00秒 8000.00千字节/秒。
ftp> cd pub
250 Directory successfully changed.
ftp>get 文件名 下载文件到当前windows本地目录
ftp>put 文件名 上传文件到ftp目录

2.linux主机上:192.168.10.12作为客户端

yum -y install ftp    ###yum安装 ftp软件
ftp 192.168.10.11 #ftp客户端连接192.168.10.11

Connected to 192.168.10.11 (192.168.10.11).
220 (vsFTPd 3.0.2)
Name (192.168.10.11:root): ftp ####ftp匿名账户登录
331 Please specify the password.
Password: ####没有密码直接回车
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /opt ####将本地目录切换到/opt目录
Local directory now /opt

4.本地用户访问设置

服务器192.168.10.11上
vim /etc/vsftpd/vsftpd.conf
local_enable=YES
anonymous_enable=NO
write_enable=YES
local_umask=077
chroot_local_user=YES
allow_writeable_chroot=YES

#anon_mkdir_write_enable=YES
#anon_other_write_enable=YES
userlist_enable=YES #####这个白名单功能开启
userlist_deny=NO
#####黑名单功能关闭 不禁用user_list列表中的用户

systemctl restart vsftpd

vi /etc/vsftpd/user_list #名单上添加用户

useradd lisi
passwd lisi

二,配置ftp源 服务器配置:

安装vsftpd服务端软件

创建并制作yum远程ftp站点的源

启动ftp服务

yum -y install vsftpd
mkdir /var/ ftp/centos7#创建挂盘挂载目录

mount /dev / sr0 / mnt
#镜像挂载
cp -rf /mnt/ * /var/ ftp/ centos7/&
mkdir /var/ftp/other#创建目录repodata数据文件

cd /var/ ftp/other/
createrepo -g /mnt/repodata/repomd.xml ./#工具建立仓库数据文件

systemctl start vsftpd

客户端配置: 创建远程yum源的配置文件,yum安装软件验证结果

vim /etc /yum.repos.d/ftp.repo
[centos7]
name=centos7
baseurl=ftp://192.168.118.11/centos7
enabled=1
gpgcheck=1
gpgkey=ftp://192.168.118.11/centos7/RPM-GPG-KEY-CentOS-7

[other]
name=centos7
baseurl=ftp://192.168.118.11/other
enabled=1
gpgcheck=0

测试:

yum clean all && yum makecache
yum repolist