Linux——搭建FTP服务器

1、FTP简介

FTP(File Transfer Protocol) :是一种处于应用层的用于文件传输的协议。FTP客户端和FTP服务器之间的通信使用TCP/IP协议族。它规定了客户端和服务器之间的通信格式和命令集,包括用户认证、文件传输、文件名和目录信息等,允许用户在远程计算机上上传和下载文件。FTP协议的客户端可以是任何支持FTP协议的程序,例如Windows系统中的FileZilla、Mac OS系统中的Cyberduck、Linux系统中的vsftpd等。

FTP协议的工作原理:FTP协议的工作原理是客户端向服务器发送命令,服务器响应这些命令,并完成文件传输。

FTP协议的安全性:FTP协议是一种非安全的文件传输协议,因为它不使用加密技术来保护文件传输的安全性。这意味着,如果FTP服务器没有得到适当的保护,那么它的文件可能会被未经授权的用户访问或修改。因此,在使用FTP协议时,应确保FTP服务器和客户端都得到了适当的保护,例如使用防火墙和加密技术等。
FTP协议的服务器通常运行在Unix或Linux系统中,例如Apache的vsftpd、ProFTPD等。

1.1 FTP端口

FTP服务端默认使用的端口号为20和21,其中20是数据端口,21是命令端口。

命令端口:FTP服务端监听21端口号来等待控制连接建立,客户端有一个Socket用来连接FTP服务器的端口,21端口负责FTP命令的发送和接收返回的响应信息,只需要很小的网络带宽。建立控制连接时,服务端会验证客户身份,决定是否建立数据连接;当需要目录列表、传输文件时,建立数据连接,并且每次客户端都是用不同的端口号来建立数据连接;在数据连接存在期间,控制连接必须存在,一旦控制连接断开,数据连接会自动关闭;数据传输完毕,会中断这条临时的数据连接。在FTP连接期间,控制连接始终保持连接状态。

数据端口:FTP服务端监听20端口来等待数据连接,依赖于控制连接(必须先建立控制连接)、连接方式

1.2 连接模式

主动连接:

1、FTP客户端向FTP服务器发送PORT命令:FTP客户端(N端口 >= 1024)向FTP服务器发送一个PORT命令(21),告诉服务器本地的数据端口(N+1)。
2、FTP服务器响应PORT命令:FTP服务器收到PORT命令后,会响应一个端口号(20),将这个端口号告诉FTP客户端,并将其作为数据传输的源端口。
3、FTP服务器打开数据连接:FTP服务器的数据连接端口(20)打开一个连接到FTP客户端使用之前指定的端口号(N+1)。然后,进行数据传输。

被动连接:

1、FTP客户端向FTP服务器发送PASV命令:FTP客户端(N端口 >= 1024)向FTP服务器发送一个PASV命令(21),告诉服务器本地的数据端口(N+1)。
2、FTP服务器响应PASV命令:FTP服务器收到PASV命令后,会响应一个端口号(P>= 1024)。将这个端口号告诉FTP客户端,并将其作为数据传输的目标端口。
3、FTP客户端打开数据连接:FTP客户端使用之前指定的端口号(N+1)打开一个连接到FTP服务器的数据连接(P)。然后,进行数据传输。

主动连接问题在于客户端,FTP的客户端并没有实际建立一个到服务器数据端口的连接,它只是简单的告诉服务器自己监听的端口号,服务器再回来连接客户端这个指定的端口。对于客户端的防火墙来说,这是从外部系统建立到内部客户端的连接,这是通常会被阻塞的。在被动连接中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。

1、安装vspd

sudo yum install vsftpd   # Centos
sudo apt-get install vsftpd  # Ubuntu

2、配置服务
服务文件:/usr/lib/systemd/system/vsftpd.service
配置文件: /etc/vsftpd/vsftpd.conf
FTP用户配置文件:
/etc/vsftpd/ftpusers 此文件中的用户禁止登录服务器(需要配置)
/etc/vsftpd/user_list 此文件中的用户允许登录服务器

日志文件:/etc/logrotate.d/vsftpd ( 默认日志文件路径)

服务器配置如下:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022

dirmessage_enable=YES
connect_from_port_20=YES

xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES

listen=NO
listen_ipv6=YES

pam_service_name=vsftpd 
chroot_local_user=YES
local_root=/data
userlist_file=/etc/vsftpd/user_list

tcp_wrappers=YES
download_enable=YES

