音效素材网提供各类素材,打造精品素材网站!

站内导航 站长工具 投稿中心 手机访问

音效素材

PureFTPd+Mysql+PHP_Manager实现虚拟用户磁盘限额的配置方法
日期:2013-06-08 19:08:18   来源:脚本之家

在安装PureFTPd以前,要做好以下准备工作:
1. 安装FreeBSD4.9系统。
2. 定制内核,在内核中加入“options QUOTA”以实现用户配额的支持(注:其他*nix系统如何实现,请各位自己搜索实现。)
3. 安装好APACHE+PHP平台,因为我们后面要用PHP_Manager实现用户在线管理。(注:关于这个安装的内容网上有很多教程,在FreeBSD下可以直接用PORTS方式安装就可以了。)
做好以上准备工作之后,我们就可以开始进入真正的安装过程了。
(注:以下安装全部采用PORTS方式安装)
一、 安装Mysql
我安装的Mysql是4.0版本的,所以如果有最新大家也可以尝试啊。

# cd /usr/ports/databases/mysql40-server
# make install clean

安装完后产生启动脚本在 /usr/local/etc/rc.d/mysql-server.sh

你可以运行以下命令,看Mysql服务是否已经启动。

# ls | grep mysql

如果有返回信息,就表示Mysql已经启动了,如果没有启动,运行以下命令。

# cd /usr/local/etc/rc.d
# ./mysql-server.sh start

如果你要停止Mysql服务。

# /usr/local/etc/rc.d/mysql-server.sh stop

确认服务启动后,我们来测试数据库运行是否正常:
(注:默认情况下Mysql的用户是root,密码为空,所以请立即登录Mysql修改root用户的密码)

# mysql

出现下面内容表示运行正常。

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16 to server version: 4.0.18
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
输入exit退出Mysql

Mysql的root用户设置一个口令123456

# mysqladmin -u root password ‘123456'

设置完后我们再来测试一下密码是否生效了。

# mysql -u root -p
Enter password:

出现提示密码,输入正确密码并回车。
如果出现以下内容,表示设置成功。
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16 to server version: 4.0.18
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

如果出现以下内容,表示设置失败。(如果这样,你就惨了,哈哈)

ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)


二、 安装PureFTPd
1.下面我们开始安装PureFTPd,同样以FreeBSD的Ports方式安装。

# cd /usr/ports/ftp/pure-ftpd
# make WITH_MYSQL=1 \ MYSQL数据库支持
WITH_LANG=simplified-chinese \ 提示文字为简体中文
CONFIGURE_ARGS= \
' --prefix=/usr/local/pureftpd \ 安装目录
--with-paranoidmsg \ //唔....不知该怎么说.算是可以给特定人的信息吧.
--with-welcomemsg \ //支持登录后的信息显示,我反正搞不定,哈哈
--with-uploadscript \ //当一个文件被完整上传完后自动呼叫某一script去对这个文件
处理.当然.这个script得你自己写.
--with-largefile \ //支持下载超过2G的文件.
--with-cookie \ //使用者进站看到的东东.类似进站画面.
--with-virtualchroot \ //安全的chroot.
--with-virtualhosts \ //跟http的virtualhost有异曲同工之妙.
--with-virtualroot \ //虚拟root支持
--with-diraliases \ //跟Serv-U上面的link功能一样.
--with-quotas \ // 使用quota.(非系统下的quota)
--with-sysquotas \ //允许使用操作系统的Quota(磁盘限额)
--with-ratios \ //上下传比率支持.
--with-ftpwho \ //使用pure-ftpwho命令查看线上用户.
--with-everything \ // 所有功能全上.(自己看着办吧)
--with-throttling' \ //频宽可设限.
install clean


安装完后,就会在/usr/local目录下生成一个pureftpd目录,我们要使用的文件都在这个目录中。

2.下面我们开始配置pure-ftpd.conf文件
在这里我全使用默认值,只修改下面内容以支持MYSQL。(注:Pureftpd可以同时支持ldap,mysql,pgsql,puredb认证)

