目录
一、了解FTP
1、FTP的相关概念
2、FTP的两种模式及工作原理
2.1 主动模式
2.2 被动模式
3、vsftpd 软件介绍
3.1 基础操作
4、vsftpd服务常见配置
4.1 修改默认命令端口
4.2 主动模式端口
4.3 被动模式端口
4.4 使用当地时间
4.5 匿名用户登录
4.6 匿名用户上传
4.7 匿名用户下载,删除文件
4.8 指明匿名用户的上传文件的默认的所有者和权限
4.9 Linux系统用户
4.10 禁锢系统用户
4.11 日志
4.12 提示信息
4.13 pam模板实现用户访问
4.14 传输速率
二、实验
1、回顾创建本地yum仓库
2、在内网环境下ftp搭建yum仓库
3、 内网环境下http搭建yum仓库
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仓库