转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> MySql >> 正文
proftpd+mysql+quota         ★★★★

proftpd+mysql+quota

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1445 更新时间:2009/4/22 20:49:02
下载软件
proftpd-1.2.9.tar.gz
proftpd-mod-quotatab-1.2.11.tar.gz

注:proftpd-1.2.10版本后就不需要proftpd-modquotatab了


步骤如下:
代码: ¢
vi /etc/ld.so.conf
添加:/usr/local/mysql/lib

tar zvxf proftpd-1.2.9.tar.gz
tar zvxf proftpd-mod-quotatab-1.2.11.tar.gz
cp mod_quotatab/*.c proftpd-1.2.9/contrib/
cp mod_quotatab/*.h proftpd-1.2.9/contrib/
vi proftpd-1.2.9/contrib/mod_sql_mysql.c
#include</usr/local/mysql/include/mysql/mysql.h>
修改mysql.h的实际路径
cd proftpd-1.2.9
./configure \--prefix=/usr/local/proftpd \--with-modules=mod_sql:mod_sql_mysql:mod_quotatab\:mod_quotatab_sql:mod_ratio \--with-includes=/usr/local/mysql/include \--with-libraries=/usr/local/mysql/lib
make
make install
cp proftpd-1.2.9/contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd
vi /etc/rc.d/init.d/proftpd
修改:PATH="$PATH:/usr/local/proftpd/sbin"
chmod 755 /etc/rc.d/init.d/proftpd
chkconfig --level 3 proftpd on
groupadd -g 5500 ftpgroup
adduser -u 5500 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
然后配置你的Proftpd.conf
最后就是启动啦。/usr/local/proftpd/sbin/proftpd


-------------------------------Proftpd.conf----------------------------------
代码:
# This is a basic ProFTPD configuration file (rename it to
# ''''proftpd.conf'''' for actual use.  It establishes a single server
# and a single anonymous login.  It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.

ServerName         "ltsnet"
ServerType         standalone
DefaultServer         on

# Port 21 is the standard FTP port.
Port            21

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask            022

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances         30

# Set the user and group under which the server will run.
User            nobody
Group            nobody

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
ServerIdent off
DisplayLogin welcome.msg
DefaultRoot ~
# Normally, we want files to be overwriteable.
<Directory />
  AllowOverwrite      on
</Directory>

# A basic anonymous configuration, no upload directories.  If you do not
# want anonymous users, simply delete this entire <Anonymous> section.
<Anonymous /home/ftp>
  User            ftp
  Group            ftp

  # We want clients to be able to login with "anonymous" as well as "ftp"
  UserAlias         anonymous ftp

  # Limit the maximum number of anonymous logins
  MaxClients         10

  # We want ''''welcome.msg'''' displayed at login, and ''''.message'''' displayed
  # in each newly chdired directory.
  DisplayLogin         welcome.msg
  DisplayFirstChdir      .message

  # Limit WRITE everywhere in the anonymous chroot
  <Limit WRITE>
    DenyAll
  </Limit>
</Anonymous>

SQLAuthTypes Backend Plaintext
SQLAuthenticate users* groups*

SQLConnectInfo ftpdb@localhost root 123456
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLGroupInfo ftpgroup groupname gid members
SQLHomedirOnDemand on
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1,accessed=now() WHERE userid=''''%u''''" ftpuser
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid=''''%u''''" ftpuser

QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
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


建ftpdb库,在phpMyAdmin中导入ftpdb.sql就ok。
--------------------------------------ftpdb.sql---------------------------------
代码:
# 表的结构 `ftpgroup`
#

CREATE TABLE `ftpgroup` (
  `groupname` varchar(16) NOT NULL default '''''''',
  `gid` smallint(6) NOT NULL default ''''5500'''',
  `members` varchar(16) NOT NULL default '''''''',
  KEY `groupname` (`groupname`)
) TYPE=MyISAM COMMENT=''''ProFTP group table'''';

#
# 导出表中的数据 `ftpgroup`
#

INSERT INTO `ftpgroup` VALUES (''''ftpgroup'''', 5500, ''''ftpuser'''');

# --------------------------------------------------------

#
# 表的结构 `ftpquotalimits`
#

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;

#
# 导出表中的数据 `ftpquotalimits`
#

INSERT INTO `ftpquotalimits` VALUES (''''test'''', ''''user'''', ''''true'''', ''''hard'''', ''''9e+06'''', ''''2000'''', ''''9e+09'''', 2000, 2000, 2000);

# --------------------------------------------------------

#
# 表的结构 `ftpquotatallies`
#

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;

#
# 导出表中的数据 `ftpquotatallies`
#

INSERT INTO `ftpquotatallies` VALUES (''''test'''', ''''user'''', ''''2000'''', ''''2000'''', ''''2000'''', 2000, 2000, 2000);

# --------------------------------------------------------

#
# 表的结构 `ftpuser`
#

CREATE TABLE `ftpuser` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `userid` varchar(32) NOT NULL default '''''''',
  `passwd` varchar(32) NOT NULL default '''''''',
  `uid` smallint(6) NOT NULL default ''''5500'''',
  `gid` smallint(6) NOT NULL default ''''5500'''',
  `homedir` varchar(255) NOT NULL default '''''''',
  `shell` varchar(16) NOT NULL default ''''/sbin/nologin'''',
  `count` int(11) NOT NULL default ''''0'''',
  `accessed` datetime NOT NULL default ''''0000-00-00 00:00:00'''',
  `modified` datetime NOT NULL default ''''0000-00-00 00:00:00'''',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM COMMENT=''''ProFTP user table'''' AUTO_INCREMENT=3 ;

#
# 导出表中的数据 `ftpuser`
#

INSERT INTO `ftpuser` VALUES (1, ''''test'''', ''''123456'''', 5500, 5500, ''''/home/test'''', ''''/sbin/nologin'''', 36, ''''2004-09-28 13:07:41'''', ''''2004-09-28 13:07:42'''');



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: -

[1] [2]  下一页


[MySql]PHP存取 Mysql 数据乱码终极解决方案  [MySql]解决Table xxx is marked as crashed and should …
[MySql][MySQL]快速解决"is marked as crashed and shoul…  [MySql]MySQL DELETE语法用法详解
[MySql]mysql中时间日期格式化  [MySql]修改mysql导入文件大小限制
[其他]MySql常用命令大全  [Web开发]把ACCESS的数据导入到Mysql中的方法详解
[MySql]解决mysql 1040错误Too many connections的方法  [系统软件]利用crontab系统每天定时备份MySQL数据库
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台