FTP工作原理

FTP服务的具体工作过程如下。

①当FTP 客户端发出请求时,系统将 动态分配一个端口(如 x )。

②若FTP 服务器在端口 21 侦听到该请 求,则在 FTP 客户端的端口 x 和 FTP 服务器的端口 21 之间建立起一个 FTP 会话连接。

③当需要传输数据时, FTP 客户端再 动态打开一个连接到 FTP 服务器的 端口 20 的第 2 个端口(如 x+1 ),

这样就可在这两个端口之间进行数据的传输。当数据传输完毕后,这 两个端口会自动关闭。

④ 当FTP 客户端断开与 FTP 服务器的 连接时,客户端上动态分配的端口 将自动释放掉。

215030489.jpg

主动模式和被动模式

在主动模式 中, FTP 客户端随机开启一个大于1024 的端口 X 向服务器的 21 号端口发起控制连接请求,然后开放 X+1 号端口进行监听; FTP 服务器接受请求并建立控制连接会话。如果客户端在控制会话中发送数据连接请求,那么服务器在接收到命令后,会用其本地的 FTP 数据端口(通常是 20 )来连接客户端指定的端口 X+1 进行数据传输。

被动模式的控制连接和数据连接都是由 FTP 客户端发起的。首先FTP客户端随机开启一个大于 102的端口 X 向服务器的 21 端口发起连接,同时会开启 X+1 端口。然后向服务器发送 PASV 命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于 1024的端口 Y 进行监听,然后用 PORT Y 命令通知客户端,自己的数据端口是 Y客户端收到命令后,会通过 X+1 号端口连接服务器的端口 Y ,然后在两个端口之间进行数据传输。这样就能使防火墙知道用于数据连接的端口号,而使数据连接得以建立。

180750559.jpg

Pure-ftpd服务器的工作原理

180926975.jpg

总体步骤:

1、搭建LNMP环境

2、源码安装Pure-ftpd

3、导入php页面管理Pure-ftpd的数据库文件

4、安装php页面管理Pure-ftpd环境

5、关联mysql与pureftpd(主要是修改配置文件)

6、在pureftpd服务器中创建虚拟帐号

搭建lnmp环境

由于pure-ftp的需要使用web的方式来进行管理,管理软件是基于php的,所以需要搭建php环境。搭建LNMP可以参考前面的LNMP博客。

181129643.png

安装pure-ftp

purre-ftp安装时,要连接数据库,所以要先安装mysql-devel。使用rpm包安装mysql-devel。

181242682.png

181250321.png

181257457.png

编译:make,安装:make install

生成配置脚本:

cp configuration-file/pure-config.pl /usr/local/pure/sbin/

修改配置脚本权限

chmod a+x /usr/local/pureftpd/sbin/pure-config.pl

建立FTP主目录

mkdir /ftproot

181422365.png

生成pure-ftpd的管理脚本。

pure-ftpd源码给提供了管理脚本,只不过要根据实际的情况,做相应的修改。

进入pure-ftpd的解压缩的目录中,拷贝contrib子目录中的redhat.init文件。

181528863.png

181537529.png

执行命令:chkconfig--add pure-ftpd 添加pure-ftpd服务到系统中,使它能够随系统而自动启动

产生pure-ftpd的启动配置文件

181627830.png

然后启动pure-ftpd服务:service pure-ftpd start

181710615.png

配置匿名用户登录环境

使用以下命令为其建立目录 / var /ftp 。

mkdir / var /ftp

如果希望 FTP 匿名用户能够上传文件到 FTP 服务器,还要保证 ftp 系统账户对主目录有写入权限。可以通过以下命令设置 / var /ftp 主目录的所有者和所有组为 ftp ,使得 ftp 系统账户对主目录有写入权限。

chown ftp:ftp / var /ftp

创建pure-ftpd用户数据库

181904713.png

在导入数据库之前需要对数据库文件做一些修改。

182158240.png

182207120.png

182311937.png

182446258.png

182541855.png

182504542.png

实现后台管理ftp用户

182731216.png

182911653.png

183004233.png

183006799.png

关联mysql与pureftpd

184940181.png

184947244.png

184958816.png

185003671.png

185009928.png

在pure-ftpd服务器上添加无登录权限的用户。

185118326.png

185218955.jpg

185442921.jpg

185537558.jpg

185606819.jpg

185658195.jpg

185740892.jpg

说明:以上软件包和数据库文件下载地址--》http://yunpan.cn/QGepu9PeTYpvm