vsftp服务

本文详细介绍了Linux系统中的FTP服务,特别是vsftpd的使用。内容涵盖FTP服务的基本概念,用户类型,工作模式,以及vsftpd的特点、配置文件、全局配置,包括最大连接数、传输速率限制。此外,还深入讲解了本地用户和匿名用户的权限控制,以及虚拟用户的设置。文章最后提及了vsftpd的日志文件和FTP的常用命令及状态码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、FTP服务

FTP(File Transfer Protocol)文件传输协议。本质上是一个应用程序,用于在互联网上控制文件的双向传输,上传和下载。同时具有客户端和服务端。在实际中,我们通常在Linux的主机上创建FTP的服务,同时在我们本地创建FTP的客户端,从而进行连接。

FTP用户类型:

  • 匿名用户:名为anonymous 或ftp 的FTP 用户,匿名FTP 用户登录后将FTP 服务器中的/var/ftp 作为FTP 根目录。匿名用户通常用于提供公共文件的下载,如架设公共软件下载的FTP 服务器,所有人都可以使用匿名用户进行软件下载。
  • 本地用户:账号是系统用户账号(/etc/passwd),使用FTP 本地用户账号登录FTP 服务器后,登录目录为本地用户的家目录。本地FTP用户账号通常和Web 服务器一起提供虚拟主机服务,作为网页虚拟主机更新网页的途径。
  • 虚拟用户:账号是为了保证FTP 服务器的安全性,由vsftpd 服务器提供的非系统用户账号,相对于FTP的本地用户来说,虚拟用户只是FTP服务器的专有用户,虚拟用户只能访问FTP服务器所提供的资源。虚拟用户FTP 登录后将把指定的目录作为FTP 根目录。虚拟用户与本地用户具有类似的功能,由于虚拟用户账号具有较高的安全性,可以替代本地用户账号使用。

FTP的工作模式:

FTP是仅基于TCP的服务,与众不同的是FTP协议要用到两个TCP连接,一个是控制链路,用来在客户端与服务器之间传递命令的;另一个是数据链路,用来上传或下载数据的。

FTP协议有两种工作方式:主动模式(PORT模式)和被动模式(PASV模式)

在这里插入图片描述

主动方式的连接过程:

  • 客户端从一个任意的非特权端口N(N>1024)向FTP服务器的命令端口(默认是21)发送请求,服务器接受连接,建立一条命令链路。
  • 当需要传送数据时,客户端开始监听端口N+1,并在命令链路上用PORT命令发送N+1端口到FTP服务器,于是服务器会从自己的数据端口(20)向客户端指定的数据端口(N+1)发送连接请求,建立一条数据链路来传送数据。

被动方式的连接过程:

  • 客户端从一个任意的非特权端口N(N>1024)向FTP服务器的命令端口(默认是21)发送请求,服务器接受连接,建立一条命令链路。
  • 当需要传送数据时,客户端在命令链路上用PASV命令发送。于是服务器会开启一个任意的非特权端口P(P>1024),并在命令链路上把端口发送给客户端,然后客户端从自己的数据端口(N+1)向服务器的数据端口(P)发送连接请求,建立一条数据链路来传送数据。

即服务端端口分配情况为:

主动模式:控制端口 21 数据传输端口 20

被动模式:控制端口 21 数据传输端口 随机

主动与被动FTP优缺点:

  1. 主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。

  2. 被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

FTP传输模式

FTP的传输有两种方式:ASCII传输模式二进制传输模式

ASCII模式:文本模式,以文本序列传输数据
二进制模式:Binary模式,以二进制序列传输数据

常见的FTP服务器程序:

IISFTP,Server-U、FileZilla、Apache FtpServer、wu-ftpd,Proftpd、VSFTPD (Very Secure FTP Daemon)

二、vsftpd

(一)概述

由于FTP的文件传输是明文方式,具有一定的危险性,所以就诞生了一种更加安全的传输方式vsftp。
vsftpd是一个基于GPL发布的FTP服务器软件,安全性高,是RedHat linux默认的FTP服务终端软件。也是linux服务器首选产品。

vsftp特点

(1)一般以普通用户运行,降低进程权限,提高安全性
(2)高权限指令需要上层程序许可
(3)整合了所有ftp命令
(4)用户chroot功能,限制限制用户只能访问自己的家目录
(5)是RedHat linux默认的FTP服务端软件。
(6)不再依赖xinetd服务。
(7)可同时容许匿名(anonymous)与本地用户(local)访问,还支持虚拟用户。

vsftp链接类型

控制链接:TCP 21,用户发送FTP命令信息
数据链接:TCP20,用户上传,下载数据

(二)vsftpd的配置文件

文件 说明
/etc/vsftpd/vsftpd.conf 主配置文件
/usr/sbin/vsftpd vsftpd的主程序
/etc/pam.d/vsftpd PAM认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户)
/etc/vsftpd/ftpusers 禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。
/etc/vsftpd/user_list 禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下也不能访问FTP服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问FTP服务器。
/etc/vsftpd/vsftpd_conf_migrate.sh 卸载时保存配置文件的脚本
/var/ftp 匿名用户主目录;本地用户主目录为:/home/用户主目录,即登录后进入自己家目录
/var/ftp/pub 匿名用户的下载目录,此目录需赋权根chmod 1777 pub(1为特殊权限SBIT,使上载后无法删除)
/etc/logrotate.d/vsftpd vsftpd的日志轮替配置文件

vsftpd的主配置文件:/etc/vsftpd/vsftpd.conf

# 是否允许匿名登录FTP服务器,默认设置为YES允许
# 用户可使用用户名ftp或anonymous进行ftp登录,口令为用户的E-mail地址。
# 如不允许匿名访问则设置为NO
anonymous_enable=YES

# 是否允许本地用户(即linux系统中的用户帐号)登录FTP服务器,默认设置为YES允许
# 本地用户登录后会进入用户主目录(即~目录),而匿名用户登录后进入匿名用户的下载目录/var/ftp/pub
# 若只允许匿名用户访问,前面加上#注释掉即可阻止本地用户访问FTP服务器
local_enable=YES

# 是否允许本地用户对FTP服务器文件具有写权限,默认设置为YES允许
write_enable=YES 

# 掩码,本地用户默认掩码为077
# 你可以设置本地用户的文件掩码为缺省022,也可根据个人喜好将其设置为其他值
#local_umask=022

# 是否允许匿名用户上传文件,须将全局的write_enable=YES。默认为YES
#anon_upload_enable=YES

# 是否允许匿名用户创建新文件夹
#anon_mkdir_write_enable=YES 

# 是否激活目录欢迎信息功能
# 当用户用CMD模式首次访问服务器上某个目录时,FTP服务器将显示欢迎信息
# 默认情况下,欢迎信息是通过该目录下的.message文件获得的
# 此文件保存自定义的欢迎信息,由用户自己建立
#dirmessage_enable=YES

# 是否让系统自动维护上传和下载的日志文件
# 默认情况该日志文件为/var/log/vsftpd.log,也可以通过下面的xferlog_file选项对其进行设定
# 默认值为NO
xferlog_enable=YES

# Make sure PORT transfer connections originate from port 20 (ftp-data).
# 是否设定FTP服务器将启用FTP数据端口的连接请求
# ftp-data数据传输,21为连接控制端口
connect_from_port_20=YES

# 设定是否允许改变上传文件的属主,与下面一个设定项配合使用
# 注意,不推荐使用root用户上传文件
#chown_uploads=YES

# 设置想要改变的上传文件的属主,如果需要,则输入一个系统用户名
# 可以把上传的文件都改成root属主。whoever:任何人
#chown_username=whoever

# 设定系统维护记录FTP服务器上传和下载情况的日志文件
# /var/log/xferlog是默认的,也可以另设其它
#xferlog_file=/var/log/xferlog

# 是否以标准xferlog的格式书写传输日志文件(即xferlog_file所定义的日志文件)
#xferlog_std_format=YES

#==================================================================================#
# 以下是附加配置,添加相应的选项将启用相应的设置
# 是否生成两个相似的日志文件
# 默认在/var/log/xferlog和/var/log/vsftpd.log目录下
# 前者是wu_ftpd类型的传输日志,可以利用标准日志工具对其进行分析;后者是vsftpd类型的日志
#dual_log_enable
# 是否将原本输出到/var/log/vsftpd.log中的日志&#
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值