FTP(File Transfer Protocol,文件传输协议),是一种应用层协议,可以实现很好的实现跨平台,但是无法实现一些其他的功能,像如文件系统挂载等功能。NFS(Network File System,网路文件系统)是工作在内核模式下的,因此不能很好的实现跨平台,一般只能是Linux主机或者Unix主机之间,但可以实现挂载使用等功能。SMB(Service Message Block,服务消息块协议),能够实现Windows和Linux主机之间的文件共享服务,可实现跨平台,在Linux上实现了CIFS(Common Internet File System)协议。

一、FTP协议

1、FTP原理知识

是一种C/S架构,基于套接字通信,用来在两台机器之间相互传输文件。FTP协议用到2种tcp连接:一是命令连接,用于客户端和服务端之间传递命令,监听在tcp/21端口;另一个是数据传输连接,用来传输数据,监听的端口是随机的。

2、FTP的被动模式、主动模式

主动模式的原理如下图:

tcp主动模式

主动模式存在的问题是,在客户端一般都会有防火墙的设置,当服务端与客户端数据进行数据通信时,客户端的防火墙会将服务端的端口挡在外面。此时,通信就会受阻。因此,被动模式就产生了。

被动模式的原理图如下:

tcp被动模式

被动模式也会存在防火墙的问题,客户端与服务端传输数据时,在服务端也会有防火墙,但在服务端的防火墙有连接追踪的功能,解决了防火墙的问题。因此,一般使用被动模式比较多。

3、FTP的用户认证

FTP支持系统用户,匿名用户,和虚拟用户三种用户认证。

匿名用户:登陆用户名是anonymous,没有密码

系统用户:是FTP服务器端的本地用户和对应的密码,默认访问的是用户家目录

虚拟用户:仅用于访问服务器中特定的资源,常见的虚拟用户认证的方式有使用文件认证或使用数据库进行认证。最终也会将这些虚拟用户同一映射为一个系统用户,访问的默认目录就是这个系统用户的家目录。

4、常见的状态信息码

1**:提示信息

2**:成功执行的状态码

3**:需要进一步提供补充类的信息码,例如在输入用户账号信息后出现此状态,提示继续输入密码

4**:客户端类的错误

5**:服务端错误

5、常见的实现FTP协议的工具

服务端:

Linux端:wu-ftpd,pureftp,vsftpd(Centos 6上默认提供的)

windows端:ServU,FileZilla-Server

客户端工具:

Linux操作系统:ftp,lftp,lftpget,wget,cul,gftp等

windows操作系统:FileZilla

6、vsftpd

在CentOS上默认提供的是vsftpd(Very Secure FTP),以安全著称。

用户认证配置文件:/etc/pam.d/vsftpd      
服务脚本:/etc/rc.d/init.d/vsftpd      
配置文件目录:/etc/vsftpd      
主配置文件:vsftpd.conf      
匿名用户(映射为ftp用户)共享资源位置:/var/ftp      
系统用户通过ftp访问的资源的位置:用户自己的家目录      
虚拟用户通过ftp访问的资源的位置:给虚拟用户指定的映射成为的系统用户的家目录

7、常见的的vsftpd的参数设置

匿名用户的配置: