FTP服务器

文章目录

  • FTP服务器
    • FTP的数据传输原理
      • FTP的功能简介
        • 不同等级的用户身份
        • 命令记录与日志文件记录
        • 限制用户活动的目录
      • FTP的工作流程与使用到的端口
        • FTP主动式连接
        • FTP被动式连接
    • vsftpd服务器基础设置
      • 为什么使用vsftpd
      • 所需要的软件以及软件结构
      • vsftpd.conf 配置值说明
        • 与服务器环境比较相关的设置值
        • 与用户比较相关的设置值
        • 匿名用户登录的设置值
        • 关于系统安全方面的一些设置值
      • vsftpd启动
    • 案例① :vsftpd.conf默认配置
      • 客户端测试(Linux客户端)
    • 案例②:实体账号的设定
      • 客户端测试(Linux客户端)
    • 案例③:匿名登录的设定
      • 客户端测试(Linux客户端)

FTP服务器

FTP(File Transfer Protocol) 是相当古老的传输协议之一,它最主要的功能是在服务器与客户端之间进行文件的传输。这个古老的协议使用的是明文传输的方式,且过去有相当多的安全危机历史。为了更安全的使用FTP协议,主要介绍较为安全的vsftpd这个软件。

下面的图片来自百度百科

FTP服务器_第1张图片

FTP的数据传输原理

FTP的功能简介

FTP服务器的功能除了单纯地进行文件的传输与管理之外,依据服务器软件的配置架构,它还可以提供以下几个主要的功能:

不同等级的用户身份

FTP服务器在默认的情况下,依据用户登录的情况而分为三种不同的身份

  1. User:User是指实体用户,在FTP服务器上需要注册、登录才能进行文件传输和管理。用户可以通过用户名和密码进行身份验证,可以访问FTP服务器上授权给他们的文件和目录,以及执行授权给他们的操作。
  2. Guest:Guest是指FTP服务器上的临时访客,可以通过FTP服务器进行文件传输和管理,但不需要进行注册和登录。Guest用户通常有一些限制,例如无法访问FTP服务器上的所有文件和目录,无法执行某些操作等。
  3. Anonymous:Anonymous是指FTP服务器上的匿名用户,可以通过FTP服务器进行文件传输和管理,但不需要进行注册和登录,也不需要提供密码。Anonymous用户通常有一些限制,例如只能访问FTP服务器上的公共文件和目录,无法访问私有文件和目录,无法执行某些操作等。

命令记录与日志文件记录

FTP服务器可以利用系统的syslogd来进行数据的记录,记录的数据包括了用户曾经使用过的命令和用户传输数据的记录,如传输时间、文件大小、传输速度等。这些数据记录可以保存在系统的/var/log/目录下的各个日志文件中,例如/var/log/messages、/var/log/syslog等。

限制用户活动的目录

为了避免用户在你的Linux 系统中随意切换到其他目录中去,所以将用户的工作范围局限在用户主目录下面。FTP可以限制用户仅能在自己的用户主目录中活动。如此一来,由于用户无法离开自己的用户主目录,而且登录FTP后,显示的根目录就是自己用户主目录的内容,这种环境称为 change root,简称chroot,即改变根目录的意思。

这样做的好处?如果当一个恶意用户以FTP登录你的系统当中,如果没有chroot的环境,它可以到/etc/、/usr/local、/home 等其他重要目录下面去查看文件数据。如果你没有做好一些文件权限的管理与保护,那他就有办法取得系统的某些重要信息,用来入侵你的系统。在chroot的环境下,当然会比较安全。

FTP的工作流程与使用到的端口

FTP的传输使用的是TCP数据包协议。FTP服务器使用了两个连接,分别是命令通道与数据流通道(ftp-data),因为是TCP数据包,这两个连接都需要经过三次握手。

FTP主动式连接

下面以FTP默认的主动式(Active)连接作为说明

FTP服务器_第2张图片

上图讲解

FTP建立命令通道的连接是指客户端与FTP服务器的一个端口(端口21)建立了一个连接,这个连接用于客户端向服务器发送各种命令,如查询文件名、下载、上传等命令。建立连接需要三次握手,客户端使用一个随机的大于1024的端口(如端口AA)来连接FTP服务器的端口21。

接下来,客户端会告诉FTP服务器要使用主动连接方式(Active),并告知FTP服务器客户端随机的一个端口(如端口BB)来接收数据。FTP服务器会通过端口20主动连接客户端的端口BB,建立数据传输通道。这个过程也需要三次握手。

