原来做过一个

Prpftpd+Mysql在centos4下的配置
地址
http://www.6xuan.com/read.php/23.htm

但是 不是很完善!今天重新写了!~
嘿嘿!----------------------------------------AIYONETWORK_Tinkoko
centos5.1

proftpd1.3.1.tar.bz2(自带mod_sql和mod_quota不用额外下载)

增加mysql认证,增加quota

分三步
1。配置proftpd让他支持系统帐户和匿名帐户
2。增加mysql认证功能
3。增加quota限制功能



首先安装proftpd-1.3.1

我的LAMP环境都是系统自带的!没有编译!
所以里面有些地方可能会有些出处!
安装
./configure --prefix=/usr/local/proftpd -with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql:mod_ratio --with-includes=/usr/include/mysql --with-libraries=/usr/lib/mysql/

make && make install

------------------------------------------------------------------------------------------------------
ps:如果这个时候出错!什么erroe.1或者2 或者mod-sql_mysql出错!建议安装zlib,另外察看mysql的安装路径!如果是tar包安装的mysql,那么
vi /etc/ld.so.conf

添加下面一行:
/usr/local/mysql/lib/mysql

然后使用

ldconfig

生效!

vi mod_sql_mysql.c

找到#include 这一行,将mysql.h改成你的系统中此文件所在的路径,如

incldue </usr/local/mysql/include/mysql/mysql.h>

---------------------------------------------------------------------------------
==================================
第一部:


安装好了后
启动/usr/local/proftp/sbin/proftpd

如果出现nogroup找不到

别着急
接下来

先建立FTPGRP组:
groupadd –g 1000 –r ftpgrp
建立FTPUSER用户:
adduser –u 1000 –g 1000 –d /wwwroot –s /bin/bash –r ftpuser (我准备让所有ftp目录在/wwwroot,个人根据自己的配置)
mkdie /wwwroot

chown ftpuser:ftpgrp /wwwroot

然后
[root@mail wwwroot]# vi /usr/local/proftpd/etc/proftpd.conf

修改
Group ftpgrp

然后再重新启动!
此时系统帐户和匿名帐户可以登陆了!
别忘记防火墙打开相应端口!~~


================================================================
============================================
第二步
增加mysql认证


vi /usr/local/proftpd/etc/proftpd.conf

最下面添加
SQLConnectInfo
ftp@localhost:21 root pwssword
上面是用户信息保存在ftp数据库,和ftp数据库有效的用户和密码访问

SQLAuthTypes Backend Plaintext
上面是认证
SQLUserInfo ftpuser userid passwd uid gid home shell
上面是ftp数据库的ftp用户表,以及里面的字段名成
SQLGroupInfo ftpgrp groupname gid members
上面是数据库中ftp组名以及字段名成

RequireValidShell off

SQLAuthenticate users groups usersetfast groupsetfast

SQLHomedirOnDemand on
上面是主动建立用户目录

然后保存退出!
接下来就是进入数据库了!创建ftp数据库,以及ftpuser和ftpgrp这两个表!

create databases ftp;
use FTP;

创建ftpuser这个表
create table ftpuser (
userid TEXT NOT NULL,
passwd TEXT NOT NULL,
uid INT NOT NULL,
gid INT NOT NULL,
home TEXT,
shell TEXT
);

创建ftp组

CREATE TABLE ftpgrp (
groupname varchar(255) binary NOT NULL default '',
gid int(11) NOT NULL default '0',
members text NOT NULL,
PRIMARY KEY (groupname);

然后向里面插入数据

INSERT INTO ftpuser (userid, passwd, uid, gid, home, shell)
VALUES (‘user1’, ‘123456’, ‘1000’, ‘1000’, ‘/wwwroot/user1’, ‘’);

INSERT INTO ftpgrp VALUES ('ftpgroup', '1000', 'ftpuser');

然后你可以重新启动proftp,用user1去登陆!它会在/wwwroot下自动创建自己的目录!


======================================================
=====================================================
第三步:

下面增加quota配额

修改下proftpd.conf

最下面增加

QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Kb
QuotaShowQuotas on
QuotaLog "/var/log/quota"

SQLNamedQuery get-quota-limit SELECT "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 FROM ftpquotalimits WHERE name = '%{0}'AND quota_type = '%{1}'"
SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used+ %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatallies


SQLNamedQuery insert-quota-tally INSERT "%{0},%{1},%{2},%{3},%{4},%{5},%{6},%{7}" ftpquotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally


然后继续增加mysql两个表
一个ftpquotalimits

一个ftpquotatallies



CREATE TABLE `ftpquotalimits` (
`name` varchar(30) default NULL,
`quota_type` enum('user','group','class','all') NOT NULL default 'user',
`per_session` enum('false','true') NOT NULL default 'false',
`limit_type` enum('soft','hard') NOT NULL default 'soft',
`bytes_in_avail` float NOT NULL default '0',
`bytes_out_avail` float NOT NULL default '0',
`bytes_xfer_avail` float NOT NULL default '0',
`files_in_avail` int(10) unsigned NOT NULL default '0',
`files_out_avail` int(10) unsigned NOT NULL default '0',
`files_xfer_avail` int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;




CREATE TABLE `ftpquotatallies` (
`name` varchar(30) NOT NULL default '',
`quota_type` enum('user','group','class','all') NOT NULL default 'user',
`bytes_in_used` float NOT NULL default '0',
`bytes_out_used` float NOT NULL default '0',
`bytes_xfer_used` float NOT NULL default '0',
`files_in_used` int(10) unsigned NOT NULL default '0',
`files_out_used` int(10) unsigned NOT NULL default '0',
`files_xfer_used` int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;



然后向里面插入数据:
只要往ftpquotalimits这个表中插入就好了!另外一个是自动记录!~~~~~~~~~~~`

insert into ftpquotalimits (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('test1','user','true','hard','1048576','1048576','1048576','100','100','100');

然后就可以针对这个用户使用quota功能了!

只要要限制多少!随你自己了!

另外转一个关于quotalimits表的说明

name: - 用户帐号
quota type: - user, group, class, all (we use user)
per_session: - true or false (we use true)
limit_type: - 硬限制 or 软限制 (我们一般用硬限制)
bytes_in_avail: - 允许上传的字节数
bytes_out_avail: - 允许下载的字节数
bytes_xfer_avail: - 允许传输的字节数(包括上传/下载)
files_in_avail: - 允许上传的文件数
files_out_avail: - 允许下载的文件数
files_xfer_avail: - 允许传输的文件数(包括上传/下载)


========================================================
==================================================

好了,差不多ok了!


祝好运

技术资料 » linux相关 | 评论(0) | 引用(0) | 阅读(1241)
 
发表评论
   
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写