• <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整合起來?

    發表于:2007-05-25來源:作者:點擊數: 標簽:
    一直想知道,但是沒有試通。 wind521 回復于:2003-01-15 16:08:30 原版的精華里有一個,是原來的 linux 版的 haohaoo 回復于:2003-01-15 19:37:32 用MySQL+Proftpd配置FTP 服務器 FTP(FileTransferProtocol)是internet中的一項常用而且重要的互聯網協議,

    一直想知道,但是沒有試通。

     wind521 回復于:2003-01-15 16:08:30
    原版的精華里有一個,是原來的linux版的

     haohaoo 回復于:2003-01-15 19:37:32
    用MySQL+Proftpd配置FTP服務器 

    FTP(File Transfer Protocol)是internet中的一項常用而且重要的互聯網協議,廣泛應用于internet中,然而傳統的FTP服務中的帳號都是用服務器中的系統用戶,這樣也為也會系統安全留下了隱患,用MySQL進行用戶認證,很好地避免這種隱患。它利用數據庫來提供用戶及其認證,把FTP的帳號映射于系統用戶,從而避免了使用系統用戶。這樣可以達到比較安全的目的。 
    用MySQL+Proftpd配置FTP服務器,需要有中間包mod_sql,本文所講的,假設你的服務器中已經安裝好了MySQL,具體過程: 
    一、獲起必須的安裝包(mod_sql,proftpd)。 
    Proftpd的安裝包可以通過http://www.proftpd.net 獲得,注意要支持MySQL認證最低的版本為1.2.5。 
    Mod_sql安裝包可以通過http://www.lastditcheffort.org/aah/proftpd/mod_sql.html 獲得。 
    二、包的安裝。 
    解開安裝包:把proftpd-1.2.6.tar.gz 拷貝到/usr/local/src的目錄下,用命令: 
    tar –gzvf proftpd-1.2.6.tar.gz 
    解開,這時產生了一個proftpd-1.2.6 的目錄。然后進入該目錄中的contrib目錄: 
    cd proftpd-1.2.6/contrib/ 
    把中間包mod_sql拷貝到該目錄中,再解開: 
    tar –gzvf mod_sql-4.0.8.tar.gz 
    配置使Proftpd支持MySQL認證: 
    ./configure -with-modules=mod_sql:mod_sql_mysql \ 
     -with-includes=/usr/includes/mysql \ 
     -with-libraries=/usr/lib/mysql 
    注意:-with-includes選項是指MySQL的頭文件所在的目錄;-with-libraries選項是指MySQL的庫文件所在的目錄。對于不同的環境可能會是不同的目錄。 
    進行編譯: 
    make 
    安裝: 
    make install 
    安裝完之后,可以按下列步驟進行測試,Proftpd是否能正常工作: 
    sh sample-configurations/PFTEST.install 
    測試的所需要的臨時文件被放置在/tmp/PFTEST目錄中,運行命令: 
    ./proftpd –n –d 5 –c /tmp/PFTEST/PFTEST.conf 
    如果能正常運行,你可以發現有很多的信息而且最后一行會出現: 
    ProFTPD 1.2.6 (built ***) standalone mode STARTUP 
    說明服務啟動了,它用的端口是2021,你可以用用戶proftpd與密碼 proftpd進行登錄測試。如果正常,你可以做下列準備;否則要檢查安裝是否正確。 
    三、為FTP服務建立相應的數據庫及其表。 
    1、你可以為此服務建立專門的數據庫,也可以放在其它的數據庫中。在此我專門建立一個專門的數據庫FTP: 

    create database FTP; 

    2、然后在這個數據庫中建立一個用戶表FTPUSERS,這個表是必須的: 

    use FTP; 
    create table FTPUSERS ( 
    userid TEXT NOT NULL, 
    passwd TEXT NOT NULL, 
    uid INT NOT NULL, 
    gid INT NOT NULL, 
    home TEXT, 
    shell TEXT 
    ); 
    此表格是為了用戶認證所需要的,其中userid、passwd是必不可少的,userid是用做FTP服務的用戶名;passwd是指此用戶的密碼;uid是系統用戶的ID,也就是所映射的系統用戶;gid是所屬系統組的ID;home是該用戶所在的HOME目錄;shell可以為該用戶指定相應的shell。當然你可以建立更多的字段,例如:用來記錄用戶登錄次數的count,或者是日期的date,如果你對配置熟悉了之后,你可以根據自己的喜歡添加更多的功能。在此就不多講。 
    3、如果你想需要所有的功能,你還可以添加另外一個需要的表:FTPGRPS,也就是確定組的表格,當然也可以不用,這里講一個它的格式: 
    create table FTPGRPS ( 
    grpname TEXT NOT NULL, 
    gid SMALLINT NOT NULL, 
    members TEXT NOT NULL, 
    ); 
    其中grpname是組的名稱,gid是系統組的ID,members是組的成員。注意:多成員,他們之間要用逗號隔開,不能使用空格。 

    4、為空表格插入記錄: 
    INSERT INTO FTPUSERS (userid, passwd, uid, gid, home, shell) 
    valueS (‘user1’, ‘999999’, ‘1000’, ‘1000’, ‘/home/ftp/user1’, ‘’); 

    按此格式你可以插入這每一個用戶添加一個記錄。 
    如果你要想應用到更多的功能,且建立了組的表格,你也要為此添加記錄,不過一定要注意在members的字段多個成員一定要用逗號隔開。 

    四、為FTP用戶建立相應的系統用戶。 
    在本例中,只整個FTP服務只提供一個有效的系統用戶FTPUSR和組FTPGRP,當然你也可以設置多個系統用戶。但出于安全的考慮,我只設一個,用他來啟動FTP daemon,并把所有的FTP用戶映射過這個用戶。 

    先建立FTPGRP組: 
    groupadd –g 1000 –r FTPGRP 
    建立FTPUSR用戶: 
    adduser –u 1000 –g 1000 –d /home/FTP –s /bin/bash –r FTPUSR 

    為FTPUSR建立HOME,把所有的FTP user 活動空間全放在此目錄下: 
    mkdir /home/FTP 
    chown FTPUSR /home/FTP 
    chgrp FTPGRP /home/FTP 

    五、設置配置文件。 
    Proftpd的配置文件proftpd.conf在/usr/local/etc/目錄下,針對不用的認證可以使用不同的配置文件。使用MySQL認證,可以把mod_sql.conf拷貝到/usr/local/etc下面并將其改名為proftpd.conf。 
    修改proftpd.conf文件,具體內容如下: 

    #設置FTP服務器的名稱: 
    ServerName“My FTP Server” 
    #設置FTP服務器的類型: 
    ServerTypestandalone 
    DefaultServeron 
    #設置根,可以限制用戶在某個地方活動,增強服務器的安全性。 
    DefaultRoot~ 
    #設置FTP服務端口號,標準的FTP服務端口是21。 
    Port21 
    #設置新建文件或目錄時,設置權限的掩碼: 
    Umask022 
    #設置系統日志文件: 
    SystemLog/var/log/ftp.syslog 
    #設置記錄文件傳輸的日志文件: 
    TransferLog/var/log/ftp.transferlog 
    #設置最大的嘗試登錄的次數,如果超過自動斷開連接: 
    MaxLoginAttempts3 

    #設置MySQL認證: 
    <Global> 
    #數據庫聯接的信息,DatabaseName是數據庫名, HostName是主機名, 
    #Port是端口號,UserName是連接數據庫的用戶名,Password是密碼。 
    SQLConnectInfo DatabaseName@HostNameort UserName Password 
    #我的實例是SQLConnectInfo zhuhai@localhost root ****** 
    #數據庫認證的類型: 
    SQLAuthTypesBackend Plaintext 
    #指定用來做用戶認證的表的有關信息。 
    SQLUserInfo FTPUSERS userid passwd uid gid home shell 
    #設置如果shell為空時允許用戶登錄: 
    RequireValidShelloff 
    #數據庫的鑒別,這里是用于用戶的方式: 
    SQLAuthenticateusers 
    #如果home目錄不存在,則系統會為根據它的home項新建一個目錄: 
    SQLHomedirOnDemand on 
    </Global> 
    #防止DoS攻擊,設置最大的了進程: 
    MaxInstances30 
    #設置正常服務的系統用戶與組: 
    UserFTPUSR 
    GroupFTPGRP 
    #設置用戶登錄時顯示的信息及進入各個子目錄中的信息: 
    DisplayLoginwelcome.msg 
    DisplayFirstChdir.message 
    #設置最大的登錄數: 
    MaxClients10 
    #支持斷點續傳: 
    AllowRetrieveRestarton 

    六、測試。 
    完成了文件的配置,你可以啟動Proftpd服務了,用來測試是否成功: 
    /usr/local/sbin/proftpd –n 
    這里你可以發現服務已經啟動了,你可以在其它的地方進行登錄,如果按上述的配置你就可以使用FTP服務了,不過我在測試的時候真的花了不少的時間。如果沒成功沒關系,仔細檢查一下自己在那個地方出現問題。如果在前面的測試成功了,則在配置文件中出現的問題可能會比較大,當然數據庫中的FTPUSERS表的內容不能出現錯誤。 

    七、腳本的編寫。 
    好了,一切都成功了,下面就寫一個腳本來啟到FTP服務。如果你使用的服務器的類型是”ServerType  inetd”, 如果用的是inetd服務,需要修改/etc/inetd.conf文件,增加一行: 
    ftp streamtcpnowaitroot/usr/local/sbin/proftpd proftpd 
    如果是用xinetd服務,則需要在/etc/xinetd.d/的目錄下增加一個文件:proftpd 
    具體的內容如下: 
    service ftp 

    flags=REUSE 
    socket_type=stream 
    instances=30 
    wait=no 
    user=root 
    server=/usr/local/sbin/proftpd 
    log_on_suclearcase/" target="_blank" >ccess=HOST PID 
    log_on_failure=HOST RECORD 

    如果選用的”ServerType  standalone”,則需在在/etc/rc.d/init.d/目錄下面增加一個proftpd 腳本,具體內容如下: 
    #!/bin/bash 

    # Startup script for the proftpd FTP server 
    . /etc/rc.d/init.d/functions 
    proftpd=/usr/local/sbin/proftpd 
    prog=proftpd 
    RETVAL=0 
    start() { 
    echo –n $”Starting $prog:” 
    daemon $proftpd 
    RETVAL=$? 
    echo 
    [ $RETVAL –eq 0 ] && touch /var/lock/subsys/proftpd 
    return $RETVAL 


    stop() { 
    echo –n $”Stopping $prog:” 
    killproc proftpd 
    RETVAL=$? 
    echo 
    [ $RETVAL –eq 0 ] && rm –f /var/lock/subsys/proftpd 
    return $RETVAL 



    # See how we were called 
    case “$1” in 
    start) 
    start 
    ;; 
    stop) 
    stop 
    ;; 
    status) 
    status $proftpd 
    RETVAL=$? 
    ;; 
    restart) 
    stop 
    start 
    ;; 
    *) 
    echo $”Usage: $prog {start|stop|status|restart}” 
    exit 1 
    esac 

    exit $RETVAL 

    八、總結 
    終于完成了所有的步驟,Proftp+MySQL用起來感覺不錯的,而且通過數據庫可以做到很多的功能,例如:用來記錄用戶的登錄的次數,設置起來也不怎么復雜,只需要在FTPUSERS表中添加field count,就可以輕松實現。不過以上的步驟只是一個基本的功能,要擴展其它的功能可以參考,安裝包中自帶的說明文件。

     simpleness 回復于:2003-01-16 09:31:39
    可不可以用ORACLE來作,需要什么包嗎?

     o葉大馬猴 回復于:2003-01-17 12:06:53
    整合..

    希望能和原來的mysql數據庫整合...

    比如本論壇phpbb的用戶數據,
    用戶名和密碼字段肯定是有了.......

    有人做出來嘛???

     白狐貍 回復于:2003-01-17 12:33:17
    倒~~~
    昨天晚上我照上面的文章做了很久,還是沒成功,郁悶

     白狐貍 回復于:2003-01-18 15:44:49
    現在已經初步成功了,在mysql數據庫中填加的用戶能夠登陸成功,但它的登陸目錄都是/home/ftp,郁悶
    現在我想做的是:比如我在數據庫FTP中加test用戶,密碼也為test,
    在登陸的時候,我希望proftpd能自動在/home/ftp目錄下建立一個test目錄。讓test用戶登陸后自動進入這個目錄。

    上面文章不是寫到:
    #如果home目錄不存在,則系統會為根據它的home項新建一個目錄: 
    SQLHomedirOnDemand on

     白狐貍 回復于:2003-01-18 16:01:52
    OK,終于搞定,非常感謝haohaoo轉的這篇貼子,不過這篇貼子里有少許錯誤,我來幫忙改正一下:

    1、在開始運行configure之前,我們要先改動一個文件
    proftpd-1.2.6/contrib/mod_sql_mysql.c 
    將里面的#include <mysql/mysql.h>改成#include </usr/local/mysql/include/mysql/mysql.h>
    這里假設你的Mysql安裝在/usr/local/mysql

    2、就是在configure的時候文章在with前少了個-,哈哈,誰都看得出來,但有些懶鬼如果能copy絕不用手輸入,就有些麻煩:PP

     wind521 回復于:2003-01-18 20:12:07
    謝謝 !
    真是個好同志!

     hmkart 回復于:2003-01-21 19:01:04
    怎么樣控制Proftp和Mysql整和后,
    虛擬用戶的文件上傳控制呀

     gonia 回復于:2003-04-21 20:53:46
    mod_sql的安裝包在哪里???
    我找遍了ports都找不到。

     wangmingda 回復于:2003-07-24 17:29:10
    http://www.lastditcheffort.org/home/aah/proftpd/mod_sql

    原文轉自: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>