最终,FTP客户端与服务器之间建立了两个连接,分别用于命令的执行和数据的传输。需要注意的是,数据传输通道只有在有数据传输的时候才会建立,而不是一开始连接FTP服务器就立刻建立的。

  • 命令通道的ftp(默认为port 21)
  • 数据传输的ftp-data(默认为port 20)

FTP中,客户端与FTP服务器之间会建立两个端口的连接,分别是端口21和端口20。这两个端口的工作不同,连接的发起端也不同。

  • 端口21是FTP服务器的默认端口,主要用于接受客户端的连接。

  • 端口20则是FTP服务器主动连接至客户端的端口,用于数据传输。

FTP被动式连接

什么是被动式连接呢?如下图

FTP服务器_第3张图片

上图讲解

FTP建立命令通道的连接是指客户端与FTP服务器的一个端口(端口21)建立了一个连接,这个连接用于客户端向服务器发送各种命令,如查询文件名、下载、上传等命令。建立连接需要三次握手,客户端使用一个随机的大于1024的端口(如端口AA)来连接FTP服务器的端口21。

接下来,当客户端需要使用数据通道来传输文件时,它会通过命令通道向服务器发出PASV的被动式连接请求。如果服务器支持被动式连接,它会先启动一个监听端口,并将这个端口号告知客户端。客户端会随机选择一个大于1024的端口号来连接服务器的监听端口,从而建立数据通道。

发现不同了吗?被动式FTP数据通道的连接方向是由客户端服务器端连接的

vsftpd服务器基础设置

VSFTP是一款FTP服务器软件,全名是"Very Secure FTP Daemon",翻译过来就是非常安全的FTP守护程序。它的初衷是建立一个安全性高的FTP服务器,因为在过去,FTP传输过程中的数据是明文传输的,存在安全隐患。

为什么使用vsftpd

  • vsftpd服务启动时使用一般用户的身份,权限较低,这样可以降低对Linux系统的危害。

  • 所有需要高执行权限的vsftpd命令都由一个特殊的上层程序控制,这个程序虽然有高执行权限,但功能被限制得很低,不会影响Linux系统的正常运行,也可以避免恶意用户利用FTP服务攻击Linux系统。

  • vsftpd主程序中已经整合了绝大部分FTP需要使用的额外命令功能,因此在chroot的情况下,vsftpd不仅可以正常工作,而且不需要额外的系统提供的命令,这样对于系统来说也比较安全。

  • 所有来自客户端且需要使用上层程序提供的高执行权限的vsftpd请求都被视为不可信任,必须经过身份确认才能使用,这样可以避免攻击者利用FTP服务获取系统权限。

  • 上层程序中仍然使用chroot()的功能来限制用户的执行权限,这样可以保护服务器免受攻击和破坏。

所需要的软件以及软件结构

vsftpd所需要的软件只有一个,那就是vsftpd。

可以通过以下命令来安装

[root@localhost ~]# yum install -y vsftpd

vsftpd设置数据比较重要的有如下几个:

/etc/vsftpd/vsftpd.conf

整个vsftpd的配置文件只有这一个文件。配置文件里的设置方式类似于bash变量的设置方式,就是用"参数=设置值"的格式来设置的。需要注意的是,等号两边不能有空格。

/etc/pam.d/vsftpd

这个是vsftpd使用PAM模块时的相关配置文件。主要用来作为身份验证之用,还有阻挡一些用户身份的功能

/etc/vsftpd/ftpusers

FTP用户黑名单,用于限制某些用户无法访问FTP服务器。

/etc/vsftpd/user_list

FTP用户白名单,用于控制允许或禁止登录FTP服务器的用户列表。

==/usr/sbin/vsftpd

vsftpd的主程序文件,用于处理FTP客户端的请求,实现FTP服务。

/var/ftp

这是vsftpd默认匿名用户登录的根目录

vsftpd.conf 配置值说明

与服务器环境比较相关的设置值

  • connect_from_port_20=YES(NO)

指定FTP服务器与FTP客户端之间数据传输的端口,设置为YES表示FTP服务器会使用20号端口向FTP客户端发起数据连接。

  • listen_port=21

指定FTP服务器监听的端口

  • dirmessage_enable=YES(NO)

当用户进入某个目录时,会显示该目录需要注意的内容,显示的文件默认是 .message,你可以使用下面的设置项目来定义。

  • message_file=.message

