Pure-FTPd实现基于虚拟帐号访问的FTP服务器

Pure-FTPd是一个免费的(BSD),安全的,符合标准的FTP服务器。它可以基于web页面进行管理,管理起来非常方便和高效;同时,它支持虚拟用户进行访问,大大提高了它的安全性。它提供了共同的需求,简单的答案,再加上独特的有用的功能,为个人用户和主机提供商。

Pure-FTPd可以支持多种操作系统(Linux, OpenBSD, NetBSD, DragonflyBSD FreeBSD, Solaris, Tru64,Darwin, Irix,HPUX,AIXand iPhone.),支持多种国家语言。

实现的环境:RedHat Enterprise Linux 5.4

使用到的相关软件包:

httpd-2.4.4.tar.bz2 (源代码)

apr-1.4.6.tar.gz (源代码)支持httpd的可移植运行库

apr-util-1.5.1.tar.gz (源代码)可移植运行库的工具

mysql-5.6.10.tar.gz (源代码)

php-5.4.13.tar.bz2 (源代码)

cmake-2.8.10.2.tar.gz (源代码)实现mysql的配置

pure-ftpd-1.0.36.tar.gz (源代码)pure-ftpd源码包

PureAdmin-0.3.tar.gz   ftp服务器基于web的后台管理程序

ZendOptimizer-3.3.3-linux-hicode.tar.gz php加速器

pureftp.sql    建库建表语句

pureftpd-mysql.conf   pureftp与mysql的连接接口文件

以上这些东西都是来自互联网,都可以在互联网上找到。

具体实现:

一.搭建LAMP环境

1.httpd的安装,再安装httpd之前一定要有apr的可移植运行库和可移植性运行库工具的支持。

apr的安装:

[[email protected] ~]# tar -zxvf apr-1.4.6.tar.gz -C/usr/local/src/

[[email protected] ~]# cd /usr/local/src/apr-1.4.6/

[[email protected] apr-1.4.6]# ./configure --prefix=/usr/local/apr

[[email protected] apr-1.4.6]# make && make install

[[email protected] apr-1.4.6]# cd /usr/local/apr/

[[email protected] apr]# ln -s /usr/local/apr/include/usr/include/apr

[[email protected] apr]# cd /etc/ld.so.conf.d/

[[email protected] ld.so.conf.d]# vim apr.conf  apr的内容如下图:

然后使用ldconfig刷新缓存,在使用ldconfig -pv |grep apr查看apr相关的库文件:

apr-util的安装:

[[email protected] ~]# tar -zxvf apr-util-1.5.1.tar.gz -C/usr/local/src/

[[email protected] ~]# cd /usr/local/src/apr-util-1.5.1/

[[email protected] apr-util-1.5.1]# ./configure--prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config

[[email protected] apr-util-1.5.1]# make && make install

[[email protected] apr-util-1.5.1]# cd /usr/local/apr-util/

[[email protected] apr-util]# ln -s /usr/local/apr-util/include/usr/include/apr-util

[[email protected] apr-util]# cd /etc/ld.so.conf.d/

[[email protected] ld.so.conf.d]# vim apr-util.conf  apr-util的内容如下图:

同样使用ldconfig刷新缓存

httpd的安装:

说明:由于在对httpd进行相应的配置时,还依赖于pcre的库,所以要挂载光盘安装pcre-devel。

[[email protected] ~]# mkdir /mnt/cdrom

[[email protected] ~]# mount /dev/cdrom /mnt/cdrom/

[[email protected] ~]# cd /mnt/cdrom/Server/

[[email protected] Server]# rpm -ivh pcre-devel-6.6-2.el5_1.7.i386.rpm

[[email protected] ~]# tar -jxvf httpd-2.4.4.tar.bz2 -C/usr/local/src/

[[email protected] ~]# cd /usr/local/src/httpd-2.4.4/

[[email protected] httpd-2.4.4]# ./configure \

> --prefix=/usr/local/apache \

> --sysconfdir=/etc/httpd \

> --enable-mods-shared=most \

> --enable-so \

> --enable-ssl \

> --enable-mpms-shared=all \

> --enable-rewrite \

> --with-apr=/usr/local/apr/bin/apr-1-config \