# MySQL configuration file (see README.MySQL)
MySQLConfigFile /usr/local/pureftpd/etc/pureftpd-mysql.conf

3.配置文件详解(摘自网上陈景峰所著《Pure-FTPd + LDAP + MySQL + PGSQL + Virtual-Users + Quota How To》)
ChrootEveryone yes
chroot每一个用户,等同于Proftpd 中的DefaultRoot~ , 可以限制用户在某个地方活动,增强服务器的安全性。使用过wu-ftpd的使用都应该知道cd /会发生什么!
TrustedGID 50
#以上两者要一起用
BrokenClientsCompatibility no
MaxClientsNumber 50
#最大链接数
Daemonize yes
#Fork in background 以守护进程方式在后台运行
MaxClientsPerIP 5
#每个ip最多链接数,最好设小点。
VerboseLog no
#是否要把所有client端的指令都log下来
DisplayDotFiles no
#显示开头的文件
AnonymousOnly no
#是否只让匿名登录
NoAnonymous no
#不开放匿名登入
SyslogFacility ftp
#应该是对日志做一下过滤 (auth, authpriv, daemon, ftp, security, user, local*)可以让日志只记录想要的信息
DontResolve yes
#不反向解释客户端的ip
MaxIdleTime 5
#最大闲置時間
#LDAPConfigFile /usr/local/pureftpd/etc/pureftpd-ldap.conf
#使用LDAP认证,
MySQLConfigFile /usr/local/pureftpd/etc/pureftpd-mysql.conf
#使用MySQL认证
#PGSQLConfigFile /usr/local/pureftpd/etc/pureftpd-pgsql.conf
#使用PGSQL认证
#PureDB /ftp/etc/pureftpd.pdb
#使用者资料的DB存放地点 [由于我是用PureFTPD的內建DB.固有此选项]
#ExtAuth /var/run/ftpd.sock
#pure-authd socket 路径 (详细请看 README.Authentication-Modules)
#PAMAuthentication yes
#开启PAM认证
#UnixAuthentication yes
#如果你想要有简单的Unix(/etc/passwd)的认证的話
FortunesFile /usr/local/pureftpd/etc/.welcome
#显示的欢迎信息文件,你可以创建该文件,输入一些文字,然后你重启你的FTP服务,就会有意外的发现。
LimitRecursion 2000 8
#ls最多列出3000个文件.最深8层
AnonymousCanCreateDirs no
#匿名用户可以创建目录
MaxLoad 4
#当system load超过4時.使用者将不能再下载
PassivePortRange 30000 50000
#被动连接应答范围
ForcePassiveIP 192.168.0.1
#不会译:(
AnonymousRatio 1 10
#Anonymous连接上传/下载比率
UserRatio 1 10
#用户上传/下载比率(注:如果使用ldap,mysql,pgsql,pam不要启用该功能,否则你在ldap等中设置的Ratio无校)
AntiWarez no
#上传的文件不能被下载(owner is ftp).等到local admin确认
Bind 127.0.0.1,8021
#要绑定和ip/port,在你的系统中有两个FTP Server这样你其中一个FTP就要使用其它端口。
#格式-> 127.0.0.1,21 如果只写port表All ip,port
AnonymousBandwidth 8
#Anonymous 带宽,单位KB/s
UserBandwidth 8
#用户带宽,单位KB/s
Umask 133:022
#上传文件的Umask.(<umask for files>:<umask for dirs> )
MinUID 1000
# UID至少多少才能登录
AllowUserFXP yes
#支不支持FXP
AllowAnonymousFXP no
#Anonymous支不支持FXP
ProhibitDotFilesWrite no
ProhibitDotFilesRead no
#(”.”)开头的文件能不能被读/写,UNIX Like下以点开头的文件是隐藏文件ls –a才能列出
#Pureftpd Quota模式下做产生” .ftpquota”文件。
AutoRename no
#上传文件若有相同文件名自动改名(file.1,file.2...)
AnonymousCantUpload no
#匿名用户上传文件
TrustedIP 10.1.1.1
#锁IP.
LogPID
#Log文件添加PID
AltLog stats:/ftp/etc/log/pureftpd.log
#log存放地点,注日志有几种常用的格式
#clf 类似apache格式,stats UNIX log格式,w3c 标准W3C格式,可能是HTML格式
NoChmod yes
#不给Chmod指令的权限
KeepAllFiles no
#使用者可续传.但不可刪除文件
CreateHomeDir yes
#如果user的home不存在自动建立(我把这个设为YES)
Quota 1000:10
#Quota <文件数>:<容量Megabytes >,FTP限制10M空间,可以上传1000个文件(注:如果使用ldap,mysql,pgsql,pam不要启用该功能,否则你在ldap等中设置的Quota无校)
PIDFile /ftp/etc/log/pure-ftpd.pid
#记录pure-ftpd的PID文件
CallUploadScript yes
#呼叫UploadScript
MaxDiskUsage 99
#当硬盘使用率到多少時将停止上传
NoRename yes
#用户不能重命名文件名
CustomerProof yes
PerUserLimits 3:20
#<每个账号最多可登入几次:Anonymous最多可同時登入几次>