dirmessage_enable=YES时,可以设置这个项目让vsftpd寻找该文件来显示信息。

  • listen=YES(NO)

用于控制FTP服务器是否启用监听模式。

如果将listen设置为YES,则FTP服务器会监听指定的IP地址和端口,等待FTP客户端的连接请求;如果将listen设置为NO,则FTP服务器不会启用监听模式,也就无法接受FTP客户端的连接请求。

  • pasv_enable=YES(NO)

用于控制FTP服务器是否启用被动模式。一定要设置为YES

  • use_localtime=YES(NO)

用于控制FTP服务器是否使用本地时间。

  • write_enable=YES(NO)

如果你允许用户上传数据时,就要启动这个设置值了

  • connect_timeout=60

单位是秒,在数据连接的主动式连接模式下,我们发出的连接信号在60秒内得不到客户端的响应,则不等待并强制断线。

  • accept_timeout=60

当用户以被动式PASV来进行数据传输时,如果服务器启用被动端口并等待Client超过60秒而无回应,那么就强制断线。这个设置与connect_timeout 类似,不过一个是管理主动连接,一个是管理被动连接

  • data_connection_timeout=300

用于控制FTP数据连接的超时时间。如果FTP客户端在指定的时间内没有发送任何数据,或者FTP服务器在指定的时间内没有收到任何数据,FTP服务器会强制关闭数据连接。

  • idle_session_timeout=300

如果用户在300秒内没有命令操作,强制脱机!避免无用占用空间

  • max_clients=0

用于设置同一时间最多有多少Client可以同时连上vsftpd,限制使用FTP的用量

  • max_per_ip=0

与上面max_clients 类似,这里是同一个IP同一时间可允许多少连接

  • pasv_min_port=0、pasv_max_port=0

用于指定FTP服务器被动模式下使用的端口范围。默认情况下,pasv_min_portpasv_max_port的值都为0,这表示FTP服务器在被动模式下使用任意可用的端口。

  • ftpd_banner=一些文字说明

当用户连接进入vsftpd时,在FTP客户端软件上会显示的说明文字。不过这个设置值数据比较少,建议可以使用下面的banner_file 设置值来取代这个项目。

  • banner_file=/path/file

这个项目可以指定某个纯文本文件作为用户登录vsftpd服务器所显示的欢迎文字。

与用户比较相关的设置值

  • guest_enable=YES(NO)

若这个值设置为 YES 时,那么任何实体账号,均会被假设为访客(默认是不开放的)。至于访客在vsftpd当中,默认会取得ftp这个用户的相关权限。但是可以通过guest_username 来修改。

  • guest_username=ftp

在guest_enable=YES时才会生效,指定访客的身份

  • local_enable=YES(NO)

这个设置值必须要为YES时,在/etc/passwd内的账号才能以实体用户的方式登录我们的vsftpd服务器

  • local_max_rate=0

注册用户的传输速度限制,单位为 bytes/second,0为不限制。

  • chroot_local_user=YES(NO)

在默认情况下,是否要将用户限制在自己的用户主目录之内(chroot)?如果是YES代表用木默认就会被限制在自己的用户主目录,如果是NO,则默认是没有被限制在自己的用户主目录。

  • chroot_list_enable=YES(NO)

用于启用或禁用FTP用户的chroot限制列表功能。 当chroot_list_enable设置为YES时,FTP服务器将会根据chroot_list_file文件中的列表,对FTP用户进行chroot限制,即将用户限制在其主目录下,不能访问系统的其他目录。

  • chroot_list_file=/etc/vsftpd/chroot_list

用于指定FTP用户的chroot限制列表文件的路径。以上示例中,将chroot_list_file设置为/etc/vsftpd/chroot_list,表示FTP服务器的FTP用户的chroot限制列表文件路径为/etc/vsftpd/chroot_list

  • userlist_enable=YES(NO)

用于启用或禁用FTP用户列表功能。 当userlist_enable设置为YES时,FTP服务器将会根据userlist_file文件中的列表,对FTP用户进行访问限制,即只允许列出的用户进行FTP访问。

  • userlist_deny=YES(NO)

用于指定是否拒绝FTP用户列表中的用户进行FTP访问。 当userlist_deny设置为YES时,FTP服务器将会拒绝列出在userlist_file文件中的所有用户进行FTP访问。

  • userlist_file=/etc/vsftpd/user_list

用于指定FTP用户列表文件的路径,该文件用于控制FTP用户的访问权限。

