FTP服务器

文章目录

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

FTP服务器

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

下面的图片来自百度百科

image-20230619172015721

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)连接作为说明

image-20230619174137900

上图讲解

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被动式连接

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

image-20230619190708461

上图讲解

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

image-20230620152848390

案例① :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. 匿名用户可以登录

image-20230620222827360

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

image-20230620223419030

image-20230620223518821

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

  1. 登录成功

image-20230620223552685

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

image-20230620223929599

image-20230620224011838

退出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. 登录显示欢迎消息

image-20230620231855052

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

image-20230620233152805

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

image-20230621012114042

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

image-20230621012227729

案例③:匿名登录的设定

  • 提供欢迎信息

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

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

  • 文件传输限速为 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. 登录测试

image-20230621002127872

  1. 上传测试

image-20230621002339754

  1. 下载测试

image-20230621002800914

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/1594.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Data JPA 报 HOUR_OF_DAY: 0 -> 1异常的解决过程和方案

在进行数据查询时,控制台报了Caused by: com.mysql.cj.exceptions.WrongArgumentException: HOUR_OF_DAY: 0 -> 1异常,查询得知:这是由于查mysql库,转换类型为datetime类型的字段引起的。 网上的解决方案有多种,大…

SIGGRAPH 2023|你的AI Tony老师上线了,英伟达提出毛发模拟新基线

2018年,网易《逆水寒》与AMD合作开发出来一款名为“海飞丝”的算法,该算法基于AMD的TressFX毛发模拟技术,可以在游戏中较为清晰的模拟人类头发的运动,大大增强了游戏场景的真实感。一个健康的成年人大概拥有10万根头发&#xff0c…

thinkphp 反序列化漏洞

文章目录 配置xdebug反序列化漏洞利用链详细分析poc1(任意文件删除)poc2(任意命令执行) 补充代码 配置xdebug php.ini [Xdebug] zend_extensionD:/phpstudy_pro/Extensions/php/php7.3.4nts/ext/php_xdebug.dll xdebug.modedebu…

机器学习之K-means聚类算法

目录 K-means聚类算法 算法流程 优点 缺点 随机点聚类 人脸聚类 旋转物体聚类 K-means聚类算法 K-means聚类算法是一种无监督的学习方法,通过对样本数据进行分组来发现数据内在的结构。K-means的基本思想是将n个实例分成k个簇,使得同一簇内数据相…

井盖异动监测传感器:井盖的安全守护者

随着城市化进程的不断加速,城市道路、人行道上的井盖扮演着重要的角色。然而,由于各种因素,如车辆冲击、材料老化等,井盖常常会出现异动情况,井盖异动不仅对行车和行人的安全构成威胁,还给城市基础设施的维…

机器学习之PCA算法

目录 PCA算法 PCA目标 PCA原理推导 基于最大可分性推导 基于最近重构误差推导 PCA算法流程 PCA优点 PCA缺点 基于PCA的人脸识别 PCA算法 PCA,即主成分分析(Principal Component Analysis),是一种常用的降维技术&#x…

0-1BFS 双端队列 广度优先搜索

一. BFS及0-1BFS的简单介绍 深度优先搜索DFS和广度优先搜索BFS是经常使用的搜索算法,在各类题目中都有广泛的应用。 深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。其过程简要来说…

【DBA专属】mysql-------->>>MMM高可用集群架构

Mysql---MMM高可用集群架构 目录 MMM安装部署 环境配置:(所有主机配置) 1、主机信息 2、关闭防火墙 3、同步时区 4、配置主机解析文件 5、配置ssh免密登录 6、所有机器安装epel源 数据库配置: 【所有数据库均做的配置】…

【探索 Kubernetes|作业管理篇 系列 9】Pod 的服务对象

前言 大家好,我是秋意零。 在上一篇中,我们介绍了 Pod 的生命周期以及区分 Pod 字段的层次级别,相信你对此有了充分的认识。 今天,我们还会接着以 Pod 展开,说说它的 “服务对象”,一听就知道是对 Pod 提…

Vuforia专题:设置AR摄像头自动对焦

Vuforia专题:设置AR摄像头自动对焦 一,前言 在之前使用的时候,如果没有设置自动对焦可以发现,摄像头画面极其模糊。并导致识别的结果不是很理想 加上自动对焦后的效果如下: 二、具体步骤 1、ARCamera添加脚本Cam…

嵌入式中C++开发的基本操作方法

第一:面向对象 1、配置环境 虚拟机上网(ping www.baidu.com)sudo apt-get update //更新软件包sudo apt-get install -f //更新软件依赖sudo apt-get install g //安装c编译器 2、C发展 c98,第一版 c03,c11,c17 3、为什么学习C 4、面向对…

计算机网络——网络层

序言 计算机网络中的网络层在当今的社会起到了什么作用? 现在的互联网通信,远程办公和远程教育,电子商务和在线服务,信息共享和社交媒体,物联网和智能家居都是通过网络层才能使用的。它连接了人们、设备和信息&#xf…