4. 创建Mysql数据库中的FTP虚拟用户管理数据库ftpusers
将以下内容存为script.mysql文件

INSERT INTO mysql.user (Host, User, Password, Select_priv, Insert_priv, Update
_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Proces
s_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv) VALUES
('127.0.0.1','ftp',PASSWORD('123456'),'Y','Y','Y','Y','N','N','N','N','N','N
','N','N','N','N');

FLUSH PRIVILEGES;

CREATE DATABASE ftpusers;

USE ftpusers;

CREATE TABLE admin (
Username varchar(35) NOT NULL default '',
Password char(32) binary NOT NULL default '',
PRIMARY KEY (Username)
) TYPE=MyISAM;

INSERT INTO admin VALUES ('Administrator',MD5('123456'));

CREATE TABLE users (
User char(16) NOT NULL default '',
Password char(32) binary NOT NULL default '',
Uid int(11) NOT NULL default '2000',
Gid int(11) NOT NULL default '2000',
Dir char(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',
status enum('0','1') NOT NULL default '1',
ipaccess varchar(15) NOT NULL default '*',
comment tinytext NOT NULL,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;

INSERT INTO `users` VALUES ('kevin',MD5('123456'),1001,2000,'/home/kevin',500,30,
80,5);

先在Mysql数据库建立一个对数据库有操作权限的用户ftp,密码为123456。
再创建新数据库ftpusers,并新建两个表admin和users,往admin表中加入管理用户帐号,往users表中加入新的FTP用户kevin,密码为123456。

然后我们运行以下命令来生成数据库ftpusers。

# mysql -u root -ppassword < script.mysql
注意,-p是输入密码,它和后面你输入的password中没有空格。

5.修改/usr/local/pureftpd/etc/pureftpd-mysql.conf配置文件
内容如下所示:

MYSQLServer 127.0.0.1
#MYSQL服务器的IP
MYSQLPort 3306
#MYSQL 端口号
MYSQLSocket /var/lib/mysql/mysql.sock
#使用UNIX.sock本地连接
注:MYSQLServer 与 MYSQLSocket 选择一种即可

MYSQLUser ftp
#MYSQLUser 数据用户名
MYSQLPassword 123456
#MYSQL数据库用户的密码
MYSQLDatabase ftpusers
#FTP数据数据库
MYSQLCrypt md5
#密码加密方式"cleartext", "crypt", "md5" and "password"
# cleartext 明文,crypt,md5,password是Backend password(‘your-passwd')函数(MYSQL数据库所使用的password()函数)
MYSQLGetPW SELECT Password FROM users WHERE User="\L"
# 密码字段,我使用users表中的Password做为密码字段
MYSQLGetUID SELECT Uid FROM users WHERE User="\L"
#UID用户ID字段
MYSQLDefaultUID 1000
#默认的UID (注:如何开启该选项,MYSQLGetUID将失去作用)
MYSQLGetGID SELECT Gid FROM users WHERE User="\L"
#GID组ID字段
MYSQLDefaultGID 1000
#默认的GID (注:如何开启该选项,MYSQLGetGID将失去作用)
MYSQLGetDir SELECT Dir FROM users WHERE User="\L"
#FTP用户目录如/home/web/www-9812-net
MySQLGetQTAFS SELECT QuotaFiles FROM users WHERE User="\L"
#磁盘限额,文件数限制。如1000,允许用户上传1千个文件
MySQLGetQTASZ SELECT QuotaSize FROM users WHERE User="\L"
#磁盘限额,FTP用户空间限制(单位为M),如:100M
MySQLGetRatioUL SELECT ULRatio FROM users WHERE User="\L"
MySQLGetRatioDL SELECT DLRatio FROM users WHERE User="\L"
#上传/下载比率。MySQLGetRatioUL为上传比,MySQLGetRatioDL下载比。如:1:5
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L"
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L"
#下传/下载带宽(单位KB/s)。MySQLGetBandwidthUL上传带宽,MySQLGetBandwidthDL下载带宽。如上传500KB/s,下载50KB/s
MySQLForceTildeExpansion 1
MySQLTransactions On
#不会翻译


修改好该配置文件后,我们继续。

6.运行PureFTPd
为了实现匿名登录,需要在系统中加一个ftp用户。

有了ftp.理所当然得也要有账号才行.
#vipw
ftp:*:2000:2000::0:0:ftp:/home/ftp:
/sbin/nologin
#vi /etc/group
ftpusers:*:2000:

操作完后我们就添加一个ftp帐号属于ftpusers组,用户id和组id都是2000

启动PureFTPd
# /usr/local/pureftpd/bin/pure-config.pl ../etc/pure-ftpd.conf

为了以后方便的进行Ftp服务的管理,我自己在/usr/local/etc/rc.d中新建了一个pureftpd.sh文件。

# vi pureftpd.sh

#!/bin/sh

case "$1" in
start)
[ -x /usr/local/pureftpd/etc/pure-ftpd.conf ] && \
/usr/local/pureftpd/bin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.c
onf > /dev/null && \
echo -n ' pure-ftp'


stop)
killall pure-ftpd > /dev/null && \
echo -n ' pure-ftp'


*)
echo "Usage: `basename $0` {start | stop}" >&2

