Linux中FTP安装

文章目录


一、FTP介绍

1.1、FTP是什么

FTP是Internet上用于提供文件传输服务的一种使用非常广泛的通信协议;FTP使用两个并行的TCP连接:一个用于控制信息(如口令、用户标识、文件操作命令等),默认使用端口21;另一个用于数据传输,默认使用端口20。

1.2、FTP的工作原理

FTP的工作方式原理是基于客户端/服务器模式,使用TCP协议进行文件传输。

  • 建立控制连接:当一个FTP客户端发起与FTP服务器的通信时,它首先会通过TCP的21端口建立一个控制连接。这个连接用于交换命令和响应信息,比如登录认证、文件操作命令等。控制连接在整个FTP会话期间保持开放状态。
  • 数据传输方式:FTP支持两种数据传输模式------主动模式和被动模式。在主动模式下,FTP服务器在接收到客户端的数据请求后,会主动通过TCP的20端口建立到客户端的数据连接。而在被动模式下,服务器则等待客户端发起数据连接。这两种模式的选择通常取决于客户端所在网络的防火墙策略。
  • 处理数据传输:一旦控制连接建立并验证了用户身份,客户端就可以通过发送FTP命令来请求文件上传、下载、删除等操作。对于每个具体的文件传输请求,服务器都会建立一个新的数据传输通道,完成文件或目录列表的传输。这种分离命令和数据传输的设计,使得FTP能够高效地处理大量数据,同时保持命令控制的灵活性。
  • 执行命令操作:FTP提供了丰富的命令集,允许用户执行各种文件操作,如列出目录内容、改变目录、上传和下载文件等。这些命令通过控制连接发送到服务器,服务器执行相应的操作并通过相同的连接返回操作结果。
  • 断开连接方式:当用户完成所有文件操作后,可以通过发送适当的FTP命令来断开FTP会话,此时控制连接和任何现存的数据连接都将被关闭。

1.3、FTP的传输模式

FTP(文件传输协议)主要有两种传输模式,主动模式和被动模式。
主动模式通常适用于客户端位于网络防火墙后面的情况,而被动模式则更适用于服务器处于防火墙后的环境。由于大多数家庭和企业网络都部署有阻止外部访问的防火墙,因此,被动模式在现代FTP应用中更为常见。

  • 在主动模式中,FTP客户端打开一个随机的端口,并从这个端口发送请求到FTP服务器的命令端口21,然后客户端通过这个端口向服务器发送一个包含数据端口信息的PORT命令;服务器接收到这个命令后,会从自己的数据端口20连接到客户端指定的数据端口上,从而开始数据传输;这种模式下,数据传输是由服务器发起到客户端的。

  • 被动模式下,FTP客户端同样先与服务器的命令端口21建立连接,但不同的是,它发送的是PASV命令,服务器响应这个命令,随机打开一个临时端口,并将该端口信息发送给客户端;之后,客户端从自己的随机端口发起连接,直接连接到服务器的这个临时端口以进行数据传输;在这种模式下,数据传输的连接都是由客户端发起的。

1.4、FTP用户类别

FTP支持三种类型的用户:本地用户、匿名用户和虚拟用户。这三种用户类型在FTP服务器上具有不同的权限和用途,为不同的使用场景提供了灵活的身份验证机制。

  • 本地用户:本地用户是指那些在FTP服务器上拥有账户的用户。这些用户通常拥有操作系统级别的账号,并且可以通过这些账号登录到FTP服务器进行文件传输操作。本地用户可以访问自己的家目录,并且根据权限设置,可能能够访问其他目录或其他用户的文件。本地用户模式提供了相对较高的安全性,因为每个用户都需要通过自己的系统用户名和密码进行验证。
  • 匿名用户:匿名用户是FTP中一个特殊的用户类别,它允许任何用户不需要登录凭证即可访问FTP服务器上的公开资源。通常情况下,匿名用户的用户名设置为"anonymous"或"ftp",而密码可以是任意的,有时用电子邮件地址作为密码是一种惯例,以便服务器记录访问者的信息。尽管匿名访问为用户提供了方便,但它通常只限于下载公共文件,并且为了安全考虑,往往不允许匿名用户上传文件或执行其他写操作。匿名用户模式常用于提供软件下载、文档共享等公共服务。
  • 虚拟用户:虚拟用户是通过独立的用户数据库文件进行管理的FTP账户,并不直接对应于操作系统的账号。这种方式提供了更高的安全性,因为即便FTP账户信息被破解,攻击者也无法直接访问操作系统。虚拟用户模式通过vsftpd服务实现,它允许管理员创建专门用于FTP服务的独立用户数据库,并可以精确控制每个虚拟用户的权限和可访问的目录范围。这种模式下的用户需要通过FTP服务器上配置的认证机制进行身份验证。

