• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • proftpd+mysql+quota[2004精華版]

    發表于:2007-05-25來源:作者:點擊數: 標簽:
    發現網上很多兄弟都在為安裝proftpd+mysql+quota的種種問題苦惱。 我就整理一下我的安裝過程,當然也不是原創了。也提供了相關軟件包永久下載 ,mysql/php/apache安裝就免了。我的mysql是使用源碼安裝! 相關軟件: ----------------------------------------

    發現網上很多兄弟都在為安裝proftpd+mysql+quota的種種問題苦惱。
    我就整理一下我的安裝過程,當然也不是原創了。也提供了相關軟件包永久下載
    ,mysql/php/apache安裝就免了。我的mysql是使用源碼安裝!
    相關軟件:
    ---------------------------------------------------------------
    [url=http://www.181info.com/proftpd/proftpd-1.2.9.tar.gz]proftpd-1.2.9.tar.gz[/url]
    [url=http://www.181info.com/proftpd/proftpd-mod-quotatab-1.2.11.tar.gz]proftpd-mod-quotatab-1.2.11.tar.gz[/url]
    [url=http://www.181info.com/proftpd/ftpdb.sql]ftpdb.sql[/url]
    [url=http://www.181info.com/proftpd/proftpd.conf]proftpd.conf[/url]

    ---------------------------------------------------------------
    步驟如下:
    [code:1:83e788a4d2]
    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.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
    [/code:1:83e788a4d2]

    -------------------------------Proftpd.conf----------------------------------
    [code:1:83e788a4d2]
    # 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
    [/code:1:83e788a4d2]

    建ftpdb庫,在phpMyAdmin中導入ftpdb.sql就ok。
    --------------------------------------ftpdb.sql---------------------------------
    [code:1:83e788a4d2]
    # 表的結構 `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');

    [/code:1:83e788a4d2]

    quotalimits表 
    [code:1:83e788a4d2]
    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: - 允許傳輸的文件數(包括上傳/下載)
    [/code:1:83e788a4d2]
    按這些步驟來安裝,應該沒問題。老實說用mysql和quota模塊來驗證用戶和設置磁盤限額,但我總覺得還是不夠完善,因為在這個方法中,數據庫表里還沒有相應的權限的字段,所以說相應用戶的權限還是得用實際得用戶即mysql對應得uid和gid來控制權限,那天要是mysql數據庫也能完全控制權限就好了。

     phpcool 回復于:2004-10-13 11:46:16
    proftpd-1.2.10以上版本就不需要proftpd-mod-quotatab-1.2.11.tar.gz 插件.

     落伍者 回復于:2004-10-14 09:21:17
    /usr/local/mysql-standard-4.0.18-pc-linux-i686/lib/libmysqlclient.a(my_compress.o)(.text+0xb4): In function `my_compress_alloc':
    : undefined reference to `compress'
    /usr/local/mysql-standard-4.0.18-pc-linux-i686/lib/libmysqlclient.a(my_compress.o)(.text+0x12a): In function `my_uncompress':
    : undefined reference to `uncompress'
    collect2: ld returned 1 exit status
    make: *** [proftpd] Error 1

    按照你的方法安裝還是出現如上提示。什么原因呢?mysql的原因 ?

     phpcool 回復于:2004-10-14 11:11:09
    --with-includes=/usr/local/mysql/include \--with-libraries=/usr/local/mysql/lib 
    這倆個路徑都要根據自己mysql安裝來定。

    確認后cp /usr/local/mysql/lib/* /usr/lib

     落伍者 回復于:2004-10-15 10:02:00
    cp lib文件至/usr/lib了。不行。

     phpcool 回復于:2004-10-15 10:45:10
    估計你的Mysql沒有裝好。以下是我的安裝步驟:
    [code:1:8f1a52b3a8]
    安裝MYSQL----------------------------------------------------------------
    shell> groupadd mysql
    shell> useradd -g mysql mysql
    shell> cd /usr/local
    shell> gunzip < /home/soft/phpsoft/mysql-standard-4.0.21-pc-linux-i686.tar.gz | tar xvf -
    shell> ln -s mysql-standard-4.0.21-pc-linux-i686 mysql
    shell> cd mysql
    shell> scripts/mysql_install_db
    shell> chown -R root .
    shell> chown -R mysql data
    shell> chgrp -R mysql .

    啟動mysql 
    /etc/rc.d/rc.local
    shell> /bin/mysqld_safe --user=mysql &
    [/code:1:8f1a52b3a8]

     donyad 回復于:2004-10-16 09:01:00
    rpm裝的mysql呢?

     xiadfei 回復于:2004-10-17 07:34:58
    我用的就是這樣的系統,但是發現用戶使用FLASHGET這樣的多線程下載工具的時候QUOTA就會出問題,根本算不出總數來,請問這個問題有辦法解決嗎?

     superpcman 回復于:2004-11-08 18:03:14
    [quote:29267e0322="donyad"]rpm裝的mysql呢?[/quote:29267e0322]

    redhat linux的在/usr/lib/mysql,/usr/include/mysql

     lusec3 回復于:2004-11-10 16:56:02
    樓主,我現在按你的配置了。啟動proftpd后,登陸失敗。

    Name (localhost:root): test
    331 Password required for test.
    Password:
    530 Login incorrect.
    Login failed.
    421 Service not available, remote server has closed connection


    ftp> 登陸會失敗,然后我查看日志記錄
    shell >  tail -f message
    查看記錄為
    Nov 10 16:45:22 proxyserver proftpd[2169]: proxyserver (proxyserver[127.0.0.1]) - FTP session opened. 
    Nov 10 16:45:25 proxyserver proftpd[2169]: proxyserver (proxyserver[127.0.0.1]) - no such user 'ftpgroup' 
    Nov 10 16:45:25 proxyserver proftpd[2169]: proxyserver (proxyserver[127.0.0.1]) - avit chroot("~ftpgroup/"): No such file or directory 

    我已經增加了用戶組
    shell>> groupadd -g 5500 ftpgroup 
    shell >> adduser -u 5500 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser 



    我的數據庫表記錄里面已經增加了

    mysql> select * from ftpuser;
    +----+--------+--------+------+------+------------+---------------+-------+---------------------+---------------------+
    | id | userid | passwd | uid  | gid  | homedir    | shell         | count | accessed            | modified            |
    +----+--------+--------+------+------+------------+---------------+-------+---------------------+---------------------+
    |  1 | test   | test  | 5500 | 5500 | /home/test| /sbin/nologin |     0 | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |
    +----+--------+--------+------+------+------------+---------------+-------+---------------------+---------------------+

    mysql> select * from ftpgroup;
    +-----------+------+---------+
    | groupname | gid  | members |
    +-----------+------+---------+
    | ftpgroup  | 5500 | ftpuser |
    +-----------+------+---------+


    我的配置文件
    vi proftpd.confUser                            nobody
    Group                           nobody

    # To cause every FTP user to be "jailed" (chrooted) into their home
    # directory, uncomment this line.
      #DefaultRoot ~


      TimeoutStalled 10
     MaxHostsPerUser 5 "Sorry,you may not connect more than five time."
     MaxClientsPerUser 5 "Only five such user at a time."
     MaxClientsPerHost 5 "Sorry,you may not connect more than one time."

       WtmpLog on
       TimeoutIdle 600

       RootLogin off
       RequireValidShell off
       TimeoutStalled    10
       MaxClients        10
       AllowForeignAddress on
       AllowStoreRestart on
       ServerIdent       off
       DefaultRoot      ~ftpgroup
       
       SQLAuthTypes Backend Plaintext
    #Plaintext
       SQLAuthenticate users* groups*
     
       SQLConnectInfo      ftpdb@localhost    root underavit
       SQLUserInfo         ftpuser userid passwd uid gid homedir shell
       SQLGroupInfo         ftpgroup  groupname gid members
       SQLHomedirOnDemand  on

    #Update count every time user logs in

      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        STORE,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,fil
    es_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+i%{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






      DisplayLogin                  welcome.msg
      DisplayFirstChdir             .message




    請問樓主是什么原因導致這種錯誤。這里先謝了!

     linuxxx 回復于:2004-11-10 23:00:03
    無法下載啊

     aodi 回復于:2005-03-01 09:15:43
    安裝環境:rh4 profpt 1.2.9  mysql 4.1.7(rh4自帶)
    執行前面全部按照
    http://bbs.chinaunix.net/forum/viewtopic.php?t=423609
    這個帖子的方法安裝,沒有出現問題
    到make install 時出現以下問題!
    [quote:611d4f24ea]
    gcc -d linux -i .. -i .. /include -i/usr/include/mysql/ -o 2 -wall -c mod_sql_mysql.c
    mod_sql_mysql.c:in function cmd_checkauth
    too many argunments to function 'make_scrambled_password'
    make[1]:***[mod_sql_mysql.c]
                錯誤1
    make[2]:leaving directory '/usr/local/proftp/modules'
                錯誤2
    [/quote:611d4f24ea]
    在線等待!希望能夠得到各位老師的幫助!

     sc782020 回復于:2005-03-31 16:25:18
    proftpd-1.2.10以上如果不需要quota插件的話,應該怎么安裝?怎么限制磁盤空間呢?

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>