esac

exit 0

设置该文件的可执行权限

# chmod u+x pureftpd.sh

以后可以用下列命令启动PureFTPd服务

# /usr/local/etc/rc.d/pureftpd.sh start

用下列命令停止PureFTPd服务

# /usr/local/etc/rc.d/pureftpd.sh stop

测试FTP是否正常了。
# ftp 你的IP
Connected to 127.0.0.1.
220---------- 欢迎来到 Pure-FTPd ----------
220-您是第1个使用者,最多可达50个连接
220-现在是本地时间 09:02。服务器端口: 21。
220 在15分钟内没有活动,您将被断线。
Name (127.0.0.1:kevin):kevin
Password:
230-使用者kevin 有以下组的权限: ftpusers
230-这个服务器支持FXP传输
230-OK. 目前限制的目录是 /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

恭喜你,你的FTP服务已经正常工作了。

三、 使用PHP_Manager进行用户管理

下载最新的PHP_Manager软件

# tar zxvf ftp_v1.3.1.tar.gz
# mv ftp_v1.3.1 /www/path/data/ftp
# cd /www/path/data/ftp
# vi config.php
修改config.php配置文件

$LANG = $ZH_CN; //你的PHP_Manager所用的语言
$DBHost = “localhost”; //你的Mysql服务器的Host
$DBLogin = “ftp”; //登录数据库的用户
$DBPassword = “123456”; //登录数据库的用户密码
$DBDatabase = “ftpusers”; //实现虚拟用户管理的数据库的名字
$FTPAddress = “61.132.35.21:21”; //你的FTP服务的IP地址和端口号

然后使用网页方式登录管理。

http://你的服务器域名/ftp