匿名用户登录的设置值

  • anonymous_enable=YES(NO)

用于指定是否允许匿名FTP用户进行FTP访问。

  • anon_world_readable_only=YES(NO)

用于指定匿名FTP用户是否只能下载FTP根目录下的文件。

  • anon_other_write_enable=YES(NO)

用于指定匿名FTP用户是否允许上传和删除FTP根目录以外的文件。

  • anon_mkdir_write_enable=YES(NO)

用于指定匿名FTP用户是否允许在FTP根目录下创建子目录。如果要设置为YES,那么anon_other_write_enable 必须设置为 YES。

  • anon_upload_enable=YES(NO)

用于指定匿名FTP用户是否允许上传文件。如果要设置为YES,那么anon_other_write_enable 必须设置为 YES。

  • deny_email_enable=YES(NO)

用于指定是否禁止使用某些特定的邮箱地址进行FTP访问。

  • banned_email_file=/etc/vsftpd/banned_emails

用于指定储存被禁止访问的邮箱地址列表文件的路径。在设置的文件内,一行输入一个E-mail adress 即可

  • no_anon_password=YES(NO)

当设置为YES 时,表示匿名用户将会略过密码检验的步骤,直接进入vsftpd服务,一般设置都是NO。

  • anon_max_rate=0

用于限制匿名FTP用户的最大传输速率。如果将其设置为0,则表示不进行速率限制。

  • anon_umask=077

限制匿名用户上传文件的权限,如果是077则匿名用户传送过来的文件权限会是,-rw-------。

  • anon_root=/path

用于指定匿名用户的根目录。

关于系统安全方面的一些设置值

  • ascii_download_enable=YES(NO)

用于指定是否允许ASCII模式下载文件。

ASCII模式和二进制模式都是FTP传输文件的方式,其中ASCII模式会将文件中的\n字符转换为服务器上的特定行尾符(例如Linux上的\n转换为Windows上的\r\n),而二进制模式则直接传输文件内容。

  • ascii_upload_enable=YES(NO)

用于指定是否允许ASCII模式上传文件。

  • one_process_model=YES(NO)

用于指定是否启用单进程模式。

默认情况下,vsftpd使用多进程模式运行,每个客户端连接都会被分配到一个独立的进程中处理。而使用单进程模式可以将所有的客户端连接都处理在一个进程中,从而减少系统资源的占用。

  • tcp_wrappers=YES(NO)

用于指定是否启用TCP包过滤器,也称为TCP Wrapper。

  • xferlog_enable=YES(NO)

用于指定是否启用xferlog日志记录功能,该功能可以记录FTP服务器上的文件传输操作,包括上传、下载、删除等操作。

  • xferlog_file=/var/log/xferlog

用于指定xferlog日志文件的路径和文件名。

  • xferlog_std_format=YES(NO)

用于指定xferlog日志文件的格式。默认为NO,因为日志文件会比较容易读

  • dual_log_enable=YES、vsftpd_log_file=/var/log/vsftpd.log

用于指定是否启用双重日志记录功能。启用双重日志记录功能后,vsftpd会将FTP服务器上的文件传输操作记录在xferlog日志文件和vsftpd日志文件中。

  • nopriv_user=nobody

我们的vsftpd默认以nobody作为此一服务执行者的权限。因为nobody的权限相当低,即使被入侵,入侵者仅能取得nobody的权限。

  • pam_service_name=vsftpd

这个是PAM模块的名称,放置在/etc/pam.d/vsftpd中的就是这个。

vsftpd启动

启动vsftpd很简单

[root@localhost ~]# systemctl start vsftpd

FTP服务器_第4张图片

案例① :vsftpd.conf默认配置

在vsftpd.conf默认值当中,是同时开放实体用户与匿名用户的,CentOS默认值如下:

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
# 1. 与匿名用户有关的信息:
anonymous_enable=YES      # 启用匿名用户访问FTP服务器的功能
# 2. 与实体用户有关的设置 
local_enable=YES          # 启用本地用户访问FTP服务器的功能
write_enable=YES          # 启用FTP用户上传文件或创建目录的功能
local_umask=022           # 设置本地用户上传文件或创建目录的默认权限为022
# 3. 与服务器环境有关的设置
dirmessage_enable=YES     # 若目录下有 .message 则会显示该文件的内容
xferlog_enable=YES        # 启动日志文件记录,记录与 /var/log/xferlog
connect_from_port_20=YES  # 支持主动式连接功能
xferlog_std_format=YES    # 支持 WuFTP的日志文件格式
listen=NO                 # 禁用FTP服务器的独立监听模式,使用xinetd或systemd进行监听。
listen_ipv6=YES           # 启用FTP服务器的IPv6监听功能。
pam_service_name=vsftpd   # 指定使用名为vsftpd的PAM服务进行身份验证。
userlist_enable=YES       # 启用用户列表功能,限制只有在用户列表中的用户才能访问FTP服务器。
tcp_wrappers=YES          # 启用TCP包过滤功能,可以通过配置/etc/hosts.allow和/etc/hosts.deny文件来限制FTP服务器的访问。