1.5、FTP的优点与缺点

FTP的优点

  • 促进文件共享:FTP极大地便利了计算机程序或数据的共享,使得在不同计算机系统之间传输文件变得简单且高效。
  • 支持远程工作:FTP允许用户在远程计算机上访问和传输文件,从而鼓励使用远程计算机,特别适合需要远程协作的场景。
  • 屏蔽细节差异:FTP向用户屏蔽了不同主机中各种文件存储系统的细节,提供了统一的界面和操作方式,简化了用户的操作过程。
  • 保证传输可靠:FTP基于TCP协议进行数据传输,保证了数据传输的可靠性和高效性,这对于大文件传输尤为重要。

FTP的缺点

  • 明文传输信息:FTP在传输密码和文件内容时使用明文,这可以被窃听者轻易窃取,存在较大的安全风险。
  • 防火墙限制连接:FTP需要开放随机端口进行连接,这在主动模式下尤其困难,因为许多现代防火墙默认阻止此类入站连接请求。
  • 服务器配置复杂:在某些情况下,FTP服务器可能会被告知连接到第三方计算机的保留端口,这增加了配置的复杂性和安全风险。
  • 小文件传输低效:虽然FTP在大文件传输方面效率较高,但在传输小文件时,由于每次传输都需要建立连接,其效率相对较低。

1.6、FTP数据传输格式

FTP支持两种数据传输格式:ASCII和二进制。

  • ASCII格式:ASCII格式用于传输文本文件,如.txt文件、HTML文件等。当以ASCII方式传送文件时,FTP会转换行结束符,这意味着根据操作系统的不同,文件的行结束符会被自动转换。例如,从UNIX系统向Windows系统传输文本文件时,行末的换行符将被转换成回车+换行符的组合。这种格式在传输包含简单ASCII字符集的文本文件时非常有用,因为它能确保在不同操作系统间正确解释文本内容。
  • 二进制格式:二进制格式适用于非文本文件,如可执行文件、压缩文件、图片和音频视频文件等。在这种模式下,文件的位序列被保留,确保原始文件和复制的文件在位级别上一一对应。这对于非文本文件来说是必须的,因为这类文件的结构不遵循ASCII字符编码,如果使用ASCII格式传输,可能会导致文件损坏。

二、FTP客户端与服务端

2.1、服务端

FTP服务器(File Transfer Protocol Server)是互联网上专门用于文件存储和访问服务的计算机,依照FTP协议提供服务。

  • 概念:FTP服务器是一个运行File Transfer Protocol(文件传输协议)的服务器软件,用于在计算机网络间进行文件的上传和下载操作。这些服务广泛应用于网站维护、文件共享、软件发布等场景,尽管存在安全性方面的考虑,但FTP仍然是一种常见的文件传输解决方案。
  • 工作原理:FTP服务器通过控制端口(默认为21)接收来自客户端的命令,并通过数据端口(默认为20)进行文件数据的传输。这种分离命令通道和数据通道的方式提高了FTP的效率和灵活性。FTP服务器支持两种工作模式,即主动模式和被动模式,以适应不同的网络环境和应用需求。
  • 用户类型:FTP服务器支持多种用户类型,包括本地用户、匿名用户和虚拟用户。本地用户是拥有操作系统级别账号的用户,可以访问特定的系统资源;匿名用户不需要登录凭证即可访问公开资源,通常只限于下载公共文件;虚拟用户则是通过独立的用户数据库文件进行管理,提供了更高的安全性。
  • 配置管理:FTP服务器的配置涉及到多个方面,如监听地址和端口、启用写入权限、限制并发连接数、设置数据传输超时时间等。通过配置文件(如vsftpd.conf),管理员可以根据需要调整这些参数,以优化服务器的性能和安全性。例如,通过设置chroot_local_user=YES可以限制本地用户只能访问自己的家目录,增强系统的安全性。
  • 安全性:由于FTP的文件传输是明文方式,存在一定的危险性,因此出现了更加安全的传输方式,如vsftpd。vsftpd是一个基于GPL发布的FTP服务器软件,以普通用户运行,降低进程权限,提高安全性,并整合了所有FTP命令,是许多Linux发行版默认的FTP服务端软件。它支持匿名与本地用户访问,还支持虚拟用户,且不再依赖xinetd服务。
  • 应用场景:FTP服务器在多个领域发挥着重要作用,如网站维护人员使用FTP上传网页内容,企业通过FTP共享内部文档,软件开发商利用FTP进行软件发布等。这些应用体现了FTP服务器在文件传输方面的便利性和高效性。

2.2、客户端

FTP客户端通过实现FTP协议的相关命令,允许用户与FTP服务器进行通信,从而实现文件的上传、下载、删除等操作。

  • 功能介绍:FTP客户端的基本功能包括连接管理、文件管理、数据传输等。它能够建立到FTP服务器的控制连接,通过该连接发送命令并接收服务器的响应。同时,根据需要建立数据连接以进行文件传输。
  • 连接建立:用户需要输入FTP服务器的地址或域名,以及必要的登录信息(如用户名和密码)。FTP客户端会尝试与服务器建立控制连接,此过程可能包括TCP/IP协议的三次握手,以确保建立一个可靠的连接。
  • 文件管理:一旦连接建立,用户可以执行多种文件操作命令,如列出服务器目录内容(ls)、改变远程工作目录(cd)、上传文件(put)、下载文件(get)等。这些命令通过控制连接发送到服务器,并由服务器端的FTP服务程序执行相应的操作。
  • 传输模式:FTP客户端支持两种文件传输模式:ASCII和二进制。ASCII模式适用于文本文件的传输,而二进制模式则用于非文本文件,如图片、音频、视频等。正确选择传输模式对于确保文件的正确性和完整性至关重要。
  • 断开连接:完成文件操作后,用户可以通过FTP客户端发出断开连接的命令,此时控制连接和任何现存的数据连接都将被关闭,从而结束FTP会话。
  • 高级功能:除了基本的文件操作外,许多FTP客户端还提供更高级的功能,如断点续传、整站下载、任务调度、带宽限制等,以满足不同用户的复杂需求。
  • 安全性考虑:由于FTP协议本身不支持加密,传输过程中的用户名、密码及数据均可能被窃取。因此,许多FTP客户端支持安全加固的FTP,如FTPS或SFTP,这些方式通过加密手段提高了数据传输的安全性。
  • 使用场景:FTP客户端广泛应用于个人和组织中,无论是简单的文件共享、网站更新还是复杂的数据迁移和备份操作,FTP客户端都能提供有效的解决方案。

三、FTP服务器软件介绍

3.1、WU-FTPD

Wu-FTPD是一个功能强大的FTP服务器守护程序,广泛应用于建立多种类型的FTP服务器。

  • 注册方式:Wu-FTPD支持三种注册方式:匿名FTP、实际用户FTP以及guest FTP。匿名FTP允许使用用户名"anonymous"和一个email类型的口令进行注册,适用于不需要身份验证的公共资源共享场景。
  • 安全性能:尽管Wu-FTPD发布较早,但在其最新版本中,已经针对系统安全性问题进行了完善的修正,包括对不同网域实行不同存取权限和可存取时段的控制,在用户下载文件时自动执行压缩或解压工作,从而增强了服务器的安全性和用户体验。
  • 安装启动:Wu-FTPD的安装有两种方式:RPM包安装和源代码安装。RPM包安装简单快捷,只需几个步骤即可完成;而源代码安装则提供了更多的自定义选项,适合有一定经验的用户。安装完成后,可以通过xinetd或命令行方式启动Wu-FTPD服务器,以开始使用FTP服务。
  • 使用场景:Wu-FTPD因其强大的功能和灵活配置,被广泛应用于需要文件共享和传输的各种场合,如网站维护、数据备份、软件发布等。它的高性能和灵活性使其成为许多组织和个人的首选FTP服务器软件。
  • 高级功能:Wu-FTPD还具备一些高级功能,如记录FTP Server使用情况、限定最多联机人数以符合整体运作效能、显示相关讯息让使用者了解接收状态、可将FTP Server暂停便于系统维护等。这些功能为管理员提供了更精细的服务器管理和控制能力。

