配置构想图:
要求:
1、ftp-clients访问pure-ftp数据库时,用户信息存放在ftpusers的数据库中;
2、通过pureamin来管理pureftp在ftpusers数据库中的用户。
配置环境准备:
1、安装组包:开发工具、开发库、老的软件开发 (Development Tools
Development Libraries、Legacy Software Development)
yum groupinstall “开发工具” -y
2、因实验环境是基于apache,php,mysql的,需要安装
yum install httpd php mysql mysql-server mysql-devel php-mysql -y
实验所需软件包:pure-ftpd-1.0.36.tar.gz,PureAdmin-0.3.tar.gz(http://down.51cto.com/data/632638),
ZendOptimizer-3.3.3-linux-hicode.tar.gz(提高php应用程序执行速度)一、pure-ftp配置
1、pure-ftpd的服务项的设置
#tar -zxvf pure-ftpd-1.0.36.tar.gz -C /usr/local/src/ (解压并指定目录)
# cd pure-ftpd-1.0.36 (切换到解压目录)
#./configure \
--prefix=/usr/local/pureftpd \ #路径,默认在/usr/local/
--with-mysql \ #用MySQL管理用户数据
--with-shadow \ #忽略shadow密码,除非你使用PAM, LDAP 或者 SQL
--with-pam \ #认证模块
--with-welcomemsg \ #像其它一样FTP servers读取’welcome.msg’档案。但是Pure-ftpd预设是使用’.banner’档案。
--with-uploadscript \ #成功上传后可自动自动调用扩展程序。这需要安装’pure-uploadscript’。
--with-cookie \ #当使用者登入时显示自定义的标题信息
--with-virtualchroot \ #通常使用者不能离开家目录,启用这项,再配合symbolic links,就变成可能了
--with-virtualhosts \ #支持虚拟主机。就是可为每个IP地址设不同的匿名登入区域。如果只有一个IP就用不着这项。
--with-diraliases \ #支持目录别名
--with-quotas \ #启用虚拟配额
--with-puredb \ #本地用户数据存储,支持虚拟用户
--with-sysquotas \ #支持系统配额
--with-ratios \ #支持上传/下载比率限制
--with-ftpwho \ #支持’pure-ftpwho’命令,建议在standalone模式使用,inet较慢
--with-throttling \ #支持带宽限制
--with-language=simplified-chines \ #输出信息为简体中文
--with-altlog #支持将日志输出成特定格式,以便用于分析
#make
#make install
#cp contrib/redhat.init /etc/init.d/pureftpd
#vim /etc/init.d/pureftpd (改变以下三行)
17 prog=pure-config.pl
18 fullpath=/usr/local/pureftpd/sbin/$prog (正确关联pureftpd服务的控制脚本)
19 pureftpwho=/usr/local/pureftpd/sbin/pure-ftpwho
24 $fullpath /usr/local/pureftpd/etc/pure-ftpd.conf --daemonize (pureftpd的主配置文件)
#chmod 755 /etc/init.d/pureftpd (修改权限,使pureftpd为可执行的服务脚本)
#chkconfig --add pureftpd (使pureftpd被chkconfig管理,并加入开机启动)
#chkconfig pureftpd on
2、pure-ftp的主配置文件修改
#mkdir -pv /usr/local/pureftpd/etc/
#cp /usr/local/src/pure-ftpd-1.0.36/ \
configuration-file/pure-ftpd.conf /usr/local/pureftpd/etc/
# vi /usr/local/pureftpd/etc/pure-ftpd.conf
其中有几项要修改:
chrootEveryone yes 限定在自己的家目录
NoAnonymous yes 不允许匿名登录
Bind 127.0.0.1,21 监听本机回环 <可选>
CreateHomeDir yes 允许用户登录后自动创建家目录 <必须>
二、配置虚拟用户登录环境
# useradd virtualftp -d /ftproot -s /sbin/nologin <创建接下来的虚拟用户 对应的系统用户>
# chmod -R 777 /ftproot <这项不做可能会引起登录时报421错误>
---修改环境变量
# echo PATH=$PATH:/usr/local/pureftpd/bin/ >>/etc/profile
#. /etc/profile (重新加载环境变量)
三、用mysql认证
1、拷贝解压到/usr/local/src下pure-ftpd-1.0.36目录里的pureftp与mysql关联文件
#cp /usr/local/src/pure-ftpd-1.0.36/pureftpd-mysql.conf /usr/local/pureftpd/etc/
2、修改pureftp与mysql的关联文件,
# vim /usr/local/pureftpd/etc/pureftpd-mysql.conf <修改如下:>
MYSQLUser ftp
MYSQLPassword abc
MYSQLDatabase ftpusers
MYSQLCrypt MD5
101 MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User='\L'
106 MySQLGetRatioUL SELECT ULRatio FROM users WHERE User='\L'
107 MySQLGetRatioDL SELECT DLRatio FROM users WHERE User='\L'
114 MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User='\L'
115 MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User='\L'
:wq
开启以上几行,使pureftp-server支持磁盘配额、比率、带宽
3、配置pureftp的主配置文件,指明关联mysql文件的存放位置
#vi /usr/local/pureftpd/etc/pure-ftpd.conf
116 MySQLConfigFile /usr/local/pureftpd/etc/pureftpd-mysql.conf
四、配置数据库(采取导入的方式)
# mysqladmin -u root password "123" (为本地数据库创建密码)
网址:http://down.51cto.com/data/632641 下载要导入的数据库源码
下载后,编辑vim pureftp.sql 文件,可以自行修改账号密码等参数,本文保持默认,一定要如下修改第15行:
15 前2个减号空一格-- ----
mysql -u root -p < pureftp.sql
Enter password:
![](https://i-blog.csdnimg.cn/blog_migrate/a610a1c816f3ccc371a1319ed35c79d0.png)
导入成功后,用root登录mysql,执行对ftpusers用户的授权
mysql>grant all privileges on ftpusers.* to ftp@localhost identified by 'abc';
mysql>flush privileges;
mysql>quit;
五、pureadmin配置
1、下载PureAdmin-0.3.tar.gz,
网址:http://down.51cto.com/data/632638
2、配置web程序
# tar xvf PureAdmin-0.3.tar.gz -C /var/www/html/
# cd /var/www/html/
# mv PureAdmin-0.3/ pureadmin (重命名)
#vim /var/www/html/pureadmin/config.php (编辑配置文件)
<?php
$cfg['dbhost']='localhost'; //mysql host
$cfg['dbname']='ftpusers'; //mysql db name
$cfg['dbuser']='ftp'; //mysql user
$cfg['dbpasswd']='abc'; //mysql password
$cfg['passwdtype']='MD5';
$cfg['dir']='/ftproot'; //dir
..........
?> (其余的保持默认值就可以了,也可自定义设置)
六、安装ZendOptimizer(php加速器)
#tar -zxvf ZendOptimizer-3.3.3-linux-hicode.tar.gz -C /usr/local/src
#cd /usr/local/src/ZendOptimizer-3.3.3-linux-glibc23-i386/
#./install.sh (根据提示操作)
安装很简单,不再附图。
七、测试
现在可以登录使用了
http://192.168.2.1/pureadmin
查看导入的数据库文件
#vim pureftp.sql 可知admin 的密码为passwd
登录:用户admin ; 密码passwd ;验证码不用
登录后添加新用户:test1,test2
用户未登录前,查看基目录下/ftproot为空:
以test2从客户端登录ftp服务器,
自动创建虚拟用户的家目录,
#vim /usr/local/pureftpd/etc/pure-ftpd.conf (编辑开启日志)
304 AltLog clf:/var/log/pureftpd.log
311 AltLog stats:/var/log/pureftpd.log
318 AltLog w3c:/var/log/pureftpd.log
查看日志文件(可以与综合日志/var/log/messages结合查看)
可以看出,日志记录的时间与系统时间并不对照,因为pureftp默认使用的是GMT时区
#vim /usr/local/pureftpd/etc/pure-ftpd.conf
加上TimesGMT off
重启pureftpd服务,后再看看。
结束了。。
注:限制ip段
#vim /usr/local/etc/pureftpd-mysql.conf
修改 “MYSQLGetPW SELECT Password FROM users WHERE User="\L" ”,将其改为“MYSQLGetPW SELECT Password FROM users WHERE User="\L" and (ipaccess='*' or ipaccess=SUBSTRING_INDEX("\R",".",3))”这里是限制C类地址登陆,限制单个ip可直接将ipaccess字段设为限制登陆的ip地址。以此类推,可以设定为限制A、B类地址或指定ip地址范围。
本文转自 刘园 51CTO博客,原文链接:http://blog.51cto.com/colynn/1093539