> --with-apr-util=/usr/local/apr-util/bin/apu-1-config \

> --with-zlib \

> --with-pcre

[[email protected] httpd-2.4.4]# make && make install

[[email protected] httpd-2.4.4]# cd /usr/local/apache/

[[email protected] apache]# ln -s /usr/local/apache/include/usr/include/apache

[[email protected] apache]# vim /etc/profile  对环境文件作如下修改:

[[email protected] apache]# . /etc/profile  重新读取环境文件

[[email protected] apache]# echo $PATH

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/apache/bin

[[email protected] apache]# vim /etc/man.config  作如下修改:

说明:由于源码安装没服务的控制脚本,通常需要我们自己写,而服务器的控制脚本所在的目录:/etc/init.d/通常与程序的名字相同。

[[email protected] ~]# cd /etc/init.d/

[[email protected] init.d]# vim httpd  httpd的内容如下:

#/bin/bash

# chkconfig:2345 88 78   服务设置在各级别启动与关闭状态

# description:httpd server daemon  实现chkconfig自动管理必不可少

lockfile=/var/lock/subsys/httpd

prog=/usr/local/apache/bin/httpd

configfile=/etc/httpd/httpd.conf

./etc/init.d/functions

start(){

[ -f $lockfile ] && echo"httpd is started" && exit

echo -n "httpd isstarting..."

sleep 1

$prog -f $configfile && echo"ok" && touch $lockfile || echo "failed"

}

stop(){

[ ! -f $lockfle ] && echo"httpd is stoped" && exit

echo -n "httpd is stopping"

sleep 1

killproc httpd && echo"ok" && rm -rf $lockfile || echo "failed"

}

case"$1" in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

*)

echo"USAGE:start|stop|restart"

esac

[[email protected] init.d]# chmod a+x httpd

修改/etc/httpd/httpd.conf 的配置文件,使得其支持基于php开发的pure-ftpd的web管理页面,需做如下修改:

启动httpd服务,并且加入chkconfig 实现服务开机自动启动:

2.mysql数据库的安装,由于mysql的源码拆解目录下没有configure的配置工具,我们要对mysql进行相应的配置必须使用cmake工具进行mysql的配置。

cmake工具的安装:

[[email protected] ~]# tar -zxvf cmake-2.8.10.2.tar.gz -C/usr/local/src/

[[email protected] ~]# cd /usr/local/src/cmake-2.8.10.2/

[[email protected] cmake-2.8.10.2]# ./configure--prefix=/usr/local/cmake

[[email protected] cmake-2.8.10.2]# make && make install

然后对cmake安装目录下的bin目录和man目录做如同httpd相同的操作,这里就不再写出了。

mysql的安装:

[[email protected] ~]# groupadd mysql

[[email protected] ~]# useradd -r -g mysql mysql -s /sbin/nologin-M

说明:在linux下任何一种服务要运行,都需要相应的运行者身份,这里我们需要建立运行mysql服务的运行者mysql和该用户所属组mysql。

[[email protected] ~]# tar -zxvf mysql-5.6.10.tar.gz -C/usr/local/src/

[[email protected] ~]# cd /usr/local/src/

[[email protected] src]# ln -s /usr/local/src/mysql-5.6.10/usr/local/src/mysql

[[email protected] src]# cd mysql

[[email protected] mysql]# cmake .     执行cmake产生Makefile文件

[[email protected] mysql]# make && make install

说明:mysql安装完成后会在/usr/local/下产生名为mysql的安装目录。接下来同样对mysql安装目录下的bin目录、lib目录、man目录和include目录都需要做同httpd相应的操作,这里不再写了。

进入mysql的安装目录,产生mysql的初始化数据库:

[[email protected] mysql]# chown -R mysql:mysql .

[[email protected] mysql]# scripts/mysql_install_db --user=mysql

[[email protected] mysql]# chown -R root .

[[email protected] mysql]# chown -R mysql data

现在产生mysql的配置文件和控制脚本:

[[email protected] mysql]# cp support-files/my-default.cnf/etc/my.cnf

[[email protected] mysql]# cp support-files/mysql.server/etc/init.d/mysqld

[[email protected] mysql]# chmod a+x /etc/init.d/mysqld

启动mysql的服务,并且使用chkconfig进行管理:

