码迷,mamicode.com
首页 > 其他好文 > 详细

文件传输协议之FTP

时间:2014-10-17 18:58:35      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:vsftp工作原理   vsftp配置文件讲解

FTP

FTP叫做FILE Transfer Protocol,文件传输协议,是比较古老的传输协议之一,它是以明文的方式来进行工作的,因此,它不够安全,后续我们主要介绍安全的ftp叫做vsftp。一般的ftp服务器能够支持三种用户的访问:

            本地用户

            匿名用户

            虚拟用户

当然,不同的用户的权限也不一样。对于本地用户和匿名用户的设置只需要修改ftp的配置文件即可。这个将在后文介绍;而对于虚拟用户需要借助mysql数据库来完成账号和密码的认证,这个过程在下一遍文章来介绍。

 

ftp的工作原理:

ftp是工作在tcp层的,因此客户端和服务器端需要建立三次握手,才可以连接连接。对于ftp比较特殊的就是,ftp有2个连接。

其中一个连接叫做命令连接(或者叫做控制连接),他工作在tcp的21端口上。该连接主要用作命令的下达,文件名查询,文件上传和下载等操作。

另一个连接叫做数据连接,它是用来传输数据的,在这种连接下,他有2种工作模式:

        主动模式:这种模式下ftp工作在tcp的20端口,该模式是由服务器向客户端发起连接请求。不过通常客户端后面都有防火墙等软件,因此服务器端发起的连接请求会被拒绝掉。

        主动模式:这是模式是有客户端向服务器端发起请求,这种模式下,客户端和服务器端使用的端口都是随机生成的。当服务器端生成端口后,通过命令连接发送过来,这样客户端就服务器端的该端口发起连接请求。

        对于数据连接它是按需创建的,也就是说只有当有数据传输时,他才会建立连接。当数据传输完毕后,就端口连接。但是命令连接可以一直存在(当然也有时间设定的)。

 

安装ftp服务器

对于ftp服务器端软件有多个:

                    wu-ftpd:
                     vsftpd: Very Secure ftp Daemon
                     proftpd:
                     pureftpd
                     Filezilla
                     Serv-U

客户端软件有:

            CLI界面的有:

                            ftp

                            lftp

            GUN界面有:

                              gftpd
                              FlashFXP
                              Cuteftp
                              Filezilla

在这里我们使用的服务器端软件为vsftp

安装完成vsftp后,会生成如下文件:

/etc/pam.d/vsftpd         #这是vsftpd使用pam模块的相关配置文件,主要用来作为身份认证之用的,还可

                                        以用来抵挡一些用户登入功能。
/etc/rc.d/init.d/vsftpd   #vsftp的服务脚本
/etc/vsftpd                    #主配置文件目录
/etc/vsftpd/ftpusers      #该文件下的用户都不允许登入到ftp上,它是基于pam来管理的
/etc/vsftpd/user_list      #该文件下的用户都不允许登入到ftp上,他是基于vsftpd自身来管理的
/etc/vsftpd/vsftpd.conf    #vsftpd的主配置文件

/usr/sbin/vsftpd                 #vsftpd的二进制程序               

/var/ftp                                #ftp用户的家目录和匿名用户访问的目录
/var/ftp/pub                        #上传和下载的文件目录

 

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

#####与服务器环境相关的设定值####

connect_from_port_20=YES

#ftp服务器主动建立连接使用的端口号

listen_port=21

#命令连接时使用的端口号

dirmessage_enable=YES

#当用户进入某个目录时,会显示某个文件里的信息,这个需要和下面的选项配合使用

message_file=.message  

#就是显示这个文件里的信息,文件名要是.message

listen=YES

#如果为YES,表示vsftpd以独立守护进程来工作的;为NO表示以瞬时守护进程来工作的。

#一般说来,对外使用独立守护进程,对内使用瞬时守护进程来工作

pasv_enable=YES

#表示支持被动连接模式

use_localtime=YES

#表示是否使用本地时间,默认使用格林威治时间(GMT)

write_enable=YES

#表示是否允许用户上传数据

connect_timeout=60

