Pure-FTPd 是一款免费(BSD)的,安全的,高质量和符合标准的FTP服务器。 侧重于运行效率和易用性。 它提供了简单的答案,他满足了大众化的需求,包括普通用户以及主机供应商们

Pure-FTPd 安全性

pure - ftpd 得到了充分的支持,它是始终以安全设计为理念,其代码总是作为有漏洞的来进行讨论,并重新审核。该服务可以适应严格的安全需要做到权限分离。 甚至在不需要Root权限的情况下通过其内建的chroot()仿真以及虚拟帐户100%正常运行。避免密码作为明文传输:pure - ftpd的OpenSSL库支持可选的 SSL / TLS加密层使用。

利用WEB方式对FTP进行管理。这里运用到与mysql的结合

安装过程如下:

一、安装apache php mysql mysql-server  mysql-devel

[root@localhost ~]# mkdir /mnt/cdrom

[root@localhost ~]# mount /dev/cdrom  /mnt/cdrom

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

[root@localhost ~]# service httpd start

[root@localhost ~]# service mysqld start

[root@localhost ~]# chkconfig mysqld on

[root@localhost ~]# mysqladmin -u root -p password '123456'

Enter password:                    //原来的口令。默认没有,直接回车。

上传用到的软件

[root@localhost ~]# ll
总计 10864
-rw------- 1 root root     1236 2012-07-26 anaconda-ks.cfg
drwxr-xr-x 2 root root     4096 07-26 15:15 Desktop
-rw-r--r-- 1 root root    34907 2012-07-26 install.log
-rw-r--r-- 1 root root     3681 2012-07-26 install.log.syslog
-rw-r--r-- 1 root root    29148 07-26 18:30 PureAdmin-0.3.tar.gz      //pureftp管理工具
-rw-r--r-- 1 root root   578781 07-26 18:30 pure-ftpd-1.0.36.tar.gz   //pureftp主程序
-rw-r--r-- 1 root root     4718 07-26 18:30 pureftpd-mysql.conf         //pureftp连接mysql的配置文件
-rw-r--r-- 1 root root     2105 07-26 18:30 pureftp.sql                       //pureftp数据库sql语句
-rw-r--r-- 1 root root   196917 07-26 18:30 webpureftp0.1.tar.gz       //web方式pureftp
-rw-r--r-- 1 root root 10208541 07-26 18:30 ZendOptimizer-3.3.3-linux-hicode.ta     //php加速工具

二、源码安装pure-ftp

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

[root@localhost ~]# cd /usr/local/src/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

三  生成pure-ftpd的服务脚本

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

[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/

四 生成pure-ftpd的服务

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

[root@localhost pure-ftpd-1.0.36]# vim /etc/init.d/pureftpd

18 fullpath=/usr/local/pureftpd/sbin/$prog
19 pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho

24         $fullpath /usr/local/pureftpd/etc/pure-ftpd.conf --daemonize

[root@localhost pure-ftpd-1.0.36]# service pureftpd start

启动 pure-config.pl:Running: /usr/local/pureftpd/sbin/pure-ftpd --daemonize -A -c50 -B -C8 -D -fftp -H -I15 -L10000:8 -m4 -s -U133:022 -u100 -k99 -Z

五.配置匿名用户登录环境

配置虚拟用户登录环境

[root@localhost pure-ftpd-1.0.36]# mkdir /ftproot

[root@localhost pure-ftpd-1.0.36]# chmod -R 777 /ftproot

[root@localhost pure-ftpd-1.0.36]# useradd virtualftp -d /ftproot -s /sbin/nologin  -M

[root@localhost pure-ftpd-1.0.36]# chown virtualftp:virtualftp /ftproot

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

20 ChrootEveryone              yes                   限定在自己的家目录

77 NoAnonymous                 yes                   不允许匿名登录

116  MySQLConfigFile               /usr/local/pureftpd/etc/pureftpd-mysql.conf   mysql的认证

336 CreateHomeDir               yes                   允许用户登录后自动创建家目录

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

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

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

32 MYSQLPassword   tmppasswd               //为了sql语句中的配置相同

45 MYSQLCrypt      md5

[root@localhost ~]# vim pureftp.sql

50 INSERT INTO admin VALUES ('admin',MD5('123'));   Web后台管理员密码

注意其中的
     22 -- Login = ftp             此为登录数据库的用户
     23 -- Password = tmppasswd    此为登录数据库的密码

     31 CREATE DATABASE ftpusers;  创建名为ftpusers的库

     50 INSERT INTO admin VALUES ('admin',MD5('123'));  此为登录web用的用户密码,可自行修改

<导入数据,导入前可能需要修改此sql文件的15行:前2个减号空一格-- ------------------------------------------------------->

[root@localhost ~]# mysql -u root -p < pureftp.sql     导入数据库

[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.45 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ftpusers           |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.01 sec)

mysql&gt; use ftpusers;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql&gt; show tables;
+--------------------+
| Tables_in_ftpusers |
+--------------------+
| admin              |
| users              |
+--------------------+
2 rows in set (0.00 sec)

mysql&gt; select * from admin;
+----------+----------------------------------+
| Username | Password                         |
+----------+----------------------------------+
| admin    | 202cb962ac59075b964b07152d234b70 |
+----------+----------------------------------+
1 row in set (0.00 sec)

mysql&gt; grant all privileges on ftpusers.* to ftp@localhost identified by 'tmppasswd';
Query OK, 0 rows affected (0.01 sec)

mysql&gt; flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql&gt; \q
Bye

配置pureadmin

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

[root@localhost ~]# cd /var/www/html/
[root@localhost html]# mv PureAdmin-0.3/ pureadmin
[root@localhost html]# cd pureadmin/

[root@localhost pureadmin]# vim config.php

3 $cfg['dbname']='ftpusers';

4 $cfg['dbuser']='ftp';

5 $cfg['dbpasswd']='tmppasswd';

10 $cfg['passwdtype']='MD5';

14 $cfg['dir']='/ftproot/';

<?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 pureadmin]# sevice pureftpd restart

[root@localhost pureadmin]# service pureftpd restart

虚拟用户使用篇

(一)用pureDB认证

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

126  PureDB                        /usr/local/pureftpd/pureftpd.pdb

设置环境变量

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

[root@localhost pureadmin]# . /etc/profile

[root@localhost ~]# pure-pw useradd user1 -u virtualftp -g virtualftp -d /ftproot/user1 –m     //密码设为123

说明:
     user1是用户名,-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

[root@localhost ~]# service httpd restart

[root@localhost ~]# service pureftpd restart

测试

在客户端输入http://192.168.145.200/pureadmin

image 

这里验证码不用

创建的虚拟用户家目录,会在虚拟用户第一次登录时自动创建
如创建了一个user3用户

image

这里可以对虚拟账号进行操作管理了

[root@localhost pureadmin]# ll /ftproot/
总计 0

当user3 登录以后

image

[root@localhost pureadmin]# ll /ftproot/
总计 4
drwxr-xr-x 2 1000 1000 4096 09-16 15:36 user3