[[email protected] mysql]# service mysqld start

[[email protected] mysql]# chkconfig --add mysqld

[[email protected] mysql]# chkconfig mysqld on

现在对mysql进行相应的操作,修改mysql的用户密码

[[email protected] mysql]# mysqladmin -u root -p password ‘123‘

mysql> INSERT INTO mysql.user (Host, User, Password,Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv,Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv,References_priv, Index_priv, Alter_priv, ssl_cipher, x509_issuer, x509_subject)VALUES(‘localhost‘,‘ftp‘,PASSWORD(‘passwd‘),‘Y‘,‘Y‘,‘Y‘,‘Y‘,‘N‘,‘N‘,‘N‘,‘N‘,‘N‘,‘N‘,‘N‘,‘N‘,‘N‘,‘N‘,‘NULL‘, ‘NULL‘, ‘NULL‘);

mysql> FLUSH PRIVILEGES;

mysql>CREATE DATABASE ftpusers;

mysql>USE ftpusers;

mysql>CREATE TABLE admin (

Username varchar(35)NOT NULL default ‘‘,

Password char(32)binary NOT NULL default ‘‘,

PRIMARY KEY (Username)

);

mysql>INSERT INTO admin VALUES (‘admin‘,MD5(‘passwd‘));

mysql>CREATE TABLE `users` (

`User` varchar(16)NOT NULL default ‘‘,

`Password`varchar(32) binary NOT NULL default ‘‘,

`Uid` int(11) NOTNULL default ‘14‘,

`Gid` int(11) NOTNULL default ‘5‘,

`Dir` varchar(128)NOT NULL default ‘‘,

`QuotaFiles` int(10)NOT NULL default ‘500‘,

`QuotaSize` int(10)NOT NULL default ‘30‘,

`ULBandwidth` int(10)NOT NULL default ‘80‘,

`DLBandwidth` int(10)NOT NULL default ‘80‘,

`Ipaddress`varchar(15) NOT NULL default ‘*‘,

`Comment` tinytext,

`Status`enum(‘0‘,‘1‘) NOT NULL default ‘1‘,

`ULRatio` smallint(5)NOT NULL default ‘1‘,

`DLRatio` smallint(5)NOT NULL default ‘1‘,

PRIMARY KEY (`User`),

UNIQUE KEY `User`(`User`)

);

mysql> grant all privileges on ftpusers.* to [email protected] by ‘tmppasswd‘;将对数据库ftpusers的所有权限授予ftp用户

mysql> flush privileges;      刷新权限值

mysql> \quit

重新使用ftp用户登录mysql数据库:

3.php的安装

[[email protected] ~]# tar -jxvf php-5.4.13.tar.bz2 -C/usr/local/src/

[[email protected] ~]# cd /usr/local/src/php-5.4.13/

[[email protected] php-5.4.13]# ./configure \

> --prefix=/usr/local/php \

> --sysconfdir=/etc/php \

> --with-apxs2=/usr/local/apache/bin/apxs \

> --with-gd \

> --with-jpeg-dir \

> --with-png-dir \

> --with-zlib-dir \

> --enable-mbstring \

> --with-mysql=/usr/local/mysql \

> --with-mysqli=/usr/local/mysql/bin/mysql_config \

[[email protected] php-5.4.13]# make && make install

进入php的安装目录,对该目录下的bin目录做httpd同样的操组,此处省略操作步骤。

二.安装pure-ftpd

1.安装pure-ftpd的主程序:

[[email protected] ~]# tar -zxvf pure-ftpd-1.0.36.tar.gz -C/usr/local/src/

[[email protected] ~]# cd /usr/local/src/pure-ftpd-1.0.36/

