目录
FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输,是典型的C/S架构的应用层协议。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议来传输文件。
FTP服务器默认使用TCP协议的20、21端口与客户端进行通信
- 20端口用于建立数据连接,并传输文件数据
- 21端口用于建立控制连接,并传输FTP控制命令
FTP 客户端连接到FTP 服务器的21号端口,发送用户名和密码,客户端随机开放一个端口,发送PORT 命令到FTP 服务器,告知服务器客户端采用主动模式并开放端口,FTP服务器收到PORT主动模式命令和端口后,通过服务器的20号端口和客户端开放的端口连接,发送数据,原理画图所示,(无论是主动还是被动模式,首先的控制通道都是先建立起来,只是在数据传输模式上的区别)
主动模式有个弊端,客户端必须关闭防火墙,否则不能传输数据。
被动模式工作原理: PASV是Passive的缩写,中文成为被动模式。FTP客户端连接到FTP服务器所监听的21号端口,发送用户名和密码,发送PASV命令到FTP服务器,服务器在本地也随机开放一个端口(1024以上),然后把开放的端口告知客户端,而后客户端再连接到服务器开放的端口进行数据传输,原理如图所示。
注:以上的说明主动和被动,是相对于的FTP server端而判断,如果server去连接client开放的端口,说明是主动的,相反,如果client去连接server开放的端口,则是被动。
用户和其共享目录
匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp
系统用户共享文件位置:用户家目录
虚拟用户共享文件位置:为其映射的系统用户的家目录
①安装服务端
yum install vsftpd -y
#安装 ftp 服务器
systemctl start vsftpd
#开启服务
②客户端连接服务端
[root@localhost ~]#ftp 192.168.91.101
# ftp 客户端 工具 服务端地址
onnected to 192.168.91.101 (192.168.91.101).
220 (vsFTPd 3.0.2)
Name (192.168.91.101:root): anonymous/ftp #此处填写用户名 默认使用 ftp 或者匿名用户
#默认没有密码
ftp> help
#可以使用help 查看帮助
ftp> ls
#可以使用 ls 查看文件列表 查看的是服务器上的列表 100 显示是的 100 服务器的 文件目录
ftp> ls
227 Entering Passive Mode (192,168,91,101,24,148)
# Passive 消极被动 默认使用 被动模式
ftp> passive
#可以人为指定被动主动
ftp> get bigfile
#下载大文件, 后可以 使用 ss -nt 看到又打开一个通道
vim /etc/vsftpd/vsftpd.conf
#随便一行插入
listen_port=2121 默认值为21
此时客户端连接时需要指明端口号
ftp 192.168.91.101 2121
vim /etc/vsftpd/vsftpd.conf
connect_from_port_20=YES 主动模式端口为20
ftp_data_port=20 (默认) 指定主动模式的端口
pasv_min_port=6000 ? 0为随机分配,端口范围会影响客户端的并发数
pasv_max_port=6010
use_localtime=YES 使用当地时间(默认为NO,使用GMT)
格林威治 +8
anonymous_enable=YES 支持匿名用户,CentOS8 默认不允许匿名
no_anon_password=YES 匿名用户略过口令检查 , 默认NO
anon_upload_enable=YES 匿名上传,注意:文件系统权限
anon_mkdir_write_enable=YES 匿名建目录
chmod 777 /var/ftp/pub
?在 vsftpd 软件中 只可以 下载有 读权限的文件, 没有读权限的文件时不可以直接下载的需要修改下面的选项
anon_world_readable_only=NO 只能下载全部读的文件, 默认YES anon_umask=0333 指定匿名上传文件的umask,默认0077,注意:0333中的0不能省略 anon_other_write_enable=YES 可删除和修改上传的文件,默认NO
匿名用户上传文件默认的所有者是ftp 用户 是可以修改的
chown_uploads=YES ? ? ? ?#默认NO
chown_username=zhangsan
chown_upload_mode=0644
local_enable=YES 是否允许linux用户登录
write_enable=YES 允许linux用户上传文件
local_umask=022 指定系统用户上传文件的默认权限对应umask
禁锢所有系统用户在家目录中
chroot_local_user=YES #禁锢系统用户,默认NO,即不禁锢
禁锢用户开启白名单和黑名单
chroot_list_enable=YES ? ? #默认是NO
chroot_list_file=/etc/vsftpd/chroot_list ? #默认值
?
当chroot_local_user=YES和chroot_list_enable=YES时,则chroot_list中用户不禁锢,
即白名单,在文件里的不禁锢
当chroot_local_user=NO和chroot_list_enable=YES时, 则chroot_list中用户禁锢,
即黑名单,在文件里的 禁锢
ftp 默认启动日志
#wu-ftp 日志:默认启用
xferlog_enable=YES #启用记录上传下载日志,此为默认值
xferlog_std_format=YES #使用wu-ftp日志格式,此为默认值
xferlog_file=/var/log/xferlog #可自动生成, 此为默认值
#vsftpd日志:默认不启用
dual_log_enable=YES 使用vsftpd日志格式,默认不启用
vsftpd_log_file=/var/log/vsftpd.log 可自动生成, 此为默认值
ftpd_banner="welcome to kgc ftp server"
banner_file=/etc/vsftpd/ftpbanner.txt ?
pam_service_name=vsftpd
#pam配置文件:/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers 默认文件中用户拒绝登录,默认是黑名单,但也可以是白名单
anon_max_rate=0 匿名用户的最大传输速率,以字节为单位,比如:1024000表示1MB/s
local_max_rate=0 本地用户的最大传输速率
mount /dev/sr0 /mnt #挂载提供安装包
cd /etc/yum.repos.d #切换到固定目录
mkdir bak #建立备份文件夹
mv *.repo bak #将所有网络源移走,减少干扰
vim local.repo #自建本地源的配置文件
[local] #自定义仓库描述
name=local #自定义仓库名
baseurl=file:///mnt #指明仓库位置
gpgcheck=0 #不验证安全性(若为1则验证)
yum clean all #清理缓存
yum makecache #重新建立元数据
ftp可以使用内网也可以使用外网,此处演示内网环境, 由于是内网环境,虚拟机全部设为仅主机模式,无法连接外部网络如果想要下载ftp服务则需要搭建一个本地yum仓库
服务端IP地址:192.168.80.111
客户端IP地址:192.168.80.112
①服务器搭建本地yum仓库并下载vsftpd服务
②服务端进入 /var/ftp/目录下添加一个挂载点centos7,将光驱挂载在centos7目录
③服务端关闭防火墙和selinux,开启vsftpd服务
④客户端搭建本地yum仓库并下载vsftpd和ftp服务
⑤客户端检测ftp服务是否正常
⑥客户端搭建yum仓库
?
⑦客户端测试:安装一个服务
由于是内网环境,虚拟机全部设为仅主机模式,无法连接外部网络如果想要下载httpd服务则需要搭建一个本地yum仓库
服务端IP地址为192.168.132.111
客户端IP地址为192.168.132.112
1.服务端搭建本地yum仓库下载httpd服务
2.服务端进入/var/www/html/添加挂载目录centos7,将光驱挂载到centos7目录下(也可以将光驱内的所有文件包复制到centos目录下)
3.服务端关闭防火墙,开启http服务
4.客户端搭建yum仓库