Pure-ftp
Pure-FTPd 是一款免费(BSD)的,安全的,高质量和符合标准的FTP服务器。侧重于运行效率和易用性。 它提供了简单的答案,他满足了大众化的需求,包括普通用户以及主机供应商们。 
Pure-FTPd 安全性
Pure-FTPd 的运行环境
  同样的源代码被编译并运行于 Linux, OpenBSD, NetBSD, DragonflyBSD以及 iPhone上。 FreeBSD, Solaris, Tru64, Darwin, Irix, HPUX, AIX
  预编译的二进制包可提供Novell, Mandriva, Debian, Ubuntu, PLD Linux, Stampede Linux, Slackware Linux (Slimslack), Multilinux, Sorcerer Linux, Fli4L (the one-disk router), ROOT Linux, Gentoo Linux 以及大多数免费的操作系统使用
  Pure-FTPd 也可以运行在 BSD 系统 : FreeBSD (/usr/ports/ftp/pure-ftpd/), OpenBSD (/usr/ports/net/pure-ftpd/), DragonflyBSD and NetBSD (/usr/pkgsrc/net/pureftpd/).
Pure-FTPd 语言环境
  所有的服务器消息被翻译成英语,德语,罗马尼亚语,法语,波兰语,西班牙语,丹麦语,荷兰语,意大利语,巴西葡萄牙语,斯洛伐克语,韩语,瑞典语,挪威语,俄语,繁体中文,简体中文,捷克语,土耳其语,匈牙利语和加泰罗尼亚语。
  这将帮助你们的客户理解并诊断,即使英语不是他们的母语
  它可以帮助您的客户了解诊断,即使英语不是他们的母语。
  消息在独立文件,它们可以很容易地转换为新的语言,或自定义
 
 
一、安装apache mysql mysql-server mysql-devel
[root@localhost ~]# yum install httpd php myql mysql-server mysql-devel php-mysql –y
 [root@localhost ~]# service mysqld start
Starting MySQL:                                            [ OK ]
[root@localhost ~]# service httpd start
Starting httpd:                                            [ OK ]
设置开机启动:
[root@localhost ~]# chkconfig mysqld on
[root@localhost ~]# chkconfig httpd on
加密mysql:
[root@localhost ~]# mysqladmin -u root -p password "123456"
测试mysqld与httpd服务是否可以访问:
用本地机直接访问就可以。
验证3306端口是否打开:
[root@localhost html]# netstat -tupln |grep mysql
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      7193/mysqld    
二、源码安装pure-ftp
 
上传源码:
 

linux下vsftp之pureftp_linux系统

解压缩:
[root@localhost ~]# cd pureftp/
[root@localhost pureftp]# ll
total 10804
-rw-r--r-- 1 root root    29148 Dec 17 21:16 PureAdmin-0.3.tar.gz
-rw-r--r-- 1 root root   578781 Dec 17 21:16 pure-ftpd-1.0.36.tar.gz
-rw-r--r-- 1 root root     4718 Dec 17 21:16 pureftpd-mysql.conf
-rw-r--r-- 1 root root     2105 Dec 17 21:16 pureftp.sql
-rw-r--r-- 1 root root   196917 Dec 17 21:16 webpureftp0.1.tar.gz
-rw-r--r-- 1 root root 10208541 Dec 17 21:16 ZendOptimizer-3.3.3-linux-hicode.tar.gz
[root@localhost pureftp]# tar -zxvf pure-ftpd-1.0.36.tar.gz -C /usr/local/src
[root@localhost pureftp]# cd /usr/local/src/
[root@localhost src]# ll
total 4
drwxr-xr-x 10 root root 4096 Dec 17 21:20 pure-ftpd-1.0.36
[root@localhost src]# cd pure-ftpd-1.0.36/
[root@localhost pure-ftpd-1.0.36]# ls
aclocal.m4          configure.ac HISTORY       man                  pureftpd-pgsql.conf            README.Contrib    README.TLS
AUTHORS             CONTACT       INSTALL       missing              pure-ftpd.png                  README.Debian     README.Virtual-Users
ChangeLog           contrib       install-sh    NEWS                 pureftpd.schema                README.Donations README.Windows
compile             COPYING       m4            pam                  pure-ftpd.spec.in              README.LDAP       src
config.h.in        depcomp       Makefile.am   puredb               README                         README.MacOS-X    THANKS
configuration-file FAQ           Makefile.gui pureftpd-ldap.conf   README.Authentication-Modules README.MySQL
configure           gui           Makefile.in   pureftpd-mysql.conf README.Configuration-File      README.PGSQL
[root@localhost pure-ftpd-1.0.36]#
源码安装须具备以下条件:
注意:遇到configure文件,要保证四个开发工具要具备:
Development Libraries
Development Tools
X Software Development
Legacy Software Development
[root@localhost pure-ftpd-1.0.36]# yum grouplist |less 查看自己电脑安装了没 若没有安装上
[root@localhost ~]# yum groupinstall "Legacy Software Development" "Development Libraries" "X Software Development"
预编译-----编译-----整理文件
[root@localhost pure-ftpd-1.0.36]# ./configure \
--prefix=/usr/local/pureftpd \
安装目录
--with-mysql \
服务器支持mysql
--with-shadow \
支持本地的 /etc/shadow
--with-pam \
支持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 contrib]# cp redhat.init /etc/init.d/pureftpd
[root@localhost contrib]# chmod a+x /etc/init.d/pureftpd 给予执行的权利
[root@localhost pure-ftpd-1.0.36]# cd configuration-file/
[root@localhost configuration-file]# ls
Makefile Makefile.am Makefile.in pure-config.pl pure-config.pl.in pure-config.py pure-config.py.in pure-ftpd.conf pure-ftpd.conf.in
[root@localhost configuration-file]# cp pure-config.pl /usr/local/pureftpd/sbin/
[root@localhost pure-ftpd-1.0.36]# ./configure --help |less帮助
[root@localhost pure-ftpd-1.0.36]# cd /usr/local/pureftpd/
[root@localhost pureftpd]# ll
total 12
drwxr-xr-x 2 root root 4096 Dec 17 22:02 bin
drwxr-xr-x 2 root root 4096 Dec 17 22:26 sbin
drwxr-xr-x 3 root root 4096 Dec 17 22:02 share
[root@localhost pureftpd]# mkdir etc 建立文件etc
[root@localhost configuration-file]# cd /usr/local/pureftpd/sbin
[root@localhost sbin]# ls
pure-authd pure-config.pl pure-ftpd pure-ftpwho pure-mrtginfo pure-quotacheck pure-uploadscript
[root@localhost sbin]# ll
total 592
-rwxr-xr-x 1 root root 16934 Dec 17 22:02 pure-authd
-rw-r--r-- 1 root root   4696 Dec 17 22:26 pure-config.pl
-rwxr-xr-x 1 root root 425166 Dec 17 22:02 pure-ftpd
-rwxr-xr-x 1 root root 48418 Dec 17 22:02 pure-ftpwho
-rwxr-xr-x 1 root root 21457 Dec 17 22:02 pure-mrtginfo
-rwxr-xr-x 1 root root 33332 Dec 17 22:02 pure-quotacheck
-rwxr-xr-x 1 root root 34881 Dec 17 22:02 pure-uploadscript
[root@localhost sbin]# chmod a+x pure-config.pl 修改为执行权限
[root@localhost pure-ftpd-1.0.36]# cd /usr/local/src/pure-ftpd-1.0.36/configuration-file/
[root@localhost configuration-file]# cp pure-ftpd.conf /usr/local/pureftpd/etc/
 
[root@localhost configuration-file]# vi /etc/init.d/pureftpd
 

linux下vsftp之pureftp_pureftp_02

启动pureftps:
[root@localhost configuration-file]# service pureftpd start
Starting 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 configuration-file]# chkconfig --list |grep pureftpd查看
[root@localhost configuration-file]# chkconfig --add pureftpd 添加该服务
[root@localhost configuration-file]# chkconfig pureftpd on 设置开机启动
[root@localhost configuration-file]# chkconfig --list |grep pureftpd 继续查看可以了
pureftpd           0:off       1:off       2:on 3:on 4:on 5:on 6:off
 
配置虚拟用户登录环境
修改配置文件
[root@localhost configuration-file]# vi /usr/local/pureftpd/etc/pure-ftpd.conf
其中有几项要修改:
         chrootEveryone              yes   限定在自己的家目录
        NoAnonymous                 yes   不允许匿名登录
        Bind                      127.0.0.1,21        监听本机回环 <可选>
        Bind                      192.168.0.254,21    监听本机IP <自行添加的,非必须>
       CreateHomeDir               yes   允许用户登录后自动创建家目录   <必须>
 
[root@localhost configuration-file]# service pureftpd restart
 
[root@localhost configuration-file]# mkdir /ftproot
[root@localhost configuration-file]# chmod 777 /ftproot/<这不不做可以能会引起登录时报421错误>
[root@localhost configuration-file]# useradd virtualftp -d /ftproot -s /sbin/nologin –M <创建接下来的虚拟用户对应的系统用户>
[root@localhost configuration-file]# chown virtualftp:virtualftp /ftproot
加环境变量:
[root@localhost bin]# echo "PATH=$PATH:/usr/local/pureftpd/bin" >>/etc/profile
[root@localhost bin]# ./pure-pw
[root@localhost bin]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/pureftpd/bin
五,用mysql验证
[root@localhost pureftp]# vi /usr/local/pureftpd/etc/pure-ftpd.conf
116行 MySQLConfigFile               /usr/local/pureftpd/etc/pureftpd-mysql.conf
 
[root@localhost pureftpd]# cd etc/
[root@localhost etc]# ll
total 12
-rw-r--r-- 1 root root 11229 Dec 17 23:23 pure-ftpd.conf
到/usr/local/pureftpd/etc/下查看其实没有pureftpd-mysql.conf
文件,去上传的软件包里复制
[root@localhost pureftp]# pwd
/root/pureftp
[root@localhost pureftp]# cp pureftpd-mysql.conf /usr/local/pureftpd/etc/
切换到目录修改
[root@localhost etc]# vi pureftpd-mysql.conf
 

linux下vsftp之pureftp_pureftp_03

导入数据库:
[root@localhost pureftp]# vi pureftp.sql
22 -- Login = ftp             此为登录数据库的用户
     23 -- Password = tmppasswd    此为登录数据库的密码
 
     31 CREATE DATABASE ftpusers; 创建名为ftpusers的库
 
     50 INSERT INTO admin VALUES ('admin',MD5('passwd')); 此为登录web用的用户密码,可自行修改
 
<导入数据,导入前可能需要修改此sql文件的15行:前2个减号空一格-- ------------------------------------------------------->
 
[root@localhost ~]# cd pureftp/
[root@localhost pureftp]# mysql -u root -p <pureftp.sql
Enter password:
查看mysql
 

linux下vsftp之pureftp_pureftp_04

添加连接mysql用户
先用root登录mysql,执行
mysql>grant all privileges on ftpusers.* to ftp@localhost identified by 'tmppasswd';
mysql>flush privileges;
mysql>quit;
验证是否成功:
 

linux下vsftp之pureftp_linux系统_05

六,解压缩pureadmin
[root@localhost pureftp]# tar -zxvf PureAdmin-0.3.tar.gz
[root@localhost pureftp]# mv PureAdmin-0.3 /var/www/html/pureadmin 移动过去
修改pureadmin的配置文件
[root@localhost pureftp]# cd /var/www/html/pureadmin
[root@localhost pureadmin]# ls
adduser.php admin.php chkuser.php code.php config.php edit.php p_w_picpaths index.php lib.php libs list.php lock.php main.php
[root@localhost pureadmin]# vi config.php
 
<?php
$cfg['dbhost']='localhost'; //mysql host
$cfg['dbname']='ftpusers'; //mysql db name                            所用的库<与前面导入的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,*为所有
?>
这时可以试着登陆一下看看了:
 

linux下vsftp之pureftp_linux系统_06

 

linux下vsftp之pureftp_pureftp_07

创建两个用户user1和user2:,这两个用户保存到了mysql数据库中:可以登录mysql数据库查看:
[root@localhost pureftp]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.0.77 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.00 sec)
 
mysql> 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> show tables;
+--------------------+
| Tables_in_ftpusers |
+--------------------+
| admin              |
| users              |
+--------------------+
2 rows in set (0.00 sec)
 
mysql> select * from users;
+-------+----------------------------------+------+------+----------------+------------+-----------+-------------+-------------+-----------+---------+--------+---------+---------+
| User | Password                         | Uid | Gid | Dir            | QuotaFiles | QuotaSize | ULBandwidth | DLBandwidth | Ipaddress | Comment | Status | ULRatio | DLRatio |
+-------+----------------------------------+------+------+----------------+------------+-----------+-------------+-------------+-----------+---------+--------+---------+---------+
| user1 | 202cb962ac59075b964b07152d234b70 | 1000 | 1000 | /ftproot/user1 |          0 |         0 |         100 |         100 | *         |         | 1      |       0 |       0 |
| user2 | 202cb962ac59075b964b07152d234b70 | 1000 | 1000 | /ftproot/user2 |          0 |         0 |         100 |         100 | *         |         | 1      |       0 |       0 |
+-------+----------------------------------+------+------+----------------+------------+-----------+-------------+-------------+-----------+---------+--------+---------+---------+
2 rows in set (0.00 sec)
 
mysql>
可以看到刚创建的用户。
用本地物理机访问却不成功

linux下vsftp之pureftp_linux系统_08

查看/ftproot/目录并没有创建的用户.
 
七,用pureDB认证
打开虚拟账号与物理账号之间的映射文件
[root@localhost ftproot]# vi /usr/local/pureftpd/etc/pure-ftpd.conf
 

linux下vsftp之pureftp_pureftp_09

[root@localhost pureftpd]# echo PATH=$PATH:/usr/local/pureftpd/bin >> /etc/profile
[root@localhost pureftpd]# . /etc/profile
重启服务:
 
[root@localhost pureftpd]# service pureftpd restart
Stopping pure-config.pl:
Starting pure-config.pl: Running: /usr/local/pureftpd/sbin/pure-ftpd --daemonize -A -c50 -B -C8 -D -E -fftp -H -I15 -lmysql:/usr/local/pureftpd/etc/pureftpd-mysql.conf -lpuredb:/usr/local/pureftpd/pureftpd.pdb -L10000:8 -m4 -s -U133:022 -u100 -j -k99 -Z
 
再次访问:
 

linux下vsftp之pureftp_pureftp_10

 

linux下vsftp之pureftp_linux系统_11