userlist_enable=NO
                                               
  • anonymous_enable=NO:禁止匿名用户访问FTP服务器。
  • local_enable=YES:允许本地用户(linux系统用户)通过其用户名登录FTP服务器。
  • write_enable=YES:允许FTP用户在服务器上写入文件。
  • local_umask=022:设置新创建文件的权限,通常用于确保文件有适当的权限。
  • dirmessage_enable=YES:允许用户在进入新目录时显示目录消息。
  • connect_from_port_20=YES:使用端口20作为数据连接的源端口。
  • xferlog_enable=YES:启用传输日志记录功能。
  • xferlog_file=/var/log/vsftpd.log:设置传输日志的文件路径。
  • xferlog_std_format=YES:使用标准的传输日志格式。
  • listen=NO:vsftpd将不会作为独立的服务运行,而是作为inetd或xinetd服务的一部分运行。
  • listen_ipv6=YES:允许vsftpd监听IPv6连接。
  • pam_service_name=vsftpd:使用Pluggable Authentication Modules (PAM)的配置名称。
  • chroot_local_user=YES:将本地用户限制在其主目录中。
  • local_root=/home:本地用户的根目录设置。
  • userlist_file=/etc/vsftpd/user_list:包含允许访问FTP服务器的用户列表的文件路径。
  • tcp_wrappers=YES:启用tcp-wrappers,用于网络访问控制。
  • download_enable=YES:允许FTP用户下载文件。

3、编辑/etc/vsftpd/user_list文件,加入允许登录的用户:
若没有用户,需要useradd 创建用户(不建议使用root用户)。

useradd  test1

在这里插入图片描述
userlist_deny和userlist_enable配置:默认情况下userlist_deny的值为YES,userlist_enable的值为NO。ftpusers 文件的优先级高于 user_list。如果一个用户同时出现在 ftpusers 和 user_list 文件中,那么该用户将被视为不允许访问 FTP 服务。
当userlist_enable=YES时,userlist_deny项的配置才有效,此时userlist_deny=YES表示user_list是一个黑名单,即所有出现在名单中的用户都会被拒绝登入;而userlist_deny=NO表示user_list是一个白名单,即只有出现在名单中的用户才会被准许登入。

配置现象
userlist_enable=YESftpusers 中用户允许访问user_list中用户允许访问
userlist_enable=NOftpusers 中用户禁止访问user_list中用户允许访问
userlist_deny=YESftpusers 中用户禁止访问(登录时可以看到密码输入提示,但仍无法访问)user_list中用户禁止访问
userlist_deny=NOftpusers 中用户禁止访问user_list中用户允许访问
userlist_enable=YES userlist_deny=YESftpusers 中用户禁止访问user_list中用户禁止访问(登录时不会出现密码提示,直接被服务器拒绝)
userlist_enable=YES userlist_deny=NOftpusers 中用户禁止访问user_list中用户允许访问

4、匿名访问:
若想让所有人不进行认证也可访问FTP服务器,可配置匿名访问:

anonymous_enable=YES
local_enable=YES
write_enable=YES

anon_upload_enable=YES
anon_mkdir_write_enable=YES
  • anonymous_enable=YES:允许匿名用户登录
  • local_enable=YES:也允许本地用户登录
  • anon_upload_enable=YES:允许匿名用户上传文件
  • anon_mkdir_write_enable=YES:允许匿名用户创建目录

配置文件部分参数:

参数作用
listen=NO是否以独立运行的方式监听服务
listen_address=ip地址设置要监听的IP地址
listen_port=21设置FTP服务的监听端口
download_enable=YES是否允许下载文件
userlist_enable=YES设置用户列表为"允许"
userlist_deny=YES设置用户列表为"禁止"
xferlog_enable=YES是否记录日志
xferlog_file=xferlog_file日志路径
max_clients=0最大客户端连接数,0为不限制
max_per_ip=0同一IP地址的最大连接数,0为不限制
anonymous_enable=YES是否允许匿名用户访问
anon_upload_enable=YES是否允许匿名用户上传文件
anon_umask匿名用户上传文件的umask
anon_root=/var/ftp匿名用户的ftp根目录
anon_mkdir_write_enable=YES是否允许匿名用户创建目录
anon_other_write_enable=YES是否开放匿名用户的其他写入权限(重命名、删除等)
anon_max_rate=0匿名用户的最大传输速率,0为不限制
local_enable=yes是否允许本地用户登录
local_umask=022本地用户上传文件的umask值
local_root=/vat/ftp本地用户的ftp根目录
local_max_rate=0本地用户的最大传输速率,0为不限制
chroot_local_user=YES是否将用户权限禁锢在ftp目录,以确保安全
tcp_wrappers=YES使用 tcp_wrappers 进行网络访问控制
  • 11
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ftp服务器Linux是一种网络服务器,可以用来传输文件,以及远程控制和访问网络资源。它的功能与Windows版本的ftp服务器类似,但是基于Linux操作系统。好的,我来回答关于FTP服务器Linux上的问题。 FTP(文件传输协议)服务器是一种允许用户通过网络在计算机之间传输文件的服务。在Linux上,可以使用多种工具和软件来设置FTP服务器。下面是一些设置FTP服务器的步骤: 1. 安装FTP服务器软件。常用的FTP服务器软件包括vsftpd、proftpd和Pure-FTPd等。你可以使用你喜欢的软件包管理器来安装它们,例如在Debian或Ubuntu上可以使用apt-get命令:sudo apt-get install vsftpd。 2. 配置FTP服务器。在安装完FTP服务器软件后,你需要对其进行配置。主要的配置文件位于/etc/vsftpd.conf(如果你使用vsftpd)。你可以根据需要更改其中的设置,例如允许匿名用户登录、指定允许访问的目录等。 3. 启动FTP服务器。一旦配置完FTP服务器,你可以使用以下命令来启动它:sudo systemctl start vsftpd。如果你想使FTP服务器在系统启动时自动启动,则可以使用以下命令:sudo systemctl enable vsftpd。 4. 测试FTP服务器。使用FTP客户端工具(例如FileZilla)连接到你的FTP服务器并测试它是否正常工作。你需要使用正确的用户名和密码来进行身份验证,并在成功登录后访问到FTP服务器上的文件和目录。 这是一个基本的FTP服务器设置过程。你可以根据需要进行更改和自定义。希望这可以帮助到你! ### 回答2: FTP服务器指的是提供FTP服务的服务器,使用FTP协议实现文件传输和管理。Linux是一个自由、开放源代码的类Unix操作系统,有着广泛的用途,包括用于FTP服务器。 在Linux系统中,可以使用多种FTP服务器软件,如VSFTP(Very Secure FTP),ProFTPD(Professional FTP Daemon)和Pure-FTPd等。常用的FTP服务器是VSFTP,它是一个快速、安全、稳定的FTP服务器软件,可以通过yum命令或者源码编译的方式安装。安装完成后,默认配置文件在/etc/vsftpd/vsftpd.conf,可以进行配置。 在配置FTP服务器时,需要指定用户、权限和访问路径等。可以为FTP服务器指定一个独立的用户账户,也可以使用Linux系统中已有的用户账户。设置用户账户后,需要授权,才能访问FTP服务器上的文件。访问权限可以设置为只读或者可读可写。同时,还可以为FTP服务器设置根路径和虚拟路径,以便限制用户的文件访问范围。 FTP服务器可以实现匿名访问,也可以实现认证访问。匿名访问不需要输入用户名和密码,但只能访问指定路径下的公开文件。认证访问需要输入正确的用户名和密码,才能访问FTP服务器上的文件。 在FTP服务器的访问方式中,最常用的是FTP客户端软件,如FileZilla、CuteFTP等。用户可以通过FTP客户端输入主机地址、用户名和密码,进行文件的上传和下载操作。 总之,FTP服务器是实现文件传输和管理的重要工具,Linux作为一款稳定、安全、高效的操作系统,可以很好地支持FTP服务器的部署和配置。 ### 回答3: FTP服务器是一种基于文件传输协议的服务器软件,它能够提供文件共享和传输服务。在Linux操作系统中,FTP服务器是一种常见的网络服务器之一,并且它可以通过不同的软件实现。以下是关于FTP服务器Linux上的详细介绍。 FTP服务器的作用 FTP服务器的主要作用是提供文件传输服务,它能够让用户通过FTP客户端连接到服务器上,进行文件上传、下载、删除、重命名等操作。用户可以通过FTP服务器来下载软件、文件、文档等各种资源,并且也可以通过FTP服务器来上传自己的文件到服务器上。 FTP服务器软件 在Linux操作系统中,有多种FTP服务器软件可供选择,比如: 1. Vsftpd:这是一种轻量级的FTP服务器软件,是Linux系统默认安装的FTP服务器。 2. ProFTPD:这是另一种常见的FTP服务器软件,它支持多种认证方式,如基于用户、基于IP等认证方式。 3. Pure-FTPd:这是一种安全、易用、快速的FTP服务器软件,它支持多种认证方式,如TLS/SSL加密认证、DB认证等。 FTP服务器的配置 在Linux中,FTP服务器一般需要进行一些相关配置才能正常工作,比如指定FTP服务器的工作目录、配置FTP的用户和权限、开启FTP的SSL/TLS加密等。 1. FTP服务器的工作目录:通常,FTP服务器的默认工作目录位于/var/ftp/目录下,但是也可以通过修改配置文件中的某些参数来指定FTP服务器的工作目录。 2. 配置FTP的用户和权限:在FTP服务器上,在用户可以访问FTP服务器前,需要为用户设置账号、密码和权限。可以通过系统中的用户管理工具对FTP用户进行管理。 3. 开启FTP的SSL/TLS加密:为了保障FTP传输的安全性,可以通过开启FTP的SSL/TLS加密来保障数据传输的安全。具体操作可以通过修改FTP配置文件进行。 总之,FTP服务器Linux操作系统中是一种非常常见和重要的网络服务器,通过配置FTP服务器能够提供文件共享和传输服务,在实际应用中也有着广泛的用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值