pureftp在企业中的应用及配置

ftp简介:

     FTP是应用层的协议,它基于传输层,它们负责进行文件的传输。FTP是一个客户端-服务器协议,能操作任何类型的文件而不需要进一步处理。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间会非常长,并且不时的必需执行一些冗长的登陆进程。

     FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。当数据通过数据流传输时,控制流处于空闲状态。而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。此时,虽然文件可以成功的传输,但因为控制会话会被防火墙断开,传输会产生一些错误。

主动和被动模式 FTP有两种使用模式:主动和被动。主动模式要求客户端和服务器端同时打开并且监听一个端口以建立连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。

一个主动模式的FTP连接建立要遵循以下步骤

1.客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号命令端口。此时,源端口为随机端口x,在客户端,远程端口为21,在服务器。

2.客户端开始监听端口(x+1),同时向服务器发送一个端口命令(通过服务器的21号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口。

3.服务器打开20号源端口并且建立和客户端数据端口的连接。此时,源端口为20,远程数据端口为(x+1)。

4.客户端通过本地的数据端口建立一个和服务器20号端口的连接,然后向服务器发送一个应答,告诉服务器它已经建立好了一个连接。

被动模式FTP:

为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。

在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。

当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

1. 从任何大于1024的端口到服务器的21端口 (客户端的初始化连接)

2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接)

3. 从任何大于1024端口到服务器的大于1024端口 (客户端初始化数据连接到服务器指定的任意端口)

4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)

FTP和网页浏览器

大多数最新的网页浏览器和文件管理器都能和FTP服务器建立连接。这使得在FTP上通过一个接口就可以操控远程文件,如同操控本地文件一样。这个功能通过给定一个FTP的URL实现,形如ftp://<服务器地址>。是否提供密码是可选择的,如果有密码,则形如:@ftp://&lt;login>:<password>@<ftpserveraddress>。大部分网页浏览器要求使用被动FTP模式,然而并不是所有的FTP服务器都支持被动模式。

pure-ftpd 是一个快速、高效、轻便、安全的FTP服务器,它不象其他流行的FTP SERVER软件。以安全和配置简单为设计目标,支持虚拟主机,IPV6,PAM等功能。

pureftp的案例配置:

所用拓扑:

image

一,安装前的准备

1).配置本地yum服务器

[root@localhost ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo

1

2).安装所需要的软件包

[root@localhost Server]# yum install httpd php php-mysql mysql mysql-server mysql-devel –y

启动服务

[root@localhost Server]#service httpd start

[root@localhost Server]# service mysqld start

把下面的两种服务加入开机启动

[root@localhost Server]# chkconfig httpd on
[root@localhost Server]# chkconfig mysqld on

3).确认所需的软件组

[root@localhost Server]# yum grouplist

 2

3

4

二,安装并配置pure-ftp

1)编译并安装pure-ftp

[root@localhost ~]# tar zxvf pure-ftpd-1.0.36.tar.gz  -C  /usr/local/src/

[root@localhost ~]# cd /usr/local/src
[[root@localhost src]# cd pure-ftpd-1.0.36/

[root@localhost pure-ftpd-1.0.36]#./configure \
      --prefix=/usr/local/pureftpd \         //安装目录
       --with-mysql \
       --with-shadow \
       --with-pam  \
        --with-welcomemsg   \
       --with-uploadscript  \
       --with-cookie   \
       --with-virtualchroot \
       --with-virtualhosts \
       --with-diraliases \
       --with-quotas \
       --with-puredb \
       --with-sysquotas \
        --with-ratios \
       --with-ftpwho \
      --with-throttling \
      --with-language=simplified-chinese

编译

[root@localhost pure-ftpd-1.0.36]# make

安装

[root@localhost pure-ftpd-1.0.36]# make install

2)生成pure-ftpd的服务脚本

[root@localhost pure-ftpd-1.0.36]# cd configuration-file/

赋予pure-config.pl执行权限

[root@localhost configuration-file]# chmod a+x pure-config.pl

[root@localhost configuration-file]# cp pure-config.pl /usr/local/pureftpd/sbin/

创建pureftp配置文件存放的目录

[root@localhost configuration-file]# mkdir /usr/local/pureftpd/etc

把配置文件复制到所建的目录下

[root@localhost configuration-file]# cp pure-ftpd.conf  /usr/local/pureftpd/etc/

3)配置用service管理 pure-ftpd服务

改变如下行:
fullpath=/usr/local/pureftpd/sbin/$prog

pureftpwho=/usr/local/pureftpd//sbin/pure-ftpwho
$fullpath /usr/local/pureftpd/etc/pure-ftpd.conf –daemonize

按照说明修改配置文件如下:

[root@localhost pure-ftpd-1.0.36]# cd contrib/
[root@localhost contrib]# cp redhat.init /etc/init.d/pureftpd

[root@localhost contrib]# vim /etc/init.d/pureftpd

5

6

改变启动脚本的权限

[root@localhost contrib]# chmod 755 /etc/init.d/pureftpd

加入开机启动队列

[root@localhost etc]# chkconfig --add pureftpd
[root@localhost etc]# chkconfig pureftpd on

启动ftp服务
[root@localhost etc]# service pureftpd restart

4)配置ftp用户登录环境

修改配置文件pure-ftpd.conf
所要修改内容如下:
chrootEveryone              yes   限定在自己的家目录
NoAnonymous                 yes   不允许匿名登录
Bind                      127.0.0.1,21        监听本机回环 <可选>
Bind                      192.168.1.10,21    监听本机IP  <自行添加的,非必须>
CreateHomeDir               yes   允许用户登录后自动创建家目录   <必须>

按照上面的说明修改配置文件    