3.2、ProFtpD

ProFTPD因其高度模块化和配置灵活而受到广泛欢迎,支持像Apache一样的配置文件格式,使其相对易于管理和配置。该服务器既可以作为独立的服务器运行,也可以从inetd或xinetd启动,提供了多种运行模式以适应不同的网络环境和需求。

  • 安全性:ProFTPD在设计时特别注重安全特性,它支持Shadow密码系统,可以降低密码被攻击的风险。同时,它可以非特权用户身份运行,进一步降低潜在的安全漏洞风险。
  • 模块化:ProFTPD采用了模块化的设计,允许通过加载或卸载模块来扩展其功能。这种灵活性使得管理员可以根据需要定制服务器的功能,例如通过添加MySQL和Quota模块来实现更高级的用户管理和磁盘空间限制。
  • 配置性:ProFTPD的配置方式与Apache类似,使用人类可读的文本文件进行配置,大大降低了新用户的学习曲线。管理员可以直接编辑纯文本文件来更改服务器设置,而不需要通过复杂的图形界面工具。
    IPv6支持:ProFTPD支持IPv6,为那些正在向下一代互联网协议过渡的网络环境提供了便利。
  • 虚拟服务器:ProFTPD支持配置多个虚拟FTP服务器,这意味着一个物理服务器可以托管多个看似独立的FTP站点,每个站点可以有不同的配置、权限和用户。
  • 日志功能:ProFTPD提供强大的日志功能,支持多种日志记录标准,如utmp/wtmp及wu-ftpd格式,便于管理员监控和审计服务器活动。

3.3、vsftpd

vsftpd以其高度的安全性和稳定性而广受欢迎,它可以运行在包括Linux、BSD、Solaris、HP-UNIX等多种系统上。作为一个完全免费且开放源代码的FTP服务器软件,vsftpd支持许多其他FTP服务器不支持的特性,如高安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户和支持IPv6等。

  • 安全性:vsftpd设计时考虑了安全性作为首要目标,提供多种安全特性,例如利用chroot环境来限制用户的访问到其主目录,以及通过PAM(Pluggable Authentication Modules)和xinetd来进行身份验证,从而降低服务运行所需权限,减少潜在的安全风险。
  • 性能优化:vsftpd能够处理大量并发连接而不牺牲性能,使其适用于从小型到大型企业级部署的环境。
  • 配置灵活性:vsftpd的配置文件提供了丰富的选项,允许管理员根据需要定制服务器的行为,包括匿名访问控制、本地和虚拟用户配置以及权限设置等。
  • 易管理性:vsftpd提供了与Apache类似的配置文件格式,简化了管理工作,使得新用户容易上手。
  • 支持虚拟用户:vsftpd支持虚拟用户数据库,这意味着用户可以独立于系统用户进行管理,增加了额外的安全性和管理灵活性。

3.4、Pure-FTP

Pure-FTPd以程序的健壮性和安全性为主要设计目标,提供了包括虚拟主机、IPv6和PAM等功能的支持。这款软件能在多种Unix系统上编译和运行,例如Linux、OpenBSD、NetBSD、FreeBSD等,甚至还有针对Android系统的移植版本。

  • 安全性:Pure-FTPd注重安全性,支持chroot环境限制用户访问至其主目录,以及通过PAM进行身份验证,这有助于降低潜在的安全风险。
  • 配置简易性:Pure-FTPd的配置相对简单,它不读取任何配置文件,而是通过命令行参数来实现配置。对于习惯使用配置文件的用户,官方提供了一个封装工具,可以将配置文件解析并转换成命令行参数,从而启动服务。
  • 多语言支持:Pure-FTPd提供多达20多种语言的支持,这使得它在世界各地都有广泛的应用基础。
  • 安装方式:Pure-FTPd支持源码编译安装以及YUM安装两种方式。通过源码安装,用户可以自定义编译选项,更灵活地适应不同的服务器环境。而YUM安装则简化了安装过程,适合快速部署。
  • 管理维护:Pure-FTPd还提供了一些用于管理和维护FTP服务器的工具,如pure-pw用于管理用户数据库,以及相关的服务命令来启动、停止和检查FTP服务的状态。