#表示在数据连接的主动模式下,如果服务器端发送的连接请求在60秒内没有得到响应,则强制断线

accept_timeout=60

#表示在数据连接的被动模式下,服务器端在60秒内没有得到客户端的连接请求,则强制断线

data_connection_timeout=300

#当服务器端和客户端的数据连接已经建立完成后,如果在300秒内由于某种原因在300秒无法顺利的完成数据传送,那么服务器端和客户端会断开连接

idle_session_timeout=300

#表示如果使用者在300秒内没有任何命令动作,则强制断开连接

max_client=0

#表示同一时刻最多允许多少个客户端同时连上vsftpd,0表示不限制

max_per_ip=0

#表示同一个ip最多允许发送多少个连接请求,0表示不限制

pasv_min_port=0, pasv_max_port=0

#在被动模式下,服务器端能使用的最大端口号和最小端口号,0表示随机取用而不限制

ftpd_banner=一些文字说明

#在登录ftp时,显示的信息

banner_file=/path/file

#和上面的功能是一样的,登录ftp时,会将这个文件里的信息显示出来

 

 

####与本地用户相关的设定值####

guest_enable=YES

guest_username=ftp

#这两行表示任何来访的用户都以ftp用户的身份来工作

local_enable=YSE

#这一行必须要是YES,这样/etc/passwd内的用户才可以登入进ftp服务器

local_max_rate=0

#对本地用户进行限速,单位是bytes/second,0表示不限制

chroot_local_user=YES

#将使用者限制在该用户的家目录下,为了安全起见,设定为YES比较好

chroot_list_enable=YES

#是否启用chroot写入列表的功能

chroot_list_file=/etc/vsftpd.chroot_list

#以上面的选项结合使用,只要是这个文件里的用户都会现在在用户的家目录下

userlist_enable=YES

#是否启用用户列表写入功能

userlist_deny=YES

#只有当userlist_enable=YES时才会生效,如果此选项设定为YES,表示使用者账号写入到某个文件时,该文件内的用户无法登入vsftpd服务器

userlist_file=/etc/vsftpd/user_list

#这个选项的设定就是userlist_deny=YES要用到的文件

 

####匿名用户的相关设定值######

anonymous_enable=YES

#是否允许匿名用户登入

anon_world_readable_only=YSE

#仅允许anonymous具有下载和可读的权限

anon_other_write_enable=YES

#是否允许anonymous拥有写入之外的权限

anon_mkdir_write_enable=YES

#是否允许anonymous具有建立目录的权限,前提是anon_other_write_enable=YES

anon_upload_enable=YES (NO)

#是否允许anonymous具有上传的权限,前提是anon_other_write_enable=YES

no_anon_password=YES

#表示anonymous登入ftp服务器是否略过密码检查

anon_max_rate=0

#限制anonymous的传输速度,单位是bytes/second

anon_umask=077

#设定anonymous的umask值

 

 

####系统安全相关的设定####

ascii_download_enable=YES (NO)

#如果设定为 YES ,那么 client 就优先 (预设) 使用 ASCII格式下载文件

ascii_upload_enable=YES (NO)

#如果设定为 YES ,那么 client 就优先 (预设) 使用 ASCII格式上传文件

xferlog_enable=YES

#是否启用将上传和下载的信息记录起来

xferlog_file=/var/log/xferlog

#记录的文件是这个文件

xferlog_std_format=YES

是否设定为 wu ftp 相同文件格式

nopriv_user=nobody

#表示在数据传输时,服务器端以nobody的身份来执行,因为nobody的权限相当的低,及时被入侵,也只能获取到nobody的权限。

pam_service_name=vsftpd

#这个是vsftpd借助pam来认证时所需要的pam模块的名称

 

这个文件大概比较常用的选项就是这么多了。

 

 

本文出自 “linux学习之路” 博客,请务必保留此出处http://xslwahaha.blog.51cto.com/4738972/1565228

文件传输协议之FTP

标签:vsftp工作原理   vsftp配置文件讲解

原文地址:http://xslwahaha.blog.51cto.com/4738972/1565228

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!