通过这样的默认设置值,我们的vsftpd可以实现如下功能

  • 可以使用匿名账号或实体账号(/etc/passwd)登录

  • 匿名用户主目录在/var/ftp,且无法上传权限

  • 实体用户的用户主目录参考/etc/passwd,可以切换目录,也可以上传文件和创建目录

  • 任何于 /etc/vsftpd/ftpusers 内存在的账号均无法使用 vsftpd

  • 客户端有任何上传下载信息时,该信息会被记录到 /var/log/xferlog中

  • 主动连接的端口为20

当你启动vsftpd,放行防火墙21端口时,你的实体用户就能够直接利用vsftpd这个服务来传输数据了

[root@localhost csq]# systemctl restart vsftpd
[root@localhost ~]# setenforce 0
[root@localhost csq]# firewall-cmd --add-service=ftp --permanent
success
[root@localhost csq]# firewall-cmd --reload
success

客户端测试(Linux客户端)

Linux默认没有安装 ftp 安装一下ftp,因为要使用ftp进行连接传输

[root@ftp-client ~]# yum install -y ftp

为了测试上传功能能不能使用可以在 客户端root目录下创建个文件

[root@ftp-client ~]# echo "I am csq, who are you" >> hello.txt
[root@ftp-client ~]# ls
hello.txt

匿名用户登录

  1. 匿名用户可以登录

FTP服务器_第5张图片

  1. 匿名用户目录限制,仅能下载文件不能上传、删除、创建文件

FTP服务器_第6张图片

image-20230620223518821

实体用户登录(需要创建用户)

  1. 登录成功

FTP服务器_第7张图片

  1. 实体用户,用户目录在本地目录下并没有被限制目录,可以正常上传、下载、创建、删除文件

FTP服务器_第8张图片

FTP服务器_第9张图片

退出FTP 可以使用 quit 或者 bey 命令进行退出ftp

案例②:实体账号的设定

下面是我们希望达到的功能:

  • 用户登录时显示一些欢迎信息
  • 不允许匿名用户登录
  • 系统账号不可登录主机(UID小于500以下的账号)
  • zhw,zzh用户可以进行切换目录、上传、下载、建立目录以及修改文件等操作
  • 其他用户不可以切换用户目录
  • 用户建立文件、目录的umask希望设置为002
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
1. 与匿名用相关的信息 
anonymous_enable=NO                      # 由于是针对的实体账号的设置匿名用户先关了他
2. 与实体用户相关的信息,可写入,且umask 为002
chroot_local_user=YES                    # 设置为YES,将FTP用户限制在其主目录下
chroot_list_enable=YES                   # 启用FTP用户的访问限制列表,只有列在访问限制列表中的FTP用户才会被限制在其主目录下。
chroot_list_file=/etc/vsftpd/chroot_list # 指定FTP用户的访问限制列表文件的路径,该文件列出了允许被限制在其主目录下的FTP用户
allow_writeable_chroot=YES               # 如果该字段未添加,则未写在chroot_list文件的用户无法登录
local_enable=YES
write_enable=YES
local_umask=002                       # 修改为002 u=rwx,g=rwx,o=rx
userlist_enable=YES
userlist_deny=YES                     # 没有需要手动添加,作用是userlist_file里面的用户不能登录
userlist_file=/etc/vsftpd/user_list   # 没有需要手动添加,作用是指定目录

dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
banner_file=/etc/vsftpd/welcome.txt    # 这个是添加的文件,其作用是写入欢迎信息
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
tcp_wrappers=YES

[root@localhost ~]# systemctl restart vsftpd  # 改完后重启
[root@localhost ~]# setenforce 0
[root@localhost ~]# firewall-cmd --add-service=ftp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success

建立欢迎信息

