Linux网络文件共享服务之FTP协议

发布时间:2024年01月15日

目录

一、存储类型

1、直连式存储(DAS)

2、存储区域网络(SAN)

3、网络附加存储(NAS)

二、?FTP文件传输协议

1、FTP协议的工作原理

1.1 FTP协议的工作流程

1.2 FTP协议的两种工作模式

1.2.1 主动模式(Active Mode)

1.2.2 被动模式(Passive Mode)

1.3 ftp用户验证

1.4?FTP服务器端软件

三、vsftpd软件

1、vsftpd软件的相关文件

2、vsftpd软件基础操作

2.1?安装程序

2.2?客户端连接服务端

2.3 登录到可进行的ftp服务端操作

2.4?客户端退出ftp服务端

3、vsftpd服务常见配置

3.1?修改端口

3.1.1 修改默认命令端口

3.1.2 修改主动模式端口

3.1.3 修改被动模式端口

3.2 使用当地时间

3.3 匿名用户的配置

3.3.1 匿名用户登录

3.3.2?匿名用户上传

3.3.3 匿名用户下载及删除

?3.3.4?指定匿名用户的上传文件的默认的所有者和权限

3.3.5 禁止匿名用户登录

3.4 系统用户的配置

3.4.1? 将所有系统用户映射为指定的guest用户

3.4.2?禁锢系统用户

3.5 日志

3.6 提示信息

3.7?控制传输速率


一、存储类型

1、直连式存储(DAS)

  • 将存储设备直接连接到主机或服务器的存储体系结构
  • DAS通常使用SATA、SAS或USB等接口连接硬盘驱动器或固态驱动器,提供本地存储容量
  • 每个服务器独立管理自己的存储资源,没有共享功能
  • DAS易于部署和管理,适用于简单的存储需求,例如个人电脑、小型办公室等

2、存储区域网络(SAN)

  • SAN是一种高速网络体系结构,将存储设备集中管理,并通过网络提供共享存储容量
  • SAN通常使用光纤通道(Fibre Channel)或以太网(iSCSI)连接存储设备和主机
  • 多个主机可以访问共享的存储池,实现高性能、高可靠性和灵活的存储解决方案
  • SAN适合于大型企业环境,如数据中心,需要强大的存储性能和可扩展性

3、网络附加存储(NAS)

  • NAS是一种基于网络的存储解决方案,通过以太网连接存储设备和主机
  • NAS设备具有自己的操作系统和文件系统,可以提供统一的文件共享访问
  • 主机使用网络协议(如NFS或SMB)来访问NAS上的文件,实现共享文件存储并简化管
  • NAS适用于小型到中型企业环境,提供简单、易于使用的存储资源共享功能
区别DASSANNAS
传输类型SCSI、FCIP、FC、SASIP
数据类型数据块数据块文件
典型应用任何数据库应用文件服务器
优点磁盘与服务器分离,便于统一管理

高扩展性

高可用性

数据集中,易管理

不占用应用服务器资源

广泛支持操作系统

扩展较容易

即插即用,安装简单方便

缺点

?连接距离短

数据分散,共享困难

存储间利用率不高

扩展性有限

相比NAS成本较高安添装和升级比NAS不适合存储量大的块级,应月数据备份及恢复占用网络带宽

二、?FTP文件传输协议

FTP(File Transfer Protocol,文件传输协议)是一种用于在网络上传输文件的标准协议。它允许用户通过网络从一个计算机向另一个计算机传输文件。FTP通常用于在客户端和服务器之间进行文件传输,允许用户上传(放置文件到服务器)和下载(从服务器获取文件)文件

1、FTP协议的工作原理