管理员是administrator,密码是123456,这在前面建数据库的时候可以修改的。
进入之后全是中文,不要我多写了吧。
祝大家快乐!

我已经把PHP_Manager修改为支持中文的了,现传上来给大家用。

http://www.linuxsir.org/bbs/attachment.php?s=&postid=578136

有关其他系统下的安装方法,可以参照陈景峰所著《Pure-FTPd + LDAP + MySQL + PGSQL + Virtual-Users + Quota How To》

    您感兴趣的教程

    在docker中安装mysql详解

    本篇文章主要介绍了在docker中安装mysql详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编...

    详解 安装 docker mysql

    win10中文输入法仅在桌面显示怎么办?

    win10中文输入法仅在桌面显示怎么办?

    win10系统使用搜狗,QQ输入法只有在显示桌面的时候才出来,在使用其他程序输入框里面却只能输入字母数字,win10中...

    win10 中文输入法

    一分钟掌握linux系统目录结构

    这篇文章主要介绍了linux系统目录结构,通过结构图和多张表格了解linux系统目录结构,感兴趣的小伙伴们可以参考一...

    结构 目录 系统 linux

    PHP程序员玩转Linux系列 Linux和Windows安装

    这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,Linux和Windows安装nginx教程,具有一定的参考价值,感兴趣...

    玩转 程序员 安装 系列 PHP

    win10怎么安装杜比音效Doby V4.1 win10安装杜

    第四代杜比®家庭影院®技术包含了一整套协同工作的技术,让PC 发出清晰的环绕声同时第四代杜比家庭影院技术...

    win10杜比音效

    纯CSS实现iOS风格打开关闭选择框功能

    这篇文章主要介绍了纯CSS实现iOS风格打开关闭选择框,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作...

    css ios c

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的办法

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的

    Win7给电脑C盘扩容的办法大家知道吗?当系统分区C盘空间不足时,就需要给它扩容了,如果不管,C盘没有足够的空间...

    Win7 C盘 扩容

    百度推广竞品词的投放策略

    SEM是基于关键词搜索的营销活动。作为推广人员,我们所做的工作,就是打理成千上万的关键词,关注它们的质量度...

    百度推广 竞品词

    Visual Studio Code(vscode) git的使用教程

    这篇文章主要介绍了详解Visual Studio Code(vscode) git的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。...

    教程 Studio Visual Code git

    七牛云储存创始人分享七牛的创立故事与

    这篇文章主要介绍了七牛云储存创始人分享七牛的创立故事与对Go语言的应用,七牛选用Go语言这门新兴的编程语言进行...

    七牛 Go语言

    Win10预览版Mobile 10547即将发布 9月19日上午

    微软副总裁Gabriel Aul的Twitter透露了 Win10 Mobile预览版10536即将发布,他表示该版本已进入内部慢速版阶段,发布时间目...

    Win10 预览版

    HTML标签meta总结,HTML5 head meta 属性整理

    移动前端开发中添加一些webkit专属的HTML5头部标签,帮助浏览器更好解析HTML代码,更好地将移动web前端页面表现出来...

    移动端html5模拟长按事件的实现方法

    这篇文章主要介绍了移动端html5模拟长按事件的实现方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家...

    移动端 html5 长按

    HTML常用meta大全(推荐)

    这篇文章主要介绍了HTML常用meta大全(推荐),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参...

    cdr怎么把图片转换成位图? cdr图片转换为位图的教程

    cdr怎么把图片转换成位图? cdr图片转换为

    cdr怎么把图片转换成位图?cdr中插入的图片想要转换成位图,该怎么转换呢?下面我们就来看看cdr图片转换为位图的...

    cdr 图片 位图

    win10系统怎么录屏?win10系统自带录屏详细教程

    win10系统怎么录屏?win10系统自带录屏详细

    当我们是使用win10系统的时候,想要录制电脑上的画面,这时候有人会想到下个第三方软件,其实可以用电脑上的自带...

    win10 系统自带录屏 详细教程

    + 更多教程 +
    WIN服务器linux服务器FTP服务器DNS服务器其他