当前位置:操作系统 > Unix/Linux >>

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

一。准备工做

  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 TA
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,