[root@localhost contrib]# cd /usr/local/pureftpd/etc/

[root@localhost etc]# vim pure-ftpd.conf

7

8

9

10

5)配置虚拟用户登录环境

[root@localhost ~]# mkdir /ftproot
[root@localhost ~]# chmod -R 777 /ftproot          //这不不做可以能会引起登录时报421错误
[root@localhost ~]# useradd virtualftp -d /ftproot -s /sbin/nologin –M        //创建虚拟用户对应的系统用户

改变用户的所属组及所用者
[root@localhost ~]# chown virtualftp:virtualftp /ftproot

6)设置环境变量

  [root@localhost ~]# echo PATH=$PATH:/usr/local/pureftpd/bin/ &gt;&gt;/etc/profile

[root@localhost ~]# cd /usr/local/pureftpd

[root@localhost pureftpd]# . /etc/profile
[root@localhost ~]# source /etc/profile

做完以上几步后pure-pw命令就可在任何路径下执行了

有关pure-pw 的命令用法如下:

# pure-pw show user                                 查看user这个用户的详细信息
# pure-pw list                                        是看用户列表的
# pure-pw passwd tony -m                              修改user的密码
# pure-pw mkdb /usr/local/pureftpd/etc/pureftpd.pdb   创建虚拟用户数据库。
# pure-pw usermod                                     修改用户

7).添加虚拟账号并与本地账号virtual映射

[root@localhost ~]# pure-pw useradd xht2 -u virtualftp -g virtualftp -d /ftproot/xht2 –m

说明:
   xht2是用户名,-u virtualftp是其实际的linux用户,-d指定起始目录,并锁定于该目录。如果不锁定,则用-D;如果需要不同的权限,可以建立新的linux用户与组

     如果用的系统自带的ftp用户,这样的话还需修改配置文件pure-ftpd.conf中的MinUID为ftp用户的UID 14,否则登录时会出现530错误;所以这里建议创建另一个非系统自带的用户做映射

建立用户数据库:

[root@localhost ~]# pure-pw mkdb /usr/local/pureftpd/pureftpd.pdb

说明:今后每添加或修改用户数据库都应该执行一次mkdb

8)修改配置文件指定pureDB路径

[root@localhost pureftpd]# vim /usr/local/pureftpd/etc/pure-ftpd.conf

11

([root@localhost ~]# vim /usr/local/pureftpd/etc/pure-ftpd.conf

1

9)指定mysqconfigfilel的路径

[root@localhost pureftpd]#vim     /usr/local/pureftpd/etc/pure-ftpd.conf
修改如下:

12 

三,配置web管理程序pureadmin0.3

1)解压压缩包

[root@localhost ~]# tar -zxvf PureAdmin-0.3.tar.gz -C /var/www/html

[root@localhost ~]# cd /var/www/html

2)重命名PureAdmin-0.3
[root@localhost html]# mv PureAdmin-0.3/ pureadmin

3)生成配置文件

[root@localhost ~]# cp pureftpd-mysql.conf  /usr/local/pureftpd/etc/

4)修改配置文件如下:

[root@localhost pureadmin]# cd pureadmin

[root@localhost etc]# vim pureftpd-mysql.conf

1

2

1

5)导入数据到mysql

为mysql设置密码:

[root@localhost ~]# mysqladmin -u root -p password "123"

导入ftpuser数据库

[root@localhost ~]# mysql -u root -p <pureftp.sql;

6)登录mysql查看ftpusers

[root@localhost ~]# mysql -u root -p ;

2

mysql>use ftpusers

3

4

mysql&gt; grant all privileges on ftpusers.* to ftp@localhost identified by 'tmppasswd';

mysql&gt; flush privileges;

6)修改pureadmin的配置文件

config.php文件的选项说明如下:

<?php
$cfg['dbhost']='localhost'; //mysql host
$cfg['dbname']='ftpusers';  //mysql db name                            所用的库&lt;与前面导入的sql中要一致>
$cfg['dbuser']='ftp';           //mysql user                           登录mysql的帐号
$cfg['dbpasswd']='tmppasswd';           //mysql password               登录mysql的密码

//ftp config
$cfg['page']=10;                                                       每页显示的用户数量
//ftp passwd type : TEXT/CRYPT/MD5
$cfg['passwdtype']='MD5';                                              认证模式<要与pureftpd-mysql.conf中一致>
//ftp default
$cfg['uid']=500;  //uid                                                映射虚拟用户的UID,即刚创建的virtualftp用户
$cfg['gid']=500;        //gid                                          同上
$cfg['dir']='/ftproot/'; //dir                                          默认家目录
$cfg['qf']=0;   //quotafiles                                           文件个数限制,0为不限制
$cfg['qs']=100; //quotasize                                            总文件大小
$cfg['ul']=0;   //ULBandwidth                                          上传速率限制
$cfg['dl']=200; //DLBandwidth                                          下载速率限制
$cfg['ur']=0;   //ULRatio                                              上传比
$cfg['dr']=0;   //DLRatio                                              下载比
$cfg['status']=1; //status                                             状态,1为激活;0为禁止
$cfg['ip']= '*';        //ipaddress                                    可访问IP,*为所有
?&gt;

[root@localhost ~]# cd /var/www/html

[root@localhost html]# cd pureadmin

[root@localhost pureadmin]# vim config.php

5 

6

四,测试

登录pureftpd后台管理程序

7

创建虚拟账号

8

登录mysql查看xht1

[root@localhost ~]# mysql -u root -p ;

mysql&gt;use ftpusers

9

用先前创建的虚拟账号xht2登录测试

13

在/ftproot下查看自动创建的目录xht2

14

在浏览器上用xht1测试

15

16

测试结束!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章