Pure-FTPd完成根据虚拟帐号拜访的FTP服务器51CTO博客 - 娱乐之横扫全球

Pure-FTPd完成根据虚拟帐号拜访的FTP服务器51CTO博客

2019-01-03 15:17:17 | 作者: 耘志 | 标签: 目录,虚拟,拜访 | 浏览: 1976


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的装置:

[root@server ~]# tar -zxvf apr-1.4.6.tar.gz -C/usr/local/src/

[root@server ~]# cd /usr/local/src/apr-1.4.6/

[root@server apr-1.4.6]# ./configure --prefix=/usr/local/apr

[root@server apr-1.4.6]# make && make install

[root@server apr-1.4.6]# cd /usr/local/apr/

[root@server apr]# ln -s /usr/local/apr/include/usr/include/apr

[root@server apr]# cd /etc/ld.so.conf.d/

[root@server ld.so.conf.d]# vim apr.conf apr的内容如下图:

然后运用ldconfig改写缓存,在运用ldconfig -pv |grep apr检查apr相关的库文件:

apr-util的装置:

[root@server ~]# tar -zxvf apr-util-1.5.1.tar.gz -C/usr/local/src/

[root@server ~]# cd /usr/local/src/apr-util-1.5.1/

[root@server apr-util-1.5.1]# ./configure--prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config

[root@server apr-util-1.5.1]# make && make install

[root@server apr-util-1.5.1]# cd /usr/local/apr-util/

[root@server apr-util]# ln -s /usr/local/apr-util/include/usr/include/apr-util

[root@server apr-util]# cd /etc/ld.so.conf.d/

[root@server ld.so.conf.d]# vim apr-util.conf apr-util的内容如下图:

相同运用ldconfig改写缓存

httpd的装置:

阐明:因为在对httpd进行相应的装备时,还依赖于pcre的库,所以要挂载光盘装置pcre-devel。

[root@server ~]# mkdir /mnt/cdrom

[root@server ~]# mount /dev/cdrom /mnt/cdrom/

[root@server ~]# cd /mnt/cdrom/Server/

[root@server Server]# rpm -ivh pcre-devel-6.6-2.el5_1.7.i386.rpm

[root@server ~]# tar -jxvf httpd-2.4.4.tar.bz2 -C/usr/local/src/

[root@server ~]# cd /usr/local/src/httpd-2.4.4/

