打印本文 打印本文 关闭窗口 关闭窗口
proftpd + mysql + quota配置完全指南(收藏)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2104  更新时间:2009/4/22 20:56:38  文章录入:mintao  责任编辑:mintao
T NULL,
files_in_avail INT UNSIGNED NOT NULL,
files_out_avail INT UNSIGNED NOT NULL,
files_xfer_avail INT UNSIGNED NOT NULL
);

CREATE TABLE quotatallies (
name VARCHAR(30) NOT NULL,
quota_type ENUM("user", "group", "class", "all") NOT NULL,
bytes_in_used FLOAT NOT NULL,
bytes_out_used FLOAT NOT NULL,
bytes_xfer_used FLOAT NOT NULL,
files_in_used INT UNSIGNED NOT NULL,
files_out_used INT UNSIGNED NOT NULL,
files_xfer_used INT UNSIGNED NOT NULL
);

 

以上quotalimits表是FTP用户的磁盘限额配置信息,quotatallies表存放的是用户磁盘限额变动的信息。

quotatallies表不需要作修改,由程序自动记录

下面是quotalimits 表中各字段的含意:

quota_type 磁盘限额的鉴别
bytes_in_avail 上传最大字节数,就是FTP用户空间容量
bytes_out_avail 下载最大字节数
bytes_xfer_avail 总共可传输的文件的最大字节数(上传和下载流量)
files_in_avail 总共能上传文件的数目
files_out_avail 能从服务器上下载文件的总数目
files_xfer_avail  总共可传输文件的数目(上传和下载)

7       数据表数据初始化

表全部建完后,就可以创建FTP用户了,在ftpUser表中插入一条记录如下:

INSERT INTO ftpUser (userid, passwd, uid, gid, homedir, shell) values (''''shine'''', password(‘yourpassword’), ''''2003'''', ''''2003'''', ''''/home/shine'''', '''''''' );

以上建立了一个新的FTP用户,用户名为shine,密码为yourpassword,可以看到密码用mysql的系统函数password进行了加密,用户id和组id均为2003,这里随便填,我填了和系统用户ftpUser和系统组ftpGroup相同的id,不知道会不会有问题。/home/shine为用户主目录,用户shell为空。

如果要想应用到更多的功能,且建立了组的数据表,你也要为此添加记录,不过一定要注意在members的字段多个成员一定要用逗号隔开。

INSERT INTO ftpGroup VALUES (''''ftpGroup'''', 2003, ''''ftpUser'''');

下面再来建立初始的用户磁盘限额信息:

将已经建立的shine帐号赋予50M空间,最多能上传500个文件,文件传输流量为512k,总共只能传输2000个文件,插入记录如下:

INSERT INTO quotalimits (name,quota_type,per_session,limit_type,bytes_in_avail,bytes_out_avail,bytes_xfer_avail,files_in_avail,files_out_avail,files_xfer_avail)VALUES (‘shine’, ‘user’, ‘true’, ‘soft’, ‘51200000’, ‘0’,’512000’,‘500’,’0’,’2000’);

8       运行proftpd

执行以下命令启动proftpd服务:

/usr/local/proftpd/sbin/proftpd

开一个控制台输入:

ftp ftpHostName

输入用户名:shine

输入用户密码:yourpassword

成功登录后执行:

quote site quota

可以看到此用户的磁盘使用情况。

9       配置proftpd执行脚本

cd /usr/local/proftpd/bin

vi proftpd

输入以下内容:

#!/bin/sh

 

# ProFTPD files

FTPD_BIN=/usr/local/proftpd/sbin/proftpd

FTPD_CONF=/usr/local/proftpd/etc/proftpd.conf

PIDFILE=/usr/local/proftpd/var/proftpd.pid

# If PIDFILE exists, does it point to a proftpd process?

if [ -f $PIDFILE ]; then

        pid=`cat $PIDFILE`

fi

if [ ! -x $FTPD_BIN ]; then

        echo "$0: $FTPD_BIN: cannot execute"

        exit 1

fi

case $1 in

        start)

        if [ -n "$pid" ]; then

                echo "$0: proftpd [PID $pid] already running"

                exit

        fi

        if [ -r $FTPD_CONF ]; then

                echo "Starting proftpd..."

                $FTPD_BIN -c $FTPD_CONF

        else

                echo "$0: cannot start proftpd -- $FTPD_CONF missing"

        fi

        ;;

        stop)

        if [ -n "$pid" ]; then

                echo "Stopping proftpd..."

                kill -TERM $pid

        else

                echo "$0: proftpd not running"

                exit 1

        fi

        ;;

        restart)

        if [ -n "$pid" ]; then

                echo "Rehashing proftpd configuration"

                kill -HUP $pid

        else

                echo "$0: proftpd not running"

                exit 1

        fi

        ;;

        *)

        echo "usage: $0 {start|stop|restart}"

        exit 1

        ;;

esac

exit 0

存盘退出。

chmod +x proftpd

修改此脚本为可执行。

ln –s ./proftpd /etc/rc.d/init.d/proftpd

在/etc/rc.d/init.d/目录中做一个软链接指向proftpd脚本文件。

 

cd /etc/rc.d/rc0.d

ln –s ../init.d/proftpd ./K15proftpd

cd ../rc1.d

ln –s ./init.d/proftpd /K15proftpd

cd ../rc2.d

ln –s ./init.d/proftpd /K15proftpd

cd ../rc3.d

ln –s ./init.d/proftpd /S91proftpd    #注意S后面的数字,如果在此目录中存在mysql相关的链接文件,请保证这个数字比那个文件中S后面的数字大!这样proftpd将在mysql数据库服务启动以后再启动,这是个良好的启动顺序,当然不用管它也没什么问题。

cd ../rc4.d

ln –s ./init.d/proftpd /S91proftpd

cd ../rc5.d

ln –s ./init.d/proftpd /S91proftpd

cd ../rc6.d

ln –s ./init.d/proftpd /K15proftpd

 

经过以上设置,每次系统开机时proftpd服务将会自动启动,关机时则会自动停止。

当然,也不必在每个rc目录中都加上链接,实际上只需要在执行启动任务的rc目录中加上就行了,比如rc3.d,rc4.d,rc5.d,其中rc4.d也不是必需的,而rc3.d是在系统进入运行级三时自动运行的,无论如何这里要有proftpd的链接,运行级三是系统正常启动的级别,而运行级四则是预留的用户自定义的运行级,所以可不管它,运行级5是启动X-Window的,但一般情况下是先进入运行级三,然后才是运行级五,所以也不用在rc5.d目录中建立proftpd的链接,而运行级六是系统重启,就不用说了。

一句题外话:

    想切换系统运行级可执行:init number,number是代表运行级的数字,举个例子:

init 5等同于startx

init 6等同于reboot

其它运行级就不在这里一一介绍了,有兴趣的朋友可自行查阅相关资料。

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口