3.5、FileZilla Server

FileZilla Server是一款开源、免费的FTP(文件传输协议)服务器软件,具有高安全性和高性能的特点。该服务器软件的主要优势在于其开源的特性,这意味着它的安全性可以通过社区的力量得到持续的检验与增强。同时,由于其核心代码是基于C/C++开发的,这使得它在性能上也优于许多使用VB/Dephi等平台开发的应用程序。

  • 安全性与稳定性:FileZilla Server的高安全性能得益于它的开放源代码,任何人都可以查看代码,从而帮助发现并修复潜在的安全漏洞。此外,它还支持SSL/TLS加密,确保数据传输过程的安全。
  • 跨平台性:FileZilla Server能在多种操作系统上运行,包括Windows、Linux以及Mac OS X,这使其在不同的环境中都能得到有效的应用。
  • 用户友好的管理界面:FileZilla Server提供了一个直观的图形用户界面,使得管理FTP服务器变得简单方便。管理员可以轻松地添加用户账户、设置权限和监控服务器状态。
  • 资源占用低:由于其高效的代码基础,FileZilla Server在运行时占用的系统资源很少,这对于资源有限的服务器环境尤为重要。
    多语言支持:FileZilla Server支持多种语言,这使得它在全球范围内都有广泛的用户群体。
  • 配置灵活性:FileZilla Server支持通过配置文件进行详细定制,管理员可以根据需要调整服务器的各种参数,以适应特定的网络环境和业务需求。
  • 易于安装和维护:FileZilla Server的安装过程简单,提供了易于理解的向导,即使是初学者也能轻松完成安装和基本配置。同时,它也便于维护和升级,保持服务器软件的最新版本。
  • 社区支持:作为一个开源项目,FileZilla Server拥有活跃的社区支持。用户可以在社区中寻求帮助,分享经验,甚至参与软件的开发和改进。

3.6、Tftpd

TFTP(Trivial File Transfer Protocol)是TCP/IP协议族中的一个,用于在客户机与服务器之间进行简单文件传输的协议。它基于UDP协议实现,通常使用端口号69,适用于不需要复杂配置或安全特性的基本文件传输任务。

  • 功能和应用:Tftpd主要提供TFTP服务,支持从文件服务器上获取或写入文件的基本操作。由于其设计上的简洁性,Tftpd不提供如FTP服务器般的目录列表、认证等高级功能。这使得Tftpd特别适合于那些需要快速而简单的文件传输场景,如固件升级、系统引导等。
  • 特点和优势:TFTP的设计简单,易于设置和使用。它主要用于小文件的传输,因此开销不大,反应迅速。尽管TFTP不具备FTP的全部功能,例如不能列出远程目录,无法进行用户身份验证等,但其简便的配置和管理仍然使它在很多场合下非常有用。特别是在嵌入式系统和网络设备管理中,TFTP因其轻量级的特点被广泛采用。
  • 安全性考虑:尽管TFTP的使用带来了便利,但它在安全性方面存在缺陷。比如,TFTP没有加密数据传输的功能,所有传输的数据均以明文形式发送,这可能不适合传输敏感信息。同时,由于TFTP缺乏复杂的错误恢复机制,一旦传输过程中出现故障,整个传输任务可能需要重新开始。

3.7、Ftpdash