1.1 FTP协议的工作流程

  • 客户端连接到服务器:客户端使用FTP客户端软件(如FileZilla、WinSCP等)连接到FTP服务器
  • 身份验证:客户端提供用户名和密码进行身份验证,以便访问服务器上的文件
  • 浏览文件:一旦连接成功,客户端可以通过FTP客户端浏览服务器上的文件和目录结构
  • 上传和下载文件:客户端可以通过FTP客户端将文件上传到服务器,也可以从服务器下载文件到本地计算机
  • 断开连接:完成文件传输后,客户端可以选择断开与服务器的连接

1.2 FTP协议的两种工作模式

1.2.1 主动模式(Active Mode)

在FTP的主动模式下,客户端使用随机的非保留端口(通常大于1023)连接到服务器端口21。这个连接用于发送命令和控制信息

一旦数据传输需要开始,服务器会通过它的数据端口(通常是端口20)主动连接到客户端指定的数据端口。

主动模式的数据连接建立流程如下:

①客户端连接到服务器的端口21,发送命令和控制信息(客户端:随机port ---> 服务器:21/tcp )

②当需要进行数据传输时,服务器会主动连接到客户端指定的数据端口20,发送数据(服务器:20/tcp --->?客户端:随机port ?)

主动模式的优点是服务器可以主动连接到客户端,适用于客户端在防火墙后面的情况。然而,主动模式也存在一些问题,比如客户端需要在防火墙上打开一定范围的端口以便服务器能够连接,这可能存在安全隐患

1.2.2 被动模式(Passive Mode)

在FTP的被动模式下,客户端连接到服务器的端口21发送命令和控制信息

数据连接则由服务器打开一个随机的非保留端口,等待客户端连接

被动模式的数据连接建立流程如下:

①客户端连接到服务器的端口21,发送命令和控制信息(客户端:随机port ---> 服务器:21/tcp )

②当需要进行数据传输时,服务器会打开一个随机的非保留端口,被动等待客户端连接(客户端:随机port ---> 服务器:随机port /tcp)

被动模式的优点是避免了在客户端防火墙上打开额外的端口,因为数据连接是由服务器打开并等待客户端连接的。这种模式更容易在防火墙后面进行工作,因为客户端只需连接到服务器的端口21

1.3 ftp用户验证

  • 匿名用户:ftp、anonymous、对应Linux用户ftp root

  • 系统用户:Linux用户、用户/etc/passwd、密码/etc/shadow

  • 虚拟用户:特定服务的专用用户、独立的用户/密码文件

1.4?FTP服务器端软件

ProFTPD:ProFTPD是一个功能强大且广泛使用的免费开源FTP服务器软件,它运行在多个操作系统上,包括Linux、Unix和Windows

Pure-FTPd:Pure-FTPd是一个免费的、开源的FTP服务器软件,它注重安全性和易用性。它支持多种认证方式和虚拟用户

FileZilla Server:FileZilla Server是一个Windows平台上的免费FTP服务器软件,它提供了用户管理、权限控制和日志记录等功能

Cerberus FTP Server:Cerberus FTP Server是一个功能丰富、易于使用的FTP服务器软件,它支持多种认证方式、加密传输和远程管理

IIS FTP Server:IIS(Internet Information Services)是Windows操作系统自带的Web服务器软件,它也提供了FTP服务器功能。可以通过IIS管理工具配置和管理FTP站点

vsftpd:vsftpd(Very Secure FTP Daemon)是一个轻量级、快速和安全的FTP服务器软件,它专注于提供安全性和性能。它是Linux系统中最常用的FTP服务器软件之一

下面将主要介绍vsftpd软件

三、vsftpd软件

1、vsftpd软件的相关文件

/etc/vsftpd.conf:这是vsftpd的主要配置文件,其中包含了服务器的配置选项,如监听端口、用户权限、匿名访问设置等

/etc/vsftpd:这个目录通常包含一些附加的配置文件或子目录,用于存储与vsftpd相关的其他配置信息

/var/ftp?:这是默认的FTP根目录,用于存储FTP服务器上的文件。这个目录通常包含匿名用户和已认证用户的文件

/usr/sbin/vsftpd:这是vsftpd服务器程序的可执行文件,用于启动和运行vsftpd服务器

