栏目列表
 
 
首页 > 操作系统 > Linux > 我的proftpd mysql quota @ debian 安装流水笔记
 

我的proftpd mysql quota @ debian 安装流水笔记

日期:2006-06-12 00:24:40  来源:网络转载
请您记住思索网的网址: http://www.4so.net  [加入收藏夹]


    
一。准备工做
1。你的机器上已调试好了apache php mysql环境
2。下载PROFTPD
wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.10rc3.tar.bz2
因为发现1.2.10直接支持sql和quota
二。安装
tar -jxvf proftpd-1.2.10rc3.tar.bz2
cd proftpd*
引用:

./configure --prefix=/usr/local/proftpd // --with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql // --with-includes=/usr/local/mysql/include/mysql // --with-libraries=/usr/local/mysql/lib/mysql
make&&make install
修改proftpd配置
vim /usr/local/proftpd/etc/proftpd.conf
内容改为:
ServerName /"mail2004.3322.org/"
ServerType standalone
DefaultServer on
# 用户登陆时不显示ftp服务器版本信息
ServerIdent off
# 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
MaxLoginAttempts 3
TimeoutLogin 120
TimeoutIdle 600
TimeoutNoTransfer 900
TimeoutStalled 3600
MaxClients 100
# 设置每台主机最多并发连接数
MaxClientsPerHost 3
AllowOverwrite no
AllowStoreRestart on
UseReverseDNS off
# 设置如果shell为空时允许用户登录
RequireValidShell off
# 将用户限制在自己的主目录下
DefaultRoot "
# 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
# Normally, we want files to be overwriteable.
<Directory />
AllowOverwrite on
</Directory>
# A basic anonymous configuration, no upload directories.
# 匿名登录设置。匿名用户目录为/ftp
<Anonymous /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>
以上是PROFTPD.conf

下面加入sql和quota
# 数据库联接的信息,proftpdb是数据库名,localhost是主机名,proftpd是连接数据库的用户名,
#proftpdb是密码
#(如果没有密码留空)
SQLConnectInfo proftpdb@localhost proftp proftpdb
# 数据库认证的类型
SQLAuthTypes Backend Plaintext
# 数据库的鉴别
SQLAuthenticate users* groups*
# 指定用来做用户认证的表的有关信息。
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLGroupInfo ftpgroup groupname gid members
# 如果home目录不存在,则系统会根据它的home项新建一个目录
SQLHomedirOnDemand on
这是目录所有者,我觉得这个很重要。所以我用nobody来做,在此我的nobody为99.
SQLDefaultGID 99
SQLDefaultUID 99

SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE /"count=count 1,accessed=now() WHERE userid=/'%u/'/" ftpuser
# Update modified everytime user uploads or deletes a file
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE /"modified=now() WHERE userid=/'%u/'/" ftpuser

# 启用磁盘限额
QuotaDirectoryTally on
# 磁盘限额单位 b/"|/"Kb/"|/"Mb/"|/"Gb/"
QuotaDisplayUnits /"Kb/"
QuotaEngine on
# 磁盘限额日志记录
QuotaLog /"/var/log/quota.log/"
# 打开磁盘限额信息,当登陆FTP帐户后,使用命令 /"quote SITE QUOTA/" 后可显示当前用#户的磁盘限额
QuotaShowQuotas on
以下为sql语句:
SQLNamedQuery get-quota-limit SELECT /"name, quota_type, per_session, limit_type, bytes_in_avail,bytes_out_ava
il, 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

下面可以用phpmyadmin在mysql里加入,我的sql为以下
CREATE TABLE `ftpgroup` (
`groupname` varchar(16) NOT NULL default /'/',
`gid` smallint(6) NOT NULL default /'99/',
`members` varchar(16) NOT NULL default /'/',
KEY `groupname` (`groupname`)
) TYPE=MyISAM COMMENT=/'ProFTP group table/';



INSERT INTO `ftpgroup` VALUES (/'nobody/', 99, /'nobody/');



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;



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 /'99/',
`gid` smallint(6) NOT NULL default /'99/',
`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/' ;


启动proftpd
/usr/local/proftpd/sbin/proftpd start
在数据数中的ftpuser中加入用户,密码他路径就可以了。
以上只是一个流水笔记

 
 
热门信息
 
相关文章