利用pureftp实现虚拟帐号验证ftp服务
拓扑图:
后台管理:利用web方式进行管理,增加帐号,配额,速度限制。增加帐号放在数据库内,web通过php来调用mysql
前台应用:pureftp支持mysql身份验证,其中mysql中放置的是虚拟帐号
实验准备:
pure-ftpd-1.0.36.tar.gz //服务器主程序
ZendOptimizer-3.3.3-linux-hicode.tar.gz //支持php加速
PureAdmin-0.3.tar.gz //web管理工具
pureftpd-mysql.conf
pureftp.sql
实验配置:
一、安装
[root@localhost ~]# yum -y install httpd php php-mysql mysql mysql-server mysql-devel
[root@localhost ~]# service httpd start
[root@localhost ~]# service mysqld start
[root@localhost ~]# mysqladmin -u root -p password '123456'
二、源码安装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
\:表示一行没有写完
--prefix:安装目录
--with-quotas:配额
--with-puredb:虚拟帐号和本地帐号映射的存放数据库
[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]# mkdir /usr/local/pureftpd/etc
[root@localhost pure-ftpd-1.0.36]# cd configuration-file/
[root@localhost configuration-file]# cp pure-ftpd.conf /usr/local/pureftpd/etc
[root@localhost configuration-file]# chmod 755 pure-config.pl
[root@localhost configuration-file]# cp pure-config.pl /usr/local/pureftpd/sbin/
四、生成pure-ftpd的服务控制脚本
[root@localhost pure-ftpd-1.0.36]# cd contrib/
[root@localhost contrib]# cp redhat.init /etc/init.d/pureftpd
[root@localhost contrib]# chmod 755 /etc/init.d/pureftpd
[root@localhost contrib]# 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 --dae
monize
[root@localhost contrib]# service pureftpd start
[root@localhost contrib]# netstat -tupln |grep ftp
tcp
0 0 0.0.0.0:21 0.0.0.0:* LISTEN 9480/pure-ftpd (SER
[root@localhost contrib]# chkconfig --add pureftpd
[root@localhost contrib]# chkconfig --list |grep ftp
五、配置匿名(虚拟)用户登录环境
[root@localhost contrib]# mkdir /ftproot
[root@localhost contrib]#chmod -R 777 /ftproot //这不不做可以能会引起登录时报421错误
[root@localhost contrib]## useradd virtualftp -d /ftproot -s /sbin/nologin -M //创建接下来的虚拟用户对应的系统用户
[root@localhost contrib]# chown virtualftp:virtualftp /ftproot
vim /usr/local/pureftpd/etc/pure-ftpd.conf
文件内容修改:
20
chrootEveryone yes //限定在自己的家目录
40
MaxClientsNumber 50 //最大连接数目
52
MaxClientsPerIP 8 //每个IP最大连接数目
77
NoAnonymous yes //不允许匿名登录
336
CreateHomeDir yes //允许用户登录后自动创建家目录
六、用pureDB认证
vim /usr/local/pureftpd/etc/pure-ftpd.conf //用mysql认证
文件内容修改:
116 MySQLConfigFile
/usr/local/pureftpd/etc/pureftpd-mysql.conf
[root@localhost ~]# cp pureftpd-mysql.conf /usr/local/pureftpd/etc/
[root@localhost ~]# cd /usr/local/pureftpd/etc/
vim pureftpd-mysql.conf
文件内容修改:
32 MYSQLPassword
tmppasswd
45 MYSQLCrypt
md5 //密码类型
vim pureftp.sql
文件内容修改:
50 INSERT INTO admin VALUES ('admin',MD5('123')); //后台管理密码
[root@localhost ~]# mysql -u root -p < pureftp.sql //导入数据到mysql
[root@localhost ~]# mysql -u root -p
Enter password:
mysql> show databases; //查看mysql中是否导入
+--------------------+
| Database
|
+--------------------+
| information_schema |
| ftpusers
|
| mysql
|
| test
|
mysql>grant all privileges on ftpusers.* to ftp@localhost identified by 'tmppasswd'; //添加连接mysql用户,使其都有访问权限
mysql>flush privileges;
mysql>quit;
配置PHP管理界面
[root@localhost ~]# tar -zxvf PureAdmin-0.3.tar.gz -C /var/www/html
[root@localhost html]# mv PureAdmin-0.3 pureadmin
vim config.php
文件内容修改:
3 $cfg['dbname']='ftpusers'; //mysql db name
4 $cfg['dbuser']='ftp';
//mysql user
5 $cfg['dbpasswd']='tmppasswd';
//mysql password
10 $cfg['passwdtype']='MD5';
14 $cfg['dir']='/ftproot/';
//用户家目录
16 $cfg['qs']=100;
//配额限制100M
17 $cfg['ul']=0;
//上传速录无限制
18 $cfg['dl']=200;
//下载速度限制为200k
[root@localhost pureadmin]# service httpd restart
[root@localhost pureadmin]# service pureftpd restart
测试:
客户端访问后台管理:
创建用户user1
访问数据库,自动创建了user1用户
[root@localhost pureadmin]# mysql -u root -p
Enter password:
mysql> use ftpusers;
mysql> show tables;
+--------------------+
| Tables_in_ftpusers |
+--------------------+
| admin
|
| users
|
+--------------------+
mysql> select * from users;
+-------+----------------------------------+------+------+----------------+------------+-----------+-------------+-------------+-----------+---------+--------+---------+---------+
| User | Password
| Uid | Gid | Dir | QuotaFiles | QuotaSize | ULBandwidth | DLBandwidth | Ipaddress | Comment | Status | ULRatio | DLRatio |
+-------+----------------------------------+------+------+----------------+------------+-----------+-------------+-------------+-----------+---------+--------+---------+---------+
| user1 | d41d8cd98f00b204e9800998ecf8427e | 1000 | 1000 | /ftproot/user1 |
0 | 100 | 0 | 200 | * | | 1 | 0 | 0 |
+-------+----------------------------------+------+------+----------------+------------+-----------+-------------+-------------+-----------+---------+--------+---------+---------+
vim /usr/local/pureftpd/etc/pure-ftpd.conf //映射
文件内容修改:
126 PureDB
/usr/local/pureftpd/pureftpd.pdb
[root@localhost ~]# echo PATH=$PATH:/usr/local/pureftpd/bin/ >>/etc/profile //设置环境变量
[root@localhost ~]#. /etc/profile //立即生效
[root@localhost ~]# pure-pw useradd user2 -u virtualftp -g virtualftp -d /ftproot/user2 -m [root@localhost ~]# pure-pw mkdb /usr/local/pureftpd/pureftpd.pd //建立用户数据库
[root@localhost ~]# service httpd restart
[root@localhost ~]# service pureftpd restart
客户端测试
用户user2访问ftp:
服务器测试:
[root@localhost ~]# cd /ftproot/
[root@localhost ftproot]# ll
总计 4
drwxr-xr-x 2 virtualftp virtualftp 4096 08-21 20:18 user2 //客户端登录后自动产生帐号
创建user3用户
客户端测试
服务器测试:
[root@localhost ftproot]# ll
总计 8
drwxr-xr-x 2 virtualftp virtualftp 4096 08-21 20:18 user2
drwxr-xr-x 2
1000 1000 4096 08-21 20:23 user3 //增加了user3
转载于:https://blog.51cto.com/yz406/992965