一、 实验环境及所用软件
二、 安装httpd、mysql、mysql-server、mysql-devel、pam-devel、php、php-gd、php-mysql
三、 启动mysql和httpd,将mysqld和httpd加入管理
四、 建立用户数据库
五、 创建管理页面
六、 源码安装pure-ftp
七、 虚拟账户和本地账户的映射
八、测试连接ftp服务器
一、 实验环境及所用软件
所有文件下载地址:http://pan.baidu.com/s/1zS3Iu
PureAdmin-0.3.tar.gz #pureftpd的管理页面
pure-ftpd-1.0.36.tar.gz #pureftpd的主程序
pureftpd-mysql.conf #pureftpd与mysql的接口文件
pureftp.sql #这是一个数据库文件,包含了其中一些建表和建库的语句
pure-ftp介绍:
pure-ftpd大家应该都听说过,一个很好用的ftp服务端。功能很多,也比较安全,而且还可以和mysql整合,通过mysql建立和验证帐户,并实现流量限制、磁盘配额限制等功能。这就说明,可以通过自己开发的PHP程序来实现Web管理。
二、 安装httpd、mysql、mysql-server、mysql-devel、pam-devel、php、php-gd、php-mysql
首先来搭建lamp环境:
[root@localhost ~]# yum --disablerepo=*--enablerepo=c6-media install http mysql mysql-server mysql-devel pam-devel php php-gd php-mysql -y
三、 启动mysql和httpd,将mysqld和httpd加入管理
[root@localhost ~]# service mysqld start //启动mysql服务 [root@localhost ~]# chkconfig mysqld on //设置mysql服务开机自动启动 [root@localhost ~]# service httpd start //启动http服务 [root@localhost ~]# chkconfig httpd on //设置httpd服务开机自动启动
四、 建立用户数据库
编辑数据库文件:
[root@localhost pureftp]# vim pureftp.sql
INSERT INTOadmin VALUES ('admin',MD5('123')); //50行 修改管理员admin的密码为123
在其中第15行,要在下图这个位置加上一个空格符,要不然的话,数据库导入不进去。
[root@localhost pureftp]# mysqladmin -u root -ppassword '123' //给mysql-server建立一个管理员账户root密码为123 [root@localhost pureftp]# mysql -u root -p<pureftp.sql //将此账户导入数据库 [root@localhost pureftp]# mysql -u root -p //登陆数据库 mysql> show databases; //查看已有数据库;
发现其中已经有一个ftpusers数据库;
mysql> use ftpusers;
mysql> show tables; 查看ftpusers数据库中的表;
发现存在有admin和users两个表,users的表中无任何数据,admin中有一个刚才添加过的用户数据。
五、 创建管理页面
[root@localhost pureftp]# tar -zxvfPureAdmin-0.3.tar.gz -C/var/www/html/ //解压pureadmin文件到apache服务器站点主目录下 [root@localhost html]# cd /var/www/html/ [root@localhost html]# mv PureAdmin-0.3pureadmin //将目录PureAdmin-0.3名字修改为pureadmin [root@localhost pureadmin]# ll //进入解压好的目录后可以发现其中有许多的php文件 编辑其中的config.php文件
1<?php 2$cfg['dbhost']='localhost'; //mysql host 3$cfg['dbname']='ftpusers'; //mysql dbname 从刚才打开的数据库中可以知道数据库名为ftpusers 4$cfg['dbuser']='ftp'; //mysqluser 数据库管理员为ftp 5$cfg['dbpasswd']='tmppasswd'; //mysql password数据库管理员密码为tmppasswd
这些可以从/root/pureftp/pureftp.sql 中可以看到:
6 7//ftp config 8$cfg['page']=15; 9//ftp passwdtype : TEXT/CRYPT/MD5 10$cfg['passwdtype']='MD5'; //修改密码加密算法为MD5 11//ftpdefault 12$cfg['uid']=1000; //uid 13$cfg['gid']=1000; //gid 14$cfg['dir']='/ftproot/'; //dir 修改总目录为/ftproot/ 这样如果新建了一个账号user1,就会自动存放到/ftproot/user1/中 15$cfg['qf']=0; //quotafiles 16$cfg['qs']=100; //quotasize 17$cfg['ul']=200; //ULBandwidth 修改上传带宽为200K 18$cfg['dl']=200; //DLBandwidth 修改下载带宽为200K 19$cfg['ur']=0; //ULRatio 20$cfg['dr']=0; //DLRatio 21$cfg['status']=1; //status 22$cfg['ip']='*'; //ipaddress 23?>
这时候如果去访问http://192.168.80.10/pureadmin会出现如下情况:
这是因为用户没有权限,然后去给它权限:
mysql> grant all privileges on ftpusers.* toftp@localhost identified by 'tmppasswd ; #给所有用户权限
mysql> flush privileges; #刷新权限
再次访问会出现如下界面:
[root@localhost pureadmin]# useradd -d /ftprootftpaccount #创建一个本地账号ftpaccount,家目录在根目录下的ftpaccount
[root@localhost pureadmin]# chmod -R o+rw/ftproot/ #因为在创建账号时要在此目录下创建新文件,所以要给它可读可写的权限
然后来创建一个新用户user1;
此时数据库ftpusers下的users表中已经多出来一个用户user1
六、 源码安装pure-ftp
[root@localhost pureftp]# tar -zxvf pure-ftpd-1.0.36.tar.gz -C /usr/local/src/ [root@localhost pureftp]# cd /usr/local/src/pure-ftpd-1.0.36/ [root@localhost pure-ftpd-1.0.36]./configure\ --prefix=/usr/local/pureftpd \ //指明安装目录 --with-mysql \ //mysql目录在系统默认路径中 --with-shadow \ //结合password 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 && make install [root@localhost pure-ftpd-1.0.36]#cd /usr/local/pureftpd/ [root@localhost pureftpd]# mkdir etc //发现目录下无etc/目录,这是放配置文件的位置,所以自己创建一个 [root@localhost pureftpd]#cd /usr/local/src/pure-ftpd-1.0.36/contrib/ [root@localhost contrib]# cp redhat.init /etc/init.d/pureftpd //生成控制脚本 [root@localhost contrib]# chmod a+x/etc/init.d/pureftpd //给予可执行权限 [root@localhost contrib]# cd ../configuration-file/ [root@localhost configuration-file]# cp pure-ftpd.conf/usr/local/pureftpd/etc/ //生成配置文件
#生成配置文件
查看刚才生成的控制脚本文件,发现其中有这么一句:
prog=pure-config.pl 17行
所以需要把这个文件也拷过去
[root@localhost configuration-file]# cp pure-config.pl/usr/local/pureftpd/sbin/ [root@localhost configuration-file]# chmod a+x/usr/local/pureftpd/sbin/pure-config.pl //给予可执行权限
编辑控制脚本文件如下:
[root@localhost configuration-file]# service pureftpdstart //启动pureftpd [root@localhost configuration-file]# chkconfig --addpureftpd [root@localhost configuration-file]# chkconfigpureftpd on //设置pureftpd开机启动
七、 虚拟账户和本地账户的映射
编辑pureftpd的配置文件:
[root@localhost pureftp]# cd /usr/local/pureftpd/etc/
[root@localhost etc]# vim pure-ftpd.conf
116MySQLConfigFile /usr/local/pureftpd/etc/pureftpd-mysql.conf //116行 指定接口文件目录 126 PureDB /usr/local/pureftpd/etc/pureftpd.pdb //指定本地用户与虚拟用户映射的库目录 336CreateHomeDir yes //创建账号后自动创建家目录
[root@localhost etc]# cp/root/pureftp/pureftpd-mysql.conf ./ #因为当前目录下并无接口文件所以要自己拷贝过来
拷过来之后编辑:
32 MYSQLPassword tmppasswd //修改ftp账号的密码tmppasswd 45 MYSQLCrypt md5 //修改加密算法md5
[root@localhostbin]# ./pure-pw useradd user1 -u ftpaccount -g ftpaccount -d /ftproot/user1 -m
#user1为虚拟账号,ftpaccount为真是的本地账号,锁定虚拟账号家目录为/ftproot/user1
回车后随便输个密码,然后查看pureftpd.pdb文件是否生成:
[root@localhostbin]# ll ../etc/
发现已经生成。
[root@localhost bin]# service pureftpd start //启动pureftpd
新建账户user2,密码123:
八、测试连接ftp服务器
不管用哪个账户登陆成功后在/ftproot/下会创建相应的家目录
如果登陆后出现如下情况,就给根目录下的/ftproot/目录可执行权限即可。
这时如果直接去浏览器或者windows资源管理器中访问ftp服务器的话是访问不了的,因为不允许匿名登录,想要登录的话必须右键-->登录后输入用户名和密码才能登陆。
如果想要可以匿名登录可以这样:
[root@localhost bin]# mkdir /var/ftp #在/var/目录下创建一个ftp目录,作为匿名账户的家目录。