[root@server 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

[root@server httpd-2.4.4]# make && make install

[root@server httpd-2.4.4]# cd /usr/local/apache/

[root@server apache]# ln -s /usr/local/apache/include/usr/include/apache

[root@server apache]# vim /etc/profile 对环境文件作如下修正:

[root@server apache]# . /etc/profile 从头读取环境文件

[root@server 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

[root@server apache]# vim /etc/man.config 作如下修正:

阐明:因为源码装置没效劳的操控脚本,一般需求咱们自己写,而效劳器的操控脚本地点的目录:/etc/init.d/一般与程序的姓名相同。

[root@localhost ~]# cd /etc/init.d/

[root@localhost 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

[root@localhost init.d]# chmod a+x httpd

修正/etc/httpd/httpd.conf 的装备文件,使得其支撑根据php开发的pure-ftpd的web办理页面,需做如下修正:

发动httpd效劳,并且参加chkconfig 完结效劳开机主动发动:

2.mysql数据库的装置,因为mysql的源码拆解目录下没有configure的装备东西,咱们要对mysql进行相应的装备有必要运用cmake东西进行mysql的装备。

cmake东西的装置:

[root@server ~]# tar -zxvf cmake-2.8.10.2.tar.gz -C/usr/local/src/

[root@server ~]# cd /usr/local/src/cmake-2.8.10.2/

[root@server cmake-2.8.10.2]# ./configure--prefix=/usr/local/cmake

[root@server cmake-2.8.10.2]# make && make install

然后对cmake装置目录下的bin目录和man目录做好像httpd相同的操作,这儿就不再写出了。

mysql的装置:

[root@server ~]# groupadd mysql

[root@server ~]# useradd -r -g mysql mysql -s /sbin/nologin-M

阐明:在linux下任何一种效劳要运转,都需求相应的运转者身份,这儿咱们需求树立运转mysql效劳的运转者mysql和该用户所属组mysql。

[root@server ~]# tar -zxvf mysql-5.6.10.tar.gz -C/usr/local/src/

[root@server ~]# cd /usr/local/src/

[root@server src]# ln -s /usr/local/src/mysql-5.6.10/usr/local/src/mysql

[root@server src]# cd mysql

[root@server mysql]# cmake . 履行cmake发生Makefile文件

[root@server mysql]# make && make install

阐明:mysql装置完结后会在/usr/local/下发生名为mysql的装置目录。接下来相同对mysql装置目录下的bin目录、lib目录、man目录和include目录都需求做同httpd相应的操作,这儿不再写了。

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

[root@server mysql]# chown -R mysql:mysql .

[root@server mysql]# scripts/mysql_install_db --user=mysql

[root@server mysql]# chown -R root .

[root@server mysql]# chown -R mysql data

现在发生mysql的装备文件和操控脚本:

[root@server mysql]# cp support-files/my-default.cnf/etc/my.cnf

[root@server mysql]# cp support-files/mysql.server/etc/init.d/mysqld

[root@server mysql]# chmod a+x /etc/init.d/mysqld

发动mysql的效劳,并且运用chkconfig进行办理:

[root@server mysql]# service mysqld start

[root@server mysql]# chkconfig --add mysqld

[root@server mysql]# chkconfig mysqld on

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

[root@server 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 ftp@localhostidentified by tmppasswd;将对数据库ftpusers的一切权限颁发ftp用户

mysql> flush privileges; 改写权限值

mysql> \quit

从头运用ftp用户登录mysql数据库:

3.php的装置

[root@server ~]# tar -jxvf php-5.4.13.tar.bz2 -C/usr/local/src/

[root@server ~]# cd /usr/local/src/php-5.4.13/

[root@server 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 \

[root@server php-5.4.13]# make && make install

进入php的装置目录,对该目录下的bin目录做httpd相同的操组,此处省掉操作过程。

二.装置pure-ftpd

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

[root@server ~]# tar -zxvf pure-ftpd-1.0.36.tar.gz -C/usr/local/src/

[root@server ~]# cd /usr/local/src/pure-ftpd-1.0.36/

[root@server 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

[root@server pure-ftpd-1.0.36]# make && make install

对装置目录下的bin目录和sbin目录做好像httpd相同的操作。


阐明:生成pure-ftpd的效劳脚本和装备文件,因为在装备pure-ftpd进行装备时没有指定其装备文件的寄存途径,默许在其装置的目录下的/etc。

[root@server ~]# cd /usr/local/pureftpd/

[root@server pureftpd]# mkdir etc

[root@server pureftpd]# cd /usr/local/src/pure-ftpd-1.0.36/configuration-file/

[root@server configuration-file]# chmod a+x pure-config.pl

[root@server configuration-file]# cp pure-config.pl/usr/local/pureftpd/sbin/

[root@server configuration-file]# cp pure-ftpd.conf/usr/local/pureftpd/etc/

[root@server configuration-file]# cd ../contrib/

[root@server contrib]# chmod a+x redhat.init

[root@server 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的接口文件进行相应的操作:

[root@server ~]# 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效劳,在什么验证成功后,会映射成本地账户进行拜访。

[root@server etc]# mkdir /ftproot

[root@server etc]# chmod 777 /ftproot/

[root@server etc]# useradd virtualftp -d /ftproot/ -s/sbin/nologin -M

[root@server etc]# chown -R virtualftp:virtualftp /ftproot/

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

[root@server etc]#pure-pw mkdb /usr/local/pureftpd/pureftpd.pdb #树立用户数据库

2.装置和装备pure-ftp的web办理界面:

[root@server ~]# tar -zxvf PureAdmin-0.3.tar.gz -C/usr/local/apache/htdocs/

[root@server ~]# cd /usr/local/apache/htdocs/

[root@server htdocs]# mv PureAdmin-0.3 pureadmin

切换到pureadmin目录,修正config.php装备文件,内容如下:

最终为了能够运用匿名用户能够拜访ftp效劳器,有必要创立/var/ftp目录,因为匿名用户的默许家目录便是该目录,并且该目录开端并不存在需求咱们手动创立。

[root@server pureadmin]# mkdir /var/ftp

至此,整个环境树立的作业现已完结,下面能够进行相关的测验了。

三.测验FTP效劳器

运用浏览器拜访http://192.168.2.100/pureadmin,后台办理员是admin暗码是passwd,能够根据web进行ftp效劳的办理。

咱们创立了一个虚拟用户user1:



因为每个用户在登录FTP效劳器都会进入到自己的家目录,而咱们虚拟用户在创立时并没有构成家目录,只有当运用该用户进行登录时才会在本地的/ftproot/目录下构成自己的家目录。现在咱们比较一下user1拜访FTP效劳器的前后,到底会不会在/ftproot/目录下主动创立家目录:

至此,pure-ftpd的整个树立和装备现已完结,详细对用户的各种约束需求我们自己探索。


版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表娱乐之横扫全球立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章