FTP工作原理
FTP服务的具体工作过程如下。
①当FTP 客户端发出请求时,系统将 动态分配一个端口(如 x )。
②若FTP 服务器在端口 21 侦听到该请 求,则在 FTP 客户端的端口 x 和 FTP 服务器的端口 21 之间建立起一个 FTP 会话连接。
③当需要传输数据时, FTP 客户端再 动态打开一个连接到 FTP 服务器的 端口 20 的第 2 个端口(如 x+1 ),
这样就可在这两个端口之间进行数据的传输。当数据传输完毕后,这 两个端口会自动关闭。
④ 当FTP 客户端断开与 FTP 服务器的 连接时,客户端上动态分配的端口 将自动释放掉。
主动模式和被动模式
在主动模式 中, 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 ,然后在两个端口之间进行数据传输。这样就能使防火墙知道用于数据连接的端口号,而使数据连接得以建立。
Pure-ftpd服务器的工作原理
总体步骤:
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博客。
安装pure-ftp
purre-ftp安装时,要连接数据库,所以要先安装mysql-devel。使用rpm包安装mysql-devel。
编译: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
生成pure-ftpd的管理脚本。
pure-ftpd源码给提供了管理脚本,只不过要根据实际的情况,做相应的修改。
进入pure-ftpd的解压缩的目录中,拷贝contrib子目录中的redhat.init文件。
执行命令:chkconfig--add pure-ftpd 添加pure-ftpd服务到系统中,使它能够随系统而自动启动
产生pure-ftpd的启动配置文件
然后启动pure-ftpd服务:service pure-ftpd start
配置匿名用户登录环境
使用以下命令为其建立目录 / var /ftp 。
mkdir / var /ftp
如果希望 FTP 匿名用户能够上传文件到 FTP 服务器,还要保证 ftp 系统账户对主目录有写入权限。可以通过以下命令设置 / var /ftp 主目录的所有者和所有组为 ftp ,使得 ftp 系统账户对主目录有写入权限。
chown ftp:ftp / var /ftp
创建pure-ftpd用户数据库
在导入数据库之前需要对数据库文件做一些修改。
实现后台管理ftp用户
关联mysql与pureftpd
在pure-ftpd服务器上添加无登录权限的用户。
说明:以上软件包和数据库文件下载地址--》http://yunpan.cn/QGepu9PeTYpvm
本文出自 “人生在勤,不索何获” 博客,谢绝转载!