php爱好者
RSS 图标 Email 图标 首页图标
  • proftpd1.3.2稳定版linux64位系统安装

    发表于 2009年05月20日 admin 没有评论

    wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.2.tar.gz
    tar xvfz proftpd-1.3.2.tar.gz

    ./configure \
    –prefix=/usr/local/proftpd \
    –with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql \
    –with-includes=/data1/mysql/include/mysql/ \
    –with-libraries=/data1/mysql/lib/mysql/

    make
    make instll

    然后用一下命令看一下
    /usr/local/proftpd/sbin/proftpd -l
    如果配置正确,会出现以下四个模块,否则请重新编译安装
    mod_sql.c
    mod_sql_mysql.c
    mod_quotatab.c
    mod_quotatab_sql.c
    修改/usr/local/proftpd/etc/proftpd.conf文件,增加

    DefaultRoot ~
    AllowRetrieveRestart  on
    AllowStoreRestart  on 
    ServerIdent   off 

     

    #——– load sql.mod for mysql authoritative ——–#

    SQLConnectInfo ftpdb@localhost proftpd  netdot123
    #注:上面这行是MySQL连接服务器部份,自己根据情况来改一改;
    SQLAuthTypes Plaintext
    SQLUserInfo ftpusers userid passwd uid gid homedir shell
    SQLGroupInfo ftpgroups groupname gid members
    SQLAuthenticate users groups
    SQLNegativeCache on
    SQLLogFile /var/log/proftpd.sql.log

    SQLNamedQuery getcount SELECT “count from ftpusers where userid=’%u’”
    SQLNamedQuery getlastlogin SELECT “lastlogin from ftpusers where userid=’%u’”

    SQLNamedQuery updatelogininfo UPDATE “count=count+1,host=’%h’,lastlogin=current_timestamp() WHERE userid=’%u’” ftpusers

    SQLShowInfo PASS “230″ “You’ve logged on %{getcount} times, last login at %{getlastlogin}”                                             
    SQLLog PASS updatelogininfo

    #——– load sql.mod for mysql authoritative ——–#

    #——— load qudes.mod for Quota limit ——–#

    #打开磁盘限额引擎
    QuotaEngine on
    # 设置磁盘限额
    QuotaDirectoryTally on
    # 设置磁盘容量显示时的单位
    QuotaDisplayUnits Mb
    # 允许显示磁盘限额信息,ftp登录后可执行quote site quota命令查看当前磁盘使用情况
    QuotaShowQuotas on
    # 设置磁盘限额日志文件
    QuotaLog “/var/log/proftpd.quota.log”

    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

    #——— load qudes.mod for Quota limit ——–#

    同时,建立数据表:

    CREATE TABLE `ftpusers` (
      `userid` varchar(30) NOT NULL DEFAULT ”,
      `passwd` varchar(80) NOT NULL DEFAULT ”,
      `uid` int(10) unsigned NOT NULL DEFAULT ‘1000′,
      `gid` int(10) unsigned NOT NULL DEFAULT ‘1000′,
      `homedir` varchar(255) NOT NULL DEFAULT ”,
      `shell` varchar(255) NOT NULL DEFAULT ‘/sbin/nologin’,
      `count` int(10) unsigned NOT NULL DEFAULT ‘0′,
      `host` varchar(30) NOT NULL DEFAULT ”,
      `lastlogin` varchar(30) NOT NULL DEFAULT ”,
      `id` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`id`),
      UNIQUE KEY `userid` (`userid`)
    ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1

    CREATE TABLE `ftpgroups` (
      `groupname` varchar(30) NOT NULL DEFAULT ”,
      `gid` int(11) NOT NULL DEFAULT ‘1000′,
      `members` varchar(255) NOT NULL DEFAULT ”,
      `id` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1

    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(6) unsigned NOT NULL DEFAULT ‘0′,
      `files_out_avail` int(6) unsigned NOT NULL DEFAULT ‘0′,
      `files_xfer_avail` int(6) unsigned NOT NULL DEFAULT ‘0′,
      `id` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1

    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(6) unsigned NOT NULL DEFAULT ‘0′,
      `files_out_used` int(6) unsigned NOT NULL DEFAULT ‘0′,
      `files_xfer_used` int(6) unsigned NOT NULL DEFAULT ‘0′
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1

    发表评论