/var/log/vsftpd.log:这是vsftpd的日志文件,记录了服务器的活动和事件,如用户登录、文件传输等

/etc/pam.d/vsftpd:这个文件包含了 vsftpd 使用的PAM(Pluggable Authentication Modules,可插拔身份验证模块)配置,用于定义身份验证策略

2、vsftpd软件基础操作

2.1?安装程序

#服务端:
yum install -y vsftpd     #安装ftp服务器
systemctl start vsftpd    #开启服务
#客户端:
yum install -y ftp        #安装ftp服务程序

2.2?客户端连接服务端

前提:关闭防火墙和临时防护

systemctl   stop  firewalld      #关闭防火墙
setenforce  0                    #关闭临时防护
通式:ftp  服务端ip

2.3 登录到可进行的ftp服务端操作

  • 浏览文件和目录:使用 FTP 客户端软件,你可以浏览 FTP 服务器上的文件和目录结构。你可以列出目录内容、查看文件属性和大小等信息
  • 上传和下载文件:你可以将本地计算机上的文件上传到 FTP 服务器,或从 FTP 服务器下载文件到本地计算机。这使得文件的传输变得方便快捷
  • 创建和删除目录:你可以在 FTP 服务器上创建新的目录,用于组织文件和数据。同样地,你也可以删除不再需要的目录
  • 重命名和移动文件:你可以对 FTP 服务器上的文件进行重命名,改变它们的名称。此外,你还可以将文件从一个目录移动到另一个目录,以重新组织文件结构
  • 修改文件权限:作为 FTP 服务器的管理员或有足够权限的用户,你可以修改文件的权限设置。这包括更改文件的所有者、组、读写执行权限等
  • 管理用户和身份验证:作为管理员,你可以管理 FTP 服务器上的用户账户和身份验证方式。这包括创建新用户、删除用户、修改用户密码等操作
  • 监控和查看日志:FTP 服务器通常会记录用户的登录、文件传输等活动。你可以查看服务器的日志文件,以监控和审计用户的操作

2.4?客户端退出ftp服务端

方式一:输入快捷键:“Ctrl+D”
方式二:输入命令“quit”

3、vsftpd服务常见配置

3.1?修改端口

3.1.1 修改默认命令端口
#在vsftpd配置文件下修改默认端口号
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
listen_port=2121      #默认值为21
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务

3.1.2 修改主动模式端口
#在vsftpd配置文件下可修改主动模式的端口
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
connect_from_port_20=YES   #主动模式端口为20
ftp_data_port=20           #指定主动模式的端口,默认为20
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务
3.1.3 修改被动模式端口
#在vsftpd配置文件下可修改被动模式的端口
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
#0为随机分配,规定端口范围会影响客户端的并发数
pasv_min_port=6000 ?  
pasv_max_port=6010
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务

3.2 使用当地时间

#在vsftpd配置文件下可修改服务端的时间
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
use_localtime=YES   #使用当地时间(默认为NO,使用GMT)
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务

3.3 匿名用户的配置

3.3.1 匿名用户登录
#在vsftpd配置文件下可修改匿名用户的相关配置
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES   #支持匿名用户,CentOS8默认不允许匿名
no_anon_password=YES   #匿名用户略过口令检查 , 默认NO
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务
?3.3.2?匿名用户上传

?ftp协议默认匿名用户不允许上传文件, 为安全考虑,如果人人都传到ftp服务器,会出现病毒、空间容量等问题

#服务端添加程序的权限
#在vsftpd配置文件下可修改匿名用户的权限
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES        #支持匿名用户上传,注意:文件系统权限
anon_mkdir_write_enable=YES   #支持匿名用户建文件夹
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务

**********************************************************************
#服务端添加ftp用户的文件系统权限
[root@localhost ~]#setfacl -m u:ftp:rwx /var/ftp/pub/
[root@localhost ~]#getfacl /var/ftp/pub/     #查看指定目录的权限

