Linux网络文件共享服务1(基于FTP文件传输协议)

目录

一、了解FTP

1、FTP的相关概念

2、FTP的两种模式及工作原理

[2.1 主动模式](#2.1 主动模式)

[2.2 被动模式](#2.2 被动模式)

[3、vsftpd 软件介绍](#3、vsftpd 软件介绍)

[3.1 基础操作](#3.1 基础操作)

4、vsftpd服务常见配置

[4.1 修改默认命令端口](#4.1 修改默认命令端口)

[4.2 主动模式端口](#4.2 主动模式端口)

[4.3 被动模式端口](#4.3 被动模式端口)

[4.4 使用当地时间](#4.4 使用当地时间)

[4.5 匿名用户登录](#4.5 匿名用户登录)

[4.6 匿名用户上传](#4.6 匿名用户上传)

[4.7 匿名用户下载,删除文件](#4.7 匿名用户下载,删除文件)

[4.8 指明匿名用户的上传文件的默认的所有者和权限](#4.8 指明匿名用户的上传文件的默认的所有者和权限)

[4.9 Linux系统用户](#4.9 Linux系统用户)

[4.10 禁锢系统用户](#4.10 禁锢系统用户)

[4.11 日志](#4.11 日志)

[4.12 提示信息](#4.12 提示信息)

[4.13 pam模板实现用户访问](#4.13 pam模板实现用户访问)

[4.14 传输速率](#4.14 传输速率)

二、实验

1、回顾创建本地yum仓库

2、在内网环境下ftp搭建yum仓库

[3、 内网环境下http搭建yum仓库](#3、 内网环境下http搭建yum仓库)


一、了解FTP

1、FTP的相关概念

FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为"文传协议"。用于Internet上的控制文件的双向传输,是典型的C/S架构的应用层协议。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议来传输文件。

FTP服务器默认使用TCP协议的20、21端口与客户端进行通信

  • 20端口用于建立数据连接,并传输文件数据
  • 21端口用于建立控制连接,并传输FTP控制命令

2、FTP的两种模式及工作原理

  • 主动模式:服务器主动发起数据连接
  • 被动模式:服务器被动等待数据连接

2.1 主动模式

FTP 客户端连接到FTP 服务器的21号端口,发送用户名和密码,客户端随机开放一个端口,发送PORT 命令到FTP 服务器,告知服务器客户端采用主动模式并开放端口,FTP服务器收到PORT主动模式命令和端口后,通过服务器的20号端口和客户端开放的端口连接,发送数据,原理画图所示,(无论是主动还是被动模式,首先的控制通道都是先建立起来,只是在数据传输模式上的区别)

主动模式有个弊端,客户端必须关闭防火墙,否则不能传输数据。

2.2 被动模式

被动模式工作原理: PASV是Passive的缩写,中文成为被动模式。FTP客户端连接到FTP服务器所监听的21号端口,发送用户名和密码,发送PASV命令到FTP服务器,服务器在本地也随机开放一个端口(1024以上),然后把开放的端口告知客户端,而后客户端再连接到服务器开放的端口进行数据传输,原理如图所示。

注:以上的说明主动和被动,是相对于的FTP server端而判断,如果server去连接client开放的端口,说明是主动的,相反,如果client去连接server开放的端口,则是被动。

3、vsftpd 软件介绍

  • 由 vsftpd 包提供,不再由xinetd管理
  • 用户认证配置文件:/etc/pam.d/vsftpd

用户和其共享目录

  • 匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp

  • 系统用户共享文件位置:用户家目录

  • 虚拟用户共享文件位置:为其映射的系统用户的家目录

3.1 基础操作

①安装服务端

bash 复制代码
yum install vsftpd -y
#安装 ftp  服务器
systemctl start vsftpd
#开启服务

②客户端连接服务端

bash 复制代码
[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  或者匿名用户
                                        #默认没有密码
bash 复制代码
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   看到又打开一个通道

4、vsftpd服务常见配置

4.1 修改默认命令端口

bash 复制代码
vim /etc/vsftpd/vsftpd.conf
#随便一行插入
listen_port=2121 默认值为21

此时客户端连接时需要指明端口号
ftp 192.168.91.101 2121

4.2 主动模式端口

bash 复制代码
vim /etc/vsftpd/vsftpd.conf

connect_from_port_20=YES 主动模式端口为20
ftp_data_port=20 (默认) 指定主动模式的端口

4.3 被动模式端口

bash 复制代码
pasv_min_port=6000   0为随机分配,端口范围会影响客户端的并发数
pasv_max_port=6010

4.4 使用当地时间

bash 复制代码
use_localtime=YES 使用当地时间(默认为NO,使用GMT)
格林威治        +8  

4.5 匿名用户登录

bash 复制代码
anonymous_enable=YES 支持匿名用户,CentOS8 默认不允许匿名
no_anon_password=YES 匿名用户略过口令检查 , 默认NO

4.6 匿名用户上传

bash 复制代码
anon_upload_enable=YES 匿名上传,注意:文件系统权限
anon_mkdir_write_enable=YES 匿名建目录

chmod   777   /var/ftp/pub

4.7 匿名用户下载,删除文件

在 vsftpd 软件中 只可以 下载有 读权限的文件, 没有读权限的文件时不可以直接下载的需要修改下面的选项

bash 复制代码
anon_world_readable_only=NO  只能下载全部读的文件, 默认YES
anon_umask=0333              指定匿名上传文件的umask,默认0077,注意:0333中的0不能省略
anon_other_write_enable=YES  可删除和修改上传的文件,默认NO

4.8 指明匿名用户的上传文件的默认的所有者和权限

匿名用户上传文件默认的所有者是ftp 用户 是可以修改的

bash 复制代码
chown_uploads=YES        #默认NO
chown_username=zhangsan
chown_upload_mode=0644

4.9 Linux系统用户

bash 复制代码
local_enable=YES 是否允许linux用户登录
write_enable=YES 允许linux用户上传文件
local_umask=022 指定系统用户上传文件的默认权限对应umask

4.10 禁锢系统用户

禁锢所有系统用户在家目录中

bash 复制代码
chroot_local_user=YES #禁锢系统用户,默认NO,即不禁锢

禁锢用户开启白名单和黑名单

bash 复制代码
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中用户禁锢,
即黑名单,在文件里的 禁锢

4.11 日志

ftp 默认启动日志

bash 复制代码
#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 可自动生成, 此为默认值

4.12 提示信息

bash 复制代码
ftpd_banner="welcome to kgc ftp server"
banner_file=/etc/vsftpd/ftpbanner.txt  

4.13 pam模板实现用户访问

bash 复制代码
pam_service_name=vsftpd
#pam配置文件:/etc/pam.d/vsftpd

/etc/vsftpd/ftpusers 默认文件中用户拒绝登录,默认是黑名单,但也可以是白名单

4.14 传输速率

bash 复制代码
anon_max_rate=0 匿名用户的最大传输速率,以字节为单位,比如:1024000表示1MB/s
local_max_rate=0 本地用户的最大传输速率

二、实验

1、回顾创建本地yum仓库

bash 复制代码
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                #重新建立元数据

2、在内网环境下ftp搭建yum仓库

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仓库

⑦客户端测试:安装一个服务

3、 内网环境下http搭建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仓库

相关推荐
PcVue China2 小时前
PcVue + SQL Grid : 释放数据的无限潜力
大数据·服务器·数据库·sql·科技·安全·oracle
长安11082 小时前
前后端、网关、协议方面补充
网络
舞动CPU4 小时前
linux c/c++最高效的计时方法
linux·运维·服务器
钰@5 小时前
小程序开发者工具的network选项卡中有某域名的接口请求,但是在charles中抓不到该接口
运维·服务器·小程序
wanhengwangluo5 小时前
云服务器和物理服务器的区别有哪些?
运维·服务器
hzyyyyyyyu5 小时前
隧道技术-tcp封装icmp出网
网络·网络协议·tcp/ip
南猿北者5 小时前
docker Network(网络)
网络·docker·容器
秦jh_6 小时前
【Linux】多线程(概念,控制)
linux·运维·前端
Hacker_Nightrain6 小时前
网络安全CTF比赛规则
网络·安全·web安全
扣得君7 小时前
C++20 Coroutine Echo Server
运维·服务器·c++20