FTP服务器

news2024/12/27 11:16:06

文章目录

  • 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.coloradmin.cn/o/668689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【入门向】CV 小白如何入门?人脸识别教程带你学习计算机视觉

导言 计算机视觉作为人工智能领域的一个重要分支,旨在让计算机能够理解和解释图像和视频数据。而OpenCV作为一款开源的计算机视觉库,为开发者提供了丰富的工具和函数,用于处理图像、视频、对象检测、特征提取等任务。对于初学者来说&#xf…

chatgpt赋能python:如何在Python中捕获kill信号

如何在Python中捕获kill信号 在编写Python代码时,我们可能需要处理一些长时间运行的进程。有时候,我们会在运行这些进程时使用kill命令杀死它们。然而,Python进程是否可以捕获kill信号呢?答案是肯定的。 在本文中,我…

基于pyqt5、mysql、yolov7、chatgpt的小麦病害检测系统v1.0

基于pyqt5、mysql、yolov7、chatgpt的小麦病害检测系统设计与实现 一、界面设计1.1安装pyqt51.2创建用户子窗体1.3创建管理员主窗体1.4创建管理员子窗体1.5创建系统登陆界面 二、环境搭建2.1pyqt5工具配置2.2mysql5.7安装 三、编程实现3.1初始化数据库3.2创建用户数据库sdk文件…

chatgpt赋能python:Python如何快速提取指定行和列的数据?

Python如何快速提取指定行和列的数据? 在进行数据分析和处理时,常常需要从海量数据中筛选出所需的数据。这时,Python是一款非常强大的工具,可以方便地进行大规模数据清洗和筛选。本文将介绍如何使用Python快速提取指定行和列的数…

【JVM篇】手撸上万字带你吃透“垃圾回收”

前言:大家好,我是TwosJel,一名21级的本科生(*^▽^*),最近二刷了《深入理解Java虚拟机》,因此想写一篇关于垃圾回收的随笔,于是便有了这篇文章❥(^_-)。 个人主页:TwosJel 个人介绍&#xff1a…

JWT --- 入门学习

1.常见的认证机制 basic auth : 每次请求都会携带用户的username,password,易被黑客拦截。 Cookie auth : 我们请求服务器,创建一个session对象,客户端创建cookie对象。客户端每次访问,携带cookie对象。 (在当今&…

chatgpt赋能python:Python排队:提高效率、优化流程的神器

Python排队:提高效率、优化流程的神器 随着科技的不断进步,排队已经成为了现代生活中不可避免的一部分。在各个行业中,排队都是必须考虑的问题,包括餐馆、医院、机场和银行等等。针对排队问题,我们可以使用Python编程…

使用Vue + FormData + axios实现图片上传功能实战

前言 上节回顾 上一小节中,我们添加了Vue-router的路有数据,这些数据都将是后续实战课程中的真实路由数据了。同时引入了ElementUI的el-menu做为左侧菜单的组件,但本专栏的特点就是遇到第三方功能和组件,自己尽量也要实现一遍&a…

蓝牙ATT协议介绍

介绍 ATT,Attribute Protocol,用于发现、读、写对端设备的协议(针对BLE设备) ATT允许蓝牙远程设备(比如遥控器)作为服务端提供拥有关联值的属性集,让作为客户端的设备(比如手机、电视)来发现、…

【软件工程】软件工程期末考试试卷

瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( C)。 A、详细计划 B、可行性分析 C、 运行阶段 D、 测试与排…

JavaScript中的CRUD操作指南示例 - 用DHTMLX创建医院管理系统!

创建、读取、更新和删除(CRUD)是现代web和移动应用程序执行的四个基本功能。然而这些函数是如何产生的,它们到底是做什么的? 在本文中,我们将简要介绍CRUD的含义以及它何时被引入编程的。文中我们还将使用用于医院管理的JavaScript演示应用程…

图文并茂spring-boot3 热部署配置(IntelliJ IDEA 2023.1)

文章目录 🥚 版本情况🧂 前言(踩坑)🍗 四步完成spring-boot热部署🥗 1、下载热部署模块🥗 2、application.yml 或者application.properties添加dev-tools配置🥗 3、settings中勾选条…

设计服务要考虑的7个维度

我在《软件设计的核心方法及实例解析》里提到软件设计的核心方法是分解和组合。分解粒度上,不同的架构师想法不一样,但是却有一点共性:设计一定要把不稳定的部分做封装,对外暴露稳定的部分,这也是有接口隔离这一原则的…

VS code 可以做什么?

编写 markdown VS code 真的是非常好用的Markdown编写工具,我用他来编写Markdown的时间甚至比写代码还要多。比如,我每周写的公众号文章。 相关插件: MarkdownMarkdown Preview EnhancedMarkdown All in One 编写python 大多数同学写pyth…

LLM - 基于 ChatGLM-6B 的工程配置搭建私有 ChatGPT 中文在线聊天

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131104546 Paper:GLM: General Language Model Pretraining with Autoregressive Blank Infilling 一篇于2022年发表在ACL会…

脑机接口科普0021——黑门01

本文禁止转载!!!! 我会在接下来的一段时间内,花一些章节,专门科普介绍一下《黑门》这部国产动漫。 科普《黑门》,源自网友看了我的脑机接口科普文章后,介绍我看黑门这个脑机接口科…

盘点那些 IT 技术面试官常用的 10 个挂人套路

最近几个朋友找我聊天,给我讲述了面试过程中遇到的一些不太理解的事情。作为一个技术面试官,今天来分享 10 个面试相关的套路。 1.自我介绍 自我介绍是一个重要的开始,好的开始是成功的一半。不需要太多花里胡哨的东西,简单、清…

86墙插双联明装新款:蓝奥声智能用电设备安全防护有多强

物理绝缘和智能数据分析安全技术重塑了墙壁插座的安全标准,极大可能规避日常生活中的意外,只有做到意外情况下也不会触电,这样的墙壁插座才能真正叫安全墙壁插座,“不触电且足够安全”应该成为墙壁插座的安全标配标准。 智能物理…

检测 ARP 欺骗

地址解析协议 (ARP) 是网络通信的基本推动因素。作为网络互联网层和网络链路层之间的桥梁,此网络协议将网络地址 (IP) 转换为物理层地址(MAC 地址)。ARP协议支持的地址转换在促进同一LAN中不同网…

给数据库构建一个展示界面

给mySQL构建一个展示界面 这是“构建个人小型医学数据库”系列文章的最后一部分。通过之前的工作我们确定了所要收集的各类变量并将其录入到mySQL数据库中。 为了展示MySQL中存储的数据,通过摸索我们最终使用appML、PHP和JavaScript开发一个展示页面。这些技术可以…