***********************************************************************
#服务端删除添加到/var/ftp目录下的所有规则,恢复默认权限
[root@localhost ~]#setfacl -b /var/ftp  

①默认匿名用户不允许上传文件?

②在vsftpd配置文件下可修改匿名用户的权限?

?③服务端添加ftp用户的文件系统权限

④验证,现在匿名用户能否上传文件到ftp服务器

3.3.3 匿名用户下载及删除
#在vsftpd配置文件下可修改匿名用户的权限
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
anon_world_readable_only=NO  #只能下载全部读的文件, 默认YES
anon_umask=0333              #指定匿名上传文件的umask,默认077,注意:0333中的0不能省略
anon_other_write_enable=YES  #可删除和修改上传的文件,默认NO
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务

?①匿名用户从服务端下载文件到客户端的当前目录下

②匿名用户在服务端删除文件

?3.3.4?指定匿名用户的上传文件的默认的所有者和权限

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

#在vsftpd配置文件下可修改匿名用户的权限
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
chown_uploads=YES ? ? ? ?#默认NO
chown_username=dh        #指定匿名用户的上传文件的默认的所有者为dh用户
chown_upload_mode=0644   #指定上传文件的权限
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务
3.3.5 禁止匿名用户登录
#在vsftpd配置文件下可修改匿名用户的权限
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO    #默认YES
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务

3.4 系统用户的配置

#在vsftpd配置文件下可修改系统用户的权限
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
local_enable=YES    #是否允许linux用户登录
write_enable=YES    #允许linux用户上传文件
local_umask=022     #指定系统用户上传文件的默认权限对应umask
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务
3.4.1? 将所有系统用户映射为指定的guest用户
#在vsftpd配置文件下可修改系统用户的权限
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
guest_enable=YES 				#所有系统用户都映射成guest用户
guest_username=ftp ? 		    #配合上面选项才生效,指定guest用户
#local_root=/ftproot 			#注释此行,默认所有用户都在ftp用户的家目录
user_config_dir=/etc/vsftpd/conf.d/ 	#每个用户独立的配置文件目录,可自由指定
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务
*******************************************************************************
#编写子配置文件
[root@localhost ~]#mkdir -p /data/{mimi,gugu}
[root@localhost ~]#vim    /etc/vsftpd/conf.d/lisi     
local_root=/data/mimi
[root@localhost ~]#vim   /etc/vsftpd/conf.d/zhangsan
local_root=/data/gugu
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务
3.4.2?禁锢系统用户

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

#在vsftpd配置文件下可修改系统用户的权限
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES     #禁锢系统用户,默认NO,即不禁锢
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务

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

#在vsftpd配置文件下可修改系统用户的权限
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
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中用户禁锢,即黑名单,只有文件里的用户禁锢
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务

3.5 日志

ftp服务端默认启动日志

#wu-ftp 日志:默认启用
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
xferlog_enable=YES              #启用记录上传下载日志,此为默认值
xferlog_std_format=YES          #使用wu-ftp日志格式,此为默认值
xferlog_file=/var/log/xferlog   #可自动生成, 此为默认值
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务

*************************************************************************
#vsftpd日志:默认不启用
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
dual_log_enable=YES                    #使用vsftpd日志格式,默认不启用
vsftpd_log_file=/var/log/vsftpd.log    #可自动生成, 此为默认值
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务

3.6 提示信息

#在vsftpd配置文件下可修改提示信息
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
ftpd_banner="welcome to dhyq ftp server"
banner_file=/etc/vsftpd/ftpbanner.txt ?
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务

3.7?控制传输速率

#在vsftpd配置文件下可修改限速
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf
anon_max_rate=1024000   #1024000表示1MB/s
local_max_rate=102400
[root@localhost ~]#systemctl restart vsftpd     #重启vsftpd服务
文章来源:https://blog.csdn.net/m0_71815887/article/details/135601702
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。