Ftpdash是一款多线程FTP客户端和命令行实用程序,专门用于在Windows操作系统上进行文件传输操作。

  • 多线程性能:Ftpdash利用多线程技术来加快文件传输速度,允许用户同时发起多个文件传输任务,从而有效提升处理效率。
  • 文件管理功能:与其他FTP工具相比,Ftpdash提供了丰富的文件处理功能,如下载后自动从服务器删除文件、将文件移动到服务器上的特定目录,以及加密下载的文件等。
  • 易用性:Ftpdash虽然是基于命令行的,但它的设计注重用户体验,使得命令执行简单而直接。熟悉命令行操作的用户会发现Ftpdash是一个强大且高效的工具。
  • 自动化支持:Ftpdash支持脚本编写,用户可以通过编写脚本来自动化常见的文件传输任务,减少重复性的手动操作,提高生产效率。
  • 安全性考虑:在文件传输过程中,Ftpdash提供文件加密选项,帮助保护数据传输过程的安全性,防止敏感信息泄露。
  • 适用平台:Ftpdash主要适用于较旧的Windows系统,如Win9x, NT, 2000, XP和2003,这可能限制了其在现代Windows系统中的应用。

四、FTP服务器软件(vsftpd)安装与使用

注:因为上面的一些FTP软件在centos stream中无法安装,所以这里只进行了vsftpd安装。

4.1、vsftpd安装

  • 添加EPEL(Extra Packages for Enterprise Linux)软件源
bash 复制代码
[root@root ~]# dnf install epel-release
  • 更新软件包列表
bash 复制代码
[root@root ~]# dnf update
  • 安装FileZilla Server
bash 复制代码
[root@root /]# dnf install vsftpd
  • 启动 vsftpd 服务:
bash 复制代码
[root@root /]# systemctl start vsftpd
  • 查看vsftpd服务状态
bash 复制代码
[root@root /]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
     Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; preset: disabled)
     Active: active (running) since Wed 2024-06-12 17:27:48 CST; 32s ago
    Process: 100182 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
   Main PID: 100183 (vsftpd)
      Tasks: 1 (limit: 10483)
     Memory: 732.0K
        CPU: 2ms
     CGroup: /system.slice/vsftpd.service
             └─100183 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Jun 12 17:27:48 root systemd[1]: Starting Vsftpd ftp daemon...
Jun 12 17:27:48 root systemd[1]: Started Vsftpd ftp daemon.
  • 设置 vsftpd 服务为开机启动
bash 复制代码
[root@root /]# systemctl enable vsftpd
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.
  • 配置 vsftpd 服务
bash 复制代码
[root@root /]# vi /etc/vsftpd/vsftpd.conf 
## 将配置中的配置改为下述配置
anonymous_enable=YES
local_enable=YES
write_enable=YES
# anonymous_enable=YES:这个参数表示允许匿名用户登录FTP服务器
# local_enable=YES:这个参数表示允许本地用户登录FTP服务器
# write_enable=YES:这个参数表示允许用户在FTP服务器上写入文件
  • 重新启动 vsftpd 服务
bash 复制代码
[root@root /]# systemctl restart vsftpd
  • 安装ftp客户端
bash 复制代码
[root@root /]# dnf install ftp
  • 验证是否安装成功
bash 复制代码
[root@root /]# ftp localhost
Trying ::1...
Connected to localhost (::1).
220 (vsFTPd 3.0.5)
Name (localhost:root): root
530 Permission denied.
Login failed.
ftp> 
相关推荐
ZVAyIVqt0UFji几秒前
云舟观测:基于eBPF监控主机的TCP网络连接
网络·网络协议·tcp/ip·web安全·php
HEX9CF38 分钟前
【Linux】SQLite 数据库安装教程(Ubuntu 22.04)
linux·数据库·sqlite
AI原吾1 小时前
构建灵活、高效的HTTP/1.1应用:探索h11库
网络·python·网络协议·http·ai·h11
看山还是山,看水还是。1 小时前
Nginx 的 Http 模块介绍(中)
android·运维·网络·nginx·http
Tony聊跨境1 小时前
什么是 HTTP 代理?它如何工作?
网络·http·ip
licy__1 小时前
计算机网络期末考试试卷及答案
网络
码出钞能力1 小时前
UDP组播测试
网络·网络协议·udp
kimi-2221 小时前
Linux 常用命令二
linux
苏湘涵1 小时前
socket编程---UDP
linux·开发语言·网络·php·进程通信
、十一、1 小时前
Linux中ES的安装
linux·运维·elasticsearch