首页 > 代码库 > linux下vsftp安装配置详解

linux下vsftp安装配置详解

一:简介

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


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

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


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

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


二:安装

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


anonymous_enable=NO#禁止匿名 

local_enable=YES

write_enable=YES

local_umask=027#将上传文件的权限设置为:777-local_umask

xferlog_enable=YES#打开日志记录

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

xferlog_std_format=YES#标准日志格式

idle_session_timeout=600#空闲连接超时

data_connection_timeout=120

dirmessage_enable=YES

ftpd_banner=Welcom!!!#欢迎信息

max_clients=100#允许的最大连接数,定义为100,默认为0,表没有限制 

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

anon_max_rate=500

local_max_rate=3000000

chroot_local_user=YES

chroot_list_enable=NO

#以上两行表示所有的用户均不能切换到其他目录

listen=YES

listen_port=21

userlist_enable=YES

tcp_wrappers=YES

pam_service_name=vsftpd###vsftpd认证文件

guest_enable=YES#允许虚拟用户

guest_username=ftp#虚拟用户使用的系统账号

virtual_use_local_privs=NO#虚拟用户拥有本地系统权限

anon_upload_enable=YES#允许虚拟用户和匿名用户上传

anon_mkdir_write_enable=YES #用户有创建和删除目录的权限

anon_other_write_enable=YES#允许虚拟用户和匿名用户修改文件名和删除文件

local_root=/data/abc#此虚拟账户对应的ftp根目录

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

#虚拟用户名单保存在文件/etc/vsftpd/vsftpd.chroot_list中

user_config_dir=/etc/vsftpd/vsftpd_user_conf

#每个虚拟用户名的更加详细的培植保存在/etc/vsftpd/vsftpd_user_conf中


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

connect_from_port_20=YES

ftp_data_port=20#设定ftp数据传输端口(ftp-data)值。默认值为20。此参数用于PORT FTP模式。

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

pasv_enable=NO#不允许使用PASV模式

pasv_promiscuous=NO

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

pasv_min_port=5000

pasv_max_port=6000

#设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意。



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


三:相关的配置详解
1.匿名用户相关设置 
anonymous_enable=YES ,将YES改为NO, 禁止匿名用户登陆 
#non_mkdir_write_enable=YES ,将#注释去掉,允许匿名用户创建目录 
#non_upload_enalbe=YES ,将#去掉,允许匿名用户上传 
anon_world_readable_only=YES ,允许匿名用户下载,默认是禁止的,这个可以自行添加。 
Anon_other_write_enable=YES ,将其设为YES的话,就除了上传和创建目录外,还可以重命名,删除文件,默认是NO 
no_anon_password=NO ,将其设为YES,匿名用户不会查询用户密码直接登陆。 
ftp_username=ftp ,匿名用户登陆系统的账号默认为ftp,此项最好不要改,否则设置不当会给系统的安全带来威胁。 

注:

当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服务端口的指定 
listen_port=8021 ,指定命令通道为8021,默认为21 
listen_data_port=8020 ,指定数据通道为8020,默认为20 
3.上传模式的设置 
pasv_enable=YES ,是否允使用被动模式,默认是允许的。 
pasv_min_port=10000 ,指定使用被动模式时打开端口的最小值 
pasv_max_port=10004 ,指定使用被动模式时打开端口的最大值。 
4.Vsftp服务器指定IP地址 
listen_address=192.168.0.21 ,指定FTP,IP地址 
注:只有当vsftp运行于独立模式时才允许使用指定IP,如果在/etc/xinetd.d目录下已经建立了vsfpd文件,就要将该文件中的disable设置为yes,方可。 
5. 锁定用户,禁止用户离开用户主目录 
chroot_local_user=YES ,将其设为YES,就锁定在用户主目录,设为NO,可以切换 
将指定用户设置为锁定用户主目录: 
#chroot_list_enable=YES 
#chroot_list_file=/etc/vsftpd.chroot_list 
将其改为如下: 
chroot_list_enable=NO 
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list 
将上面保存,再做如下操作: 
#touch /etc/vsftpd/vsftpd.chroot_list 
#vi /etc/vsftpd/vsftpd.chroot_list ,在该文件中加入用户名单,如: 
test01 

注:通过搭配能实现以下几种效果:
①当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时,所有的用户均可以切换到其他目录。

6.FTP服务器的流量控制 
max_clients=100 ;允许的最大连接数,定义为100,默认为0,表没有限制 
max_per_ip=5 ;每个IP允许的连接数,0表没有限制,需要运行于独立模式方可 
anon_max_rate=50000 ;匿名用户最大带宽,单位为bps 
local_max_rate=200000 ;系统用户最大带宽 
如何对指定用户进行流量限制呢? 
#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 
保存重启服务即可. 
7.定制欢迎信息 
目录说明设置 
#vi /etc/vsftpd/vsftpd.conf 
#dirmessage_enable=YES,前的#去掉。 
然后我们定制一个.message,写上你想写的东西,然后把这个文件复制到各个用户的家目录中,就OK。 

系统欢迎消息设置 
ftpd_banner=Welcome!!! 
系统欢迎消息文件设置 
banner_file=/etc/vsftpd/welcome 与ftpd_banner相类似,不同之处在于,banner_file指定欢迎文件.
8、启动服务: 
#/etc/init.d/vsftpd start ;启动服务 
#chkconfig vsftpd on ;让系统服务随着系统启动而启动




linux下vsftp安装配置详解