Linxu中的FTP文件传输服务

一、FTP协议概述
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。工作模式为“FTP服务器/FTP客户端”。默认使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。
主要作用为:为用户提供上传和下载文件的服务 

    协议/应用程序、端口号(计算机常用端口号范围:1-65535)
    每一个协议需要一个或多个端口支持,
    对于计算机来讲,协议和端口就代表了我们用户所认识的"应用程序"
     
    FTP服务/ftp协议,采用的是TCP的20、21号端口,20号端口用于数据传输,21号端口用于FTP连接、指令控制。
    
    比如:通过浏览器访问网页,其实就是使用的http/https协议--->80/443端口实现的web网页数据传输。

1-65535
    
二、工作方式
1. 控制连接
客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的TCP 21端口发起一个建立连接的请求,FTP服务器接受来自客户端的请求,完成连接的建立过程,这样的连接就称为FTP控制连接。
2. 数据连接
FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。
FTP数据连接就是FTP传输数据的过程,它有两种"传输模式":
PORT(主动)方式的连接过程是: 
客户端通过任意端口N(N>1024)向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器客户端生成的端口N+1。于是服务器从20端口向客户端的N+1端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:
客户端通过任意端口N(N>1024)向服务器的FTP端口(默认是21)发送连接请求并监听N+1端口。服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端服务器随机生成的端口 P 3333(P>1024)。于是客户端通过N+1端口向服务器的P端口发送连接请求,建立一条数据链路来传送数据。
在真实环境下,双方服务器默认应该都开启了防火墙,因此一般采用主动模式而非被动模式。

主程序:/usr/sbin/vsftpd
服务名:vsftpd
用户控制列表文件
 /etc/vsftpd/ftpusers        //始终是黑名单
 /etc/vsftpd/user_list        //可当黑名单,也可当白名单
主配置文件位置
 /etc/vsftpd/vsftpd.conf


常用的全局配置项
listen=YES:是否以独立运行的方式监听服务,ipv6监听需要关闭才能启用该命令。
listen_address=192.168.4.1:设置监听的 IP 地址
listen_port=21:设置监听 FTP 服务的端口号
write_enable=YES:是否启用写入权限
download_enable=YES:是否允许下载文件
userlist_enable=YES:是否启用 user_list 列表文件
userlist_deny=YES:是否禁用 user_list 中的用户,如果是黑名单,表示不能登录FTP,如果是白名单,表示只在这里的用户能够登录FTP。
max_clients=0:限制并发客户端连接数,0表示不限制
max_per_ip=0:限制同一 IP 地址的并发连接数,0表示不限制
xferlog_enable=YES:是否记录用户上传下载日志
xferlog_std_format=YES:启用xferlog格式记录日志,no则使用vsftpd的格式
dirmessage_enable=YES:如果目录存在.message隐藏文件时,当进入此目录时,会显示.message里面的内容  
connect_from_port_20=YES:允许服务器主动模式
idle_session_timeout=600:当连接后空闲时间超过600秒将会自动断开
data_connection_timeout=120:当数据连接建立连接后空闲120秒自动断开
tcp_wrappers=YES:是否启用主机访问控制
#chown_uploads=YES        //开启用户上传数据归属
#chown_username=whoever        //上传的数据属于whoever用户
#nopriv_user=ftpsecure        //定义唯一一个ftp用户,该用户只用于ftp
#async_abor_enable=YES        //取消下载后客户端不挂起
#ascii_upload_enable=YES    //使用文本模式上传
#ascii_download_enable=YES    //使用文本模式下载,通常情况下用户数据包含文本和图片视频等,因此服务器会自动切换模式上传下载相关数据,文本用ascii,图片用二进制
#ftpd_banner=Welcome to blah FTP service. //FTP登录欢迎信息
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd/banned_emails //若是启动这项功能,则必须提供一个文档banner_emails,内容为email address。若是使用匿名登入,则会要求输入email address,若输入的email address 在此文档内,则不允许进入。
#pasv_enable=YES  
#port_enable=YES     //只能出现一个,表示连接模式,此项为主动
use_localtime=YES      //使用本机时间
max_clients=0  
    最大连接数量(stand-alone独立运行模式下)  # lsof -i:21 可查看当前模式vsftpd/xinetd服务,一般设置为YES
max_per_ip=0  
    每个客户端最大连接ftp服务器的连接数  


常用的本地用户 FTP 配置项
chroot_local_user=YES:是否将用户禁锢在主目录
#chroot_list_enable=YES:
#chroot_list_file=/etc/vsftpd/chroot_list    //当登陆FTP服务器时,被列在chroot_list文件中的用户,不可以访问FTP根目录以外的目录。
#ls_recurse_enable=YES          //是否可以使用ls -R 命令,递归列出子文件夹内的信息
local_enable=YES:是否启用本地系统用户
local_umask=022:本地用户所上传文件的权限反掩码   
local_root=/var/ftp:设置本地用户的 FTP 根目录,虚拟用户默认使用该选项,可以在虚拟用户的个人配置文件加入该配置。

local_max_rate=0:限制最大传输速率(字节/秒)

常用的匿名 FTP 配置项
anonymous_enable=YES:启用匿名访问
anon_umask=022:匿名用户所上传文件的权限掩码
anon_root=/var/ftp:匿名用户的 FTP 根目录,对虚拟用户无效。
anon_upload_enable=YES:允许上传文件
anon_mkdir_write_enable=YES:允许创建目录
anon_other_write_enable=YES:开放其他写入权
anon_max_rate=0:限制最大传输速率(字节/秒)

关于umask上传权限的说明:
umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到7
如:
umask值为022,则默认目录权限为755,默认文件权限为644。
如果配置的umask值为000,则默认目录权限为777,默认文件权限为666
如果配置的umask值为047,则默认目录权限为730,默认文件权限为620

注意:在使用匿名用户访问ftp时,不要给/var/ftp 777权限,否则会报错,无法登陆ftp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值