[root@localhost ~]# vim /etc/vsftpd/welcome.txt
# 文件内容
欢迎光临FTP服务器   
主要的服务是针对本机实体用户提供的
若有问题请与我联系.

建立限制系统账号登录的文件

针对对系统账号来给予阻挡的机制,有两个文件,一个PAM模块管的,一个是vsftpd主动提供的

  • /etc/vsftpd/ftpusers:就是/etc/pam.d/vsftpd 这个文件设置所影响的
  • /etc/vsftpd/user_list:由 vsftpd.conf 的userlist_file所设置的

这两个文件内容是一样的,并且这两个文件必须要存在才行。将UID小于500的账号名称写入这两个文件内。一行一个账号

# 可以先给账号排序一下,找出小于500的系统账号
[root@localhost ~]# cat /etc/passwd | sort -t ':' -k  3 -n
# 然后在进行截取
[root@localhost ~]# cat /etc/passwd | sort -t ':' -k 3 -n | cut -d ":" -f 1
[root@localhost ~]# vim /etc/vsftpd/user_list
root
bin
daemon
....
....
...

设置/etc/vsftpd/chroot_list

指定可以切换目录的用户的列表,一行一个

[root@localhost ~]# cat /etc/vsftpd/chroot_list 
zhw
zzh

客户端测试(Linux客户端)

实体账号登录

  1. 登录显示欢迎消息

FTP服务器_第10张图片

  1. 用实体用户创建一个文件夹看看权限

FTP服务器_第11张图片

  1. 使用csq登录看看能否切换目录

FTP服务器_第12张图片

使用zhw看看能不能切换目录

FTP服务器_第13张图片

案例③:匿名登录的设定

  • 提供欢迎信息

  • 仅开放 匿名用户登录,且不需要密码

  • 匿名用户可上传/下载自己的资料

  • 文件传输限速为 1 MB 每秒

  • 数据连接的过程只要超过30秒没响应,就强制Client 断线

  • 只要匿名用户超过10分钟没有操作,就予以断线

  • 最大同时在线人数限制为 50人

  • 匿名用户的根目录在 /tmp/anon/下

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
# 1. 与匿名用户相关的信息:
write_enable=YES             # 启用FTP用户上传文件或创建目录的功能。
anon_other_write_enable=YES  # 启用匿名用户在指定目录中上传文件或创建目录的功能
anon_mkdir_write_enable=YES  # 启用匿名用户在指定目录中创建目录的功能。
anon_upload_enable=YES       # 启用匿名用户上传文件的功能。
anonymous_enable=YES        # 允许匿名用户登录
no_anon_password=YES        # 匿名用户登录,系统不会校验密码
anon_max_rate=1000000       # 最大带宽使用为 1MB
data_connection_timeout=30  # 数据流连接的限制为30秒,超过就断线
idle_session_timeout=600    # 若匿名用户发呆超过10分钟就断线
max_clients=50              # 最大同时在线人数为50人
anon_root=/tmp/anon         # 匿名用户的根目录在 /tmp/anon 下

# 2.与实体用户相关的本案例就关闭了
local_enable=NO

# 3. 与服务器环境有关的设置
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
banner_file=/etc/vsftpd/anon_welcome.txt  # 文件名有变
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
tcp_wrappers=YES

[root@localhost ~]# systemctl restart vsftpd  # 改完后重启
[root@localhost ~]# setenforce 0
[root@localhost ~]# firewall-cmd --add-service=ftp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success

建立欢迎信息

[root@localhost ~]# vim /etc/vsftpd/anon_welcom.txt
# 内容
欢迎使用FTP服务
uploads  提供匿名用户的上传数据 

创建一个50MB的文件

[root@localhost ~]# dd if=/dev/zero of=/tmp/anon/aaa bs=1M count=50

创建并修改文件权限

设置了允许匿名用户拥有完整的建立、删除、修改文件与目录的权限。不过,要实际生效还需要Linux文件系统权限正确才行。匿名用户取得身份是ftp,所以你想要让匿名用户上传数据到/tmp/anon/uploads中则需要这样做:

[root@localhost ~]# mkdir /tmp/anon/uploads
[root@localhost ~]# chown ftp /tmp/anon/uploads/

客户端测试(Linux客户端)

  1. 登录测试

FTP服务器_第14张图片

  1. 上传测试

FTP服务器_第15张图片

  1. 下载测试

FTP服务器_第16张图片

你可能感兴趣的:(Linux服务器架设学习,服务器,运维,linux,ftp)