[[email protected] 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

[[email protected] pure-ftpd-1.0.36]# make && make install

对安装目录下的bin目录和sbin目录做如同httpd同样的操作。

说明:生成pure-ftpd的服务脚本和配置文件,由于在配置pure-ftpd进行配置时没有指定其配置文件的存放路径,默认在其安装的目录下的/etc。

[[email protected] ~]# cd /usr/local/pureftpd/

[[email protected] pureftpd]# mkdir etc

[[email protected] pureftpd]# cd /usr/local/src/pure-ftpd-1.0.36/configuration-file/

[[email protected] configuration-file]# chmod a+x pure-config.pl

[[email protected] configuration-file]# cp pure-config.pl/usr/local/pureftpd/sbin/

[[email protected] configuration-file]# cp pure-ftpd.conf/usr/local/pureftpd/etc/

[[email protected] configuration-file]# cd ../contrib/

[[email protected] contrib]# chmod a+x redhat.init

[[email protected] contrib]# cp redhat.init /etc/init.d/pureftpd

修改pure-ftpd的控制脚本文件,对以下三行进行修改:

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

修改pure-ftpd的配置文件,内容如下:

20 ChrootEveryone yes    #固定家目录

40 MaxClientsNumber 100    #最大连接数

52 MaxClientsPerIP 2    #每个ip地址最大连接数

71 AnonymousOnly no    #允许匿名用户外的用户登录

77 NoAnonymous no    #允许匿名用户登录

116 MySQLConfigFile /user/local/pureftpd/etc/pureftpd-mysql.conf

#指明pure-ftpd与mysql数据库的接口文件位置

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

#采用pureDB进行ftp用户身份验证

214 Bind  127.0.0.1,21    #绑定地址

215 Bind  192.168.2.100,21

337 CreateHomeDir yes    #虚拟用户登录后自动创建家目录

对pureftpd-mysql.conf的接口文件进行相应的操作:

[[email protected] ~]# mv pureftpd-mysql.conf/usr/local/pureftpd/etc/

修改接口文件的内容:

12 MYSQLServer 127.0.0.1

17 MYSQLPort 3306

22 MYSQLSocket /tmp/mysql.sock

27 MYSQLUser ftp

32 MYSQLPassword tmppasswd

37 MYSQLDatabase ftpusers

45 MYSQLCrypt md5

启动pure-ftpd服务,并加入chkconfig进行管理:

虚拟用户实现基于pureDB进行验证,因为虚拟用户想要访问ftp服务,在什么验证成功后,会映射成本地账户进行访问。

[[email protected] etc]# mkdir /ftproot

[[email protected] etc]# chmod 777 /ftproot/

[[email protected] etc]# useradd virtualftp -d /ftproot/ -s/sbin/nologin -M

[[email protected] etc]# chown -R virtualftp:virtualftp /ftproot/

[[email protected] etc]# pure-pw useradd user1 -u virtualftp -gvirtualftp -d /ftproot/user1 –m #虚拟账户映射成本地账户virtualftp

[[email protected] etc]#pure-pw mkdb /usr/local/pureftpd/pureftpd.pdb #建立用户数据库

2.安装和配置pure-ftp的web管理界面:

[[email protected] ~]# tar -zxvf PureAdmin-0.3.tar.gz -C/usr/local/apache/htdocs/

[[email protected] ~]# cd /usr/local/apache/htdocs/

[[email protected] htdocs]# mv PureAdmin-0.3 pureadmin

切换到pureadmin目录,修改config.php配置文件,内容如下:

最后为了能够使用匿名用户能够访问ftp服务器,必须创建/var/ftp目录,因为匿名用户的默认家目录就是该目录,而且该目录开始并不存在需要我们手动创建。

[[email protected] pureadmin]# mkdir /var/ftp

至此,整个环境搭建的工作已经完成,下面可以进行相关的测试了。

三.测试FTP服务器

使用浏览器访问http://192.168.2.100/pureadmin,后台管理员是admin密码是passwd,可以基于web进行ftp服务的管理。

我们创建了一个虚拟用户user1:

由于每个用户在登录FTP服务器都会进入到自己的家目录,而我们虚拟用户在创建时并没有形成家目录,只有当使用该用户进行登录时才会在本地的/ftproot/目录下形成自己的家目录。现在我们比较一下user1访问FTP服务器的前后,到底会不会在/ftproot/目录下自动创建家目录:

至此,pure-ftpd的整个搭建和配置已经完成,具体对用户的各种限制需要大家自己摸索。

时间: 2024-10-20 03:54:49

Pure-FTPd实现基于虚拟帐号访问的FTP服务器的相关文章

搭建FTP/NFS服务(vsftpd基于虚拟用户的访问形式)

题目:搭建一套文件vsftp文件共享服务,共享目录为/ftproot,要求:(描述完整的过程) 1)基于虚拟用户的访问形式: 2)匿名不允许上传: 3)禁锢所有的用户于其家目录当中: 4)限制最大并发连接数为200: 5)匿名用户的最大传输速率512KB/s: 6)虚拟用户的账号存储在mysql数据库当中. 7)数据库通过NFS进行共享. 搭建环境: FTP/NFS服务器:192.168.10.99 (CentOS 7) 搭建FTP/NFS详细过程: 1.配置vsftpd基于pam_mysql的

Ubuntu配置vsftpd虚拟帐号

Ubuntu配置vsftpd虚拟帐号: apt-get install vsftpd mkdir /etc/vsftpd vi /etc/vsftpd/userlist.txt (奇数行为用户名,偶数行为密码) aaxxxx:wq apt-get install db-util cd /etc/vsftpd db_load -T -t hash -f userlist.txt /etc/vsftpd/userlist.db vi /etc/pam.d/vsftpd.conf (在最上面添加,其它

qmail搭建基于web的vpopmail域与虚拟帐号管理工具问题一

#解决出现不能执行查询(query): SELECT * FROM admin ORDER BY id ASC LIMIT -20, 20,修改vi /var/www/html/admin/sys/index.php--------------------------------$start_row = ($get_page - 1)*$CFG_NUMOFPAGE;修改成if ($get_page == 0) {$start_row = $get_page*$CFG_NUMOFPAGE;}els

Chapter 1 Securing Your Server and Network(4):使用虚拟服务帐号

原文:Chapter 1 Securing Your Server and Network(4):使用虚拟服务帐号 原文出处:http://blog.csdn.net/dba_huangzj/article/details/38037457,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349 未经作者同意,任何人不得以"原创"形式发布,也不得已用于商业用途,本人不负责任何法律责任. 前一篇:http://blog

CentOS7上快速搭建FTP服务器,基于本地用户访问

本篇文档主要讲基于Linux上本地用户进行访问的FTP服务器的快速搭建步骤. 如果是想进阶学习FTP,如基于mysql的虚拟用户的配置,不应该参考本篇文档. 参考文档:http://www.178linux.com/52605 https://help.aliyun.com/document_detail/51998.html 以下是配置步骤: 1.安装vsftp ~]# yum install -y vsftp 2.相关配置文件  ~]# cd /etc/vsftpd/ vsftpd]# ls

Chapter 1 Securing Your Server and Network(3):使用托管服务帐号

原文:Chapter 1 Securing Your Server and Network(3):使用托管服务帐号 原文出处:http://blog.csdn.net/dba_huangzj/article/details/38017703,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349 未经作者同意,任何人不得以"原创"形式发布,也不得已用于商业用途,本人不负责任何法律责任. 前一篇:http://blog

centos下如何修改FTP帐号或密码

centos下如何修改FTP帐号或密码 2013 年 2 月 3 日 tamia 发表回复 centos下lamp的环境安装好后,也许会自动为你创建一个FTP用户, 但是用户名和密码可能你并不喜欢. 如想修改密码或用户名,先找个ssh工具,阿里云官网建议的是用PuTTY,而我也习惯了它. 修改FTP密码,连接上服务器后,在终端提示符下输入:passwd ftp(ftp为你要修改密码的帐号) 会提示输入新密码,并再次确认输入新密码.(如出现 “BAD PASSWORD: it is too sim

sql server 创建只读帐号

有时候为了方便查询一下数据,会创建个只读帐号,以免误写sql语句改了数据 步骤:用sa帐号连接后,安全性--登录名--新建 输入要新建的帐号密码,在服务器角色里面单勾一个public 在 用户映射里面勾选要操作的数据库,再勾选 db_datareader.db_denydatawrite.public 确定就可以了 创建好了以后找一个没用的表测试测试update语句

网络文件系统访问与ftp服务

[**cifs网路文件系统访问**] 1.安装共享访问客户端 yum install sssd krb5-workstation.x86_64 -y 2.识别共享服务器共享目录 smbclient -L //172.25.254.253 例如: 3.访问共享 命令访问) smbclient //172.25.254.253 挂载访问) mount //172.25.254.253/westos /mnt -o username=guest 4.开机自动挂载cifs 1) vim /etc/fst