linux下vsftp安装配置详解

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

一:简介

FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。 


FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。 

PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。 当需要传送数据时,客户端在命令链路上用 PORT命令告诉服务器:“我打开了****端口,你过来连接我”。于是服务器从20端口向客户端的****端口发送连接请求,建立一条数据链路来传送数据。 


PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。 当需要传送数据时,服务器在命令链路上用 PASV命令告诉客户端:“我打开了****端口,你过来连接我”。于是客户端向服务器的****端口发送连接请求,建立一条数据链路来传送数据。 

从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。 



 vsftp提供3种远程的登录方式:

(1)匿名登录方式

  就是不需要用户名,密码。就能登录到服务器电脑里面


(2)本地用户方式

  需要帐户名和密码才能登录。而且,这个帐户名和密码,都是在你linux系统里面,已经有的用户。


(3)虚拟用户方式

  同样需要用户名和密码才能登录。但是和上面的区别就是,这个用户名和密码,在你linux系统中是没有的(没有该用户帐号)


二:安装

1、配置相关服务 
启动服务: 
[root@localhost root]#yum install vsftpd;安装vsftpd服务 
#/etc/init.d/vsftpd start ;启动服务 
#chkconfig --level 235 vsftpd on ;让系统服务随着系统启动而启动 


配置相关文档: 
#vi /etc/vsftpd/vsftpd.conf 

 ######### 核心设置 ###########

local_enable=YES                                 # 允许本地用户登录

write_enable=YES                                 # 本地用户的写权限  

local_root=/home                                    #系统账户对应的ftp根目录

local_umask=027                                  #设置上传文件的权限(777减去此数的权限)

local_max_rate=3000000                       #限制系统用户传输速率,单位bite

dirmessage_enable=YES                       # 切换目录时,是否显示目录下.message的内容

dirlist_enable = NO

pam_service_name=vsftpd                    #vsftpd验证方式

connect_from_port_20=YES                  #启用FTP数据端口的数据连接

listen=YES                                          #以独立的FTP服务运行

listen_port=2121                                   # 修改连接端口,默认值为21。

ftp_data_port=2020                               # 修改数据端口,默认值为20。此参数用于PORT FTP模式。

port_enable=YES                                 #如果你要在数据连接时取消PORT模式时,设此选项为NO。默认值为YES

port_promiscuous=NO                          #取消PORT安全检查。该检查确保外出的数据只能连接到客户端上。小心打开此选项

#async_abor_enable=NO                      #设定支持异步传输功能。

#ascii_upload_enable=YES                   #设定支持ASCII模式的上传功能。

#ascii_download_enable=YES               #设定支持ASCII模式的下载功能。


######### 匿名登录设置 ###########

anonymous_enable=NO                         #禁止匿名 

anon_root=/data                                    #匿名账户对应的ftp根目录

anon_upload_enable=YES                     #如果允许匿名登录,是否允许虚拟用户和匿名用户上传

anon_mkdir_write_enable=YES              #如果允许匿名登录,是否允许匿名建立文件夹并在文件夹内上传文件

anon_other_write_enable=YES               #如果允许匿名登录,允许虚拟用户和匿名用户修改文件名和删除文件

anon_max_rate=30000                           #如果允许匿名登录,限制匿名用户传输速率,单位bite


 ######### 用户限制设置 ###########

#### 限制登录

userlist_enable=yes                               # 用userlist来限制用户访问

userlist_deny=no                                   # YES禁止文件中的用户登录,NO,只允许在文件中的用户登录FTP服务器。

userlist_file=/etc/vsftpd.user_list            # 被读取的包含用户列表的文件


#### 限制目录

chroot_list_enable=NO                          # 锁定某些用户在自家目录中,是否调用限制在家目录的用户名单

chroot_local_user=YES                         是否限制所有用户都在家目录

chroot_list_file=/etc/vsftpd/chroot_list    #限制在家目录的用户名单所在路径,文件格式为一行一用户

注:通过搭配能实现以下几种效果:
①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
②当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
③当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
④当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。


######### 日志设置 ###########

xferlog_enable=YES                              #打开日志记录

xferlog_file=/var/log/vsftpd.log                #日志存放位置

xferlog_std_format=YES                        #标准日志格式


 ######### 安全设置 ###########

idle_session_timeout=600                      #用户空闲超时,单位秒

data_connection_timeout=120                #数据连接空闲超时,单位秒

accept_timeout=60                               # 将客户端空闲1分钟后断开

connect_timeout=60                             # 中断1分钟后重新连接

local_max_rate=50000                          # 本地用户传输速率,单位bite

max_clients=200                                  # FTP的最大连接数

max_per_ip=5                                      # 每个IP允许的连接数,0表示没有限制,需要运行于独立模式方可


######### 被动模式设置 ###########

pasv_enable=NO                                  #是否使用PASV被动模式

pasv_min_port=5000                            # 被动模式最小端口,0 表示任意。

pasv_max_port=6000                           # 被动模式最大端口,0 表示任意。

pasv_promiscuous=NO                        #PASV模式的安全检查,该检查确保数据连接和控制连接是来自同一个IP地址,小心打开此选项。


######### 其他设置 ###########

ftpd_banner=Welcome to Ftp Server!             #欢迎信息


######### 虚拟用户配置文件###########

guest_enable=YES                               #允许虚拟用户

guest_username=ftpadmin                    #指定虚拟用户的宿主用户

virtual_use_local_privs=NO                   #设定虚拟用户的权限符合他们的宿主用户

user_config_dir=/etc/vsftpd/vsftpd_user_conf          #设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同


2、添加虚拟主机用户 
添加用户abc,用户目录指定为/data/abc,且此用户不能登陆系统. 
#/usr/sbin/adduser -d /home -s /sbin/nologin ftpadmin
注-s /sbin/nologin是让其不能登陆系统,-d 是指定用户目录为/data/abc 
#passwd ftpadmin  设置密码 
#chown –R ftpadmin:ftpadmin /home
注:将用户目录及其子目录的所有和所属的组设置为home



三:相关的配置详解
1.匿名用户相关设置 

当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;

当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO。

当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传、下载、删除、重命名)。

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,

anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限。

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限。

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限。

当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限。

 

2.FTP服务器的流量控制 
如何对指定用户进行流量限制呢? 
#vi /etc/vsftpd/vsftpd.conf,添加一行: 
user_config_dir=/etc/vsftpd/vsftpd_user_conf   
虚拟账户的配置目录,会覆盖vsftpd.conf的配置

#touch /etc/vsftpd/vsftpd_user_conf/test01 为test01这个用户建立一个test01文件 
#vi /etc/vsftpd/vsftpd_user_conf/test01 添加以下内容 
local_max_rate=100000 
保存重启服务即可. 


四、启动服务: 
#/etc/init.d/vsftpd start ;启动服务 
#chkconfig vsftpd on ;让系统服务随着系统启动而启动


到此,整个小巧的ftp服务器搭建成功。可以使用FileZilla FTP或FlashFXP等客户端软件登陆ftp server了。

本文转自奔跑在路上博客51CTO博客,原文链接http://blog.51cto.com/qiangsh/1582286如需转载请自行联系原作者


qianghong000

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3天前
|
安全 Linux 开发工具
【Linux】vim使用与配置教程
Vim是一款功能强大的文本编辑器,广泛应用于Linux环境,是开发者和系统管理员的必备工具。本文介绍了Vim的基本操作与简单配置,涵盖命令模式、插入模式和底行模式的使用方法,以及光标定位、复制粘贴、搜索替换等常用技巧。同时,文章还提供了实用的分屏操作和代码注释方法,并分享了通过`.vimrc`文件进行个性化配置(如显示行号、语法高亮、自动缩进等)的技巧,帮助用户提升文本编辑效率。掌握这些内容,能让Vim更好地服务于日常工作与开发需求。
28 3
|
14天前
|
存储 IDE Linux
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
本文详细介绍了在VMware虚拟机中安装CentOS 6.8的全过程。首先,需确保已安装VMware并开启V-CPU虚拟化功能,可通过BIOS设置或使用LeoMoon CPU-V工具检测。接着,下载CentOS镜像文件,并在VMware中新建虚拟机,配置CPU、内存、硬盘等参数。最后,加载ISO镜像启动虚拟机,按照提示完成CentOS的安装,包括语言、键盘、存储方式、地区、密码设置及硬盘分区等步骤。安装完成后,以root用户登录即可进入系统桌面,开始学习Linux命令和操作。
71 12
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
|
4天前
|
Java Linux 应用服务中间件
在Rocky Linux 9上安装JDK并配置环境变量!
本教程介绍在Rocky Linux 9上安装JDK并配置环境变量的完整步骤。首先更新系统,清理旧版本JDK相关包及残留文件,确保环境干净。接着搜索并安装所需版本的JDK(如OpenJDK 17),验证安装是否成功。然后查找JDK安装路径,配置全局环境变量`JAVA_HOME`和`PATH`,最后验证环境变量设置。按照此流程操作,可顺利完成Java开发环境搭建,支持多版本切换(如JDK 8/11/17)。生产环境请谨慎操作,避免影响现有服务。
53 21
|
7天前
|
关系型数据库 MySQL 应用服务中间件
Linux 手动安装快速部署 LNMP 环境实战
本文详细记录了在阿里云ECS上手动搭建LNMP环境的过程,系统选用Ubuntu 24.04。主要内容包括:1) 使用`apt`安装Nginx和MySQL,并更新软件源;2) 编译安装PHP 8.4.5,配置PHP-FPM及环境路径;3) 配置MySQL root用户密码;4) 调整Nginx支持PHP解析并测试整体环境。通过此过程,重现手动配置服务器的细节,帮助熟悉各组件的安装与协同工作。
|
27天前
|
缓存 Ubuntu Linux
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
134 25
|
1月前
|
Linux Shell
问题记录:解决Linux登录故障,/etc/passwd配置受损该怎么操作
修复/etc/passwd文件是解决Linux登录故障的重要步骤。通过进入单用户模式、挂载文件系统、恢复或手动修复/etc/passwd文件,可以有效解决该问题。保持定期备份系统配置文件是预防此类问题的最佳实践。
57 13
|
1月前
|
Linux Shell
问题记录:解决Linux登录故障,/etc/passwd配置受损该怎么操作
修复/etc/passwd文件是解决Linux登录故障的重要步骤。通过进入单用户模式、挂载文件系统、恢复或手动修复/etc/passwd文件,可以有效解决该问题。保持定期备份系统配置文件是预防此类问题的最佳实践。
54 5
|
1月前
|
Ubuntu Java Linux
Linux 安装 Qualcomm ® SnapdragonTM Profiler
通过本文的详细介绍,您应该已经成功在 Linux 系统上安装并配置了 Qualcomm® Snapdragon™ Profiler,并能够连接 Android 设备进行性能分析。Snapdragon Profiler 提供了丰富的工具和功能,可以帮助开发者深入了解应用程序的性能瓶颈,从而进行优化。希望本文能对您有所帮助,让您在开发过程中更高效地使用 Snapdragon Profiler 进行性能分析和优化。
90 10
|
1月前
|
Linux
Linux安装svn并启动
Linux安装svn并启动
64 10
|
10天前
|
Linux
Linux 常用文件查看命令
`cat` 命令用于连接文件并打印到标准输出,适用于快速查看和合并文本文件内容。常用示例包括:`cat file1.txt` 查看单个文件,`cat file1.txt file2.txt` 合并多个文件,`cat > filename` 创建新文件,`cat >> filename` 追加内容。`more` 和 `less` 命令用于分页查看文件,`tail` 命令则用于查看文件末尾内容,支持实时追踪日志更新,如 `tail -f file.log`。
32 5
Linux 常用文件查看命令