熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

建立數據庫認證的FTP

2013-11-13 22:12:07  來源: Oracle 

  proftp+mysql認證實現
   安裝 redhat 或者solaris
  
    注solaris要求自己有c編譯器等工具我們這裡不提供安裝方法具體可以取下載gcc包安裝
  
   停止缺省的 wuftpd服務器
  
    在 ntsysv 裡將 wuftpd 前的 * 去了然後保存然後將 /etc/rcd/initd 目錄下的 wuftpd 的啟動腳本刪除了Solaris可以去/etc/services和/etc/nf注銷不過最好是不要安裝那個東西它的安全問題很多!
  
  安裝 MYSQL
  
    在 Redhat 的光盤上有的將 MYSQL 的程序和庫都裝上(如果安裝 Redhat 時已經 選裝了這步就不用了當然如果是solaris的話就沒什麼用了用源代碼包自己編譯吧)
  
    rpm ivh mysqlirpm
    rpm ivh mysqldevelirpm
    rpm ivh mysqlserverirpm
  
    也可以源代碼安裝
  
    tar –zxvf mysqltargz
    cd mysql
    /configure –prefix=/usr/local/mysql
    make
    make install
    cd /usr/local/mysql/bin
    / mysql_install_db #初始化
    /safe_mysqld –uroot & #啟動mysql
  
   下載 proftpdtargz
  
    不知道哪兒有下載?FAINT在搜索引擎上用 proftpdtargz 下載 在找 至少命中個可以下載的站點
  
  准備開始安裝 proftpd
  
    為 proftpd 建立專用的用戶;加一個ftpuser組 id為;加一個ftpuser用戶用戶id為組id為
  
  在MYSQL下為 proftpd 建數據庫和表
  
    #mysql p
    PASSWORD:****** (自己的口令自己知道)
  
    然後用下列命令直接拷進去吧
  
    CREATE DATABASE proftpftp;
    USE proftp;
    CREATE TABLE users (
      userid VARCHAR() NOT NULL # 用戶名
      uid INT UNSIGNED # 用戶ID
      gid INT UNSIGNED # 組ID
      passwd VARCHAR() NOT NULL # 密碼
      shell VARCHAR() # SHELL
      homedir VARCHAR() # 用戶目錄
      count INT UNSIGNED NOT NULL # 登錄計數
    ) comment = 用戶表;
    #這個地方可能沒法輸入漢字可改成英文!
    CREATE TABLE groups (
      groupname VARCHAR() NOT NULL # 組名
      gid INT NOT NULL # 組ID
      members VARCHAR() # 組成員
    ) comment = 組表;
    #把組表改為英文吧
  
   設置權限
  
    在 MYSQL 下 GRANT 一個可以存取這個表的用戶(要 select update 權限)
  
    grant selectupdatedeleteinsert on proftp*
    to yourmysqlid@% identified by passwd;
  
   tar zxvf proftpdtargz
  
    cd proftpd
  
    /configure withmodules=mod_sql:mod_sql_mysql
    withincludes=/usr/include
    withlibraries=/usr/lib/mysql
  
    (這裡的 MYSQL 是用 RPM 安裝時的庫路徑你可以在根下用 locate 命令找到自己機 器上 MYSQL 庫的路徑)
  
    如果是源代碼安裝的一定要注意了
  
    /configure prefix=/usr/local/proftpd
      withmodules=mod_sql:mod_sql_mysql
      withincludes=/usr/local/mysql/include
      withlibraries=/usr/local/mysql/lib/mysql
  
    這個地方也要多多注意我就是這裡出了錯誤的
  
   make 並 make install
  
  編輯 /usr/local/etc/nf
    加上下面的話(須修改一下再加)
  
    #先改其它參數文件本來就有注解的然後加上下面的
    #用戶不能訪問比自己登錄目錄更高級別的目錄
    DefaultRoot ~
    #數據庫情況剛剛的GRANT時要是用了IP這裡要寫 proftp@xxxxxxxxxxxx
    #用機器名也一樣只有GRANT時用localhost時可以省略@ xxxxxxxxxxxx
    SQLConnectInfo proftp 用戶名 口令
    #密碼方式為明文可以為空
    #(要是想用 MD 也可以手冊上講了好多種加密支持)
    SQLAuthTypes Plaintext Empty
    #是否不允其它認證方式
    #(注意其它文章裡的這個參數是講錯的小樂就上當過
    SQLAuthoritative on
    #不用講了吧
    SQLDefaultGID
    SQLDefaultUID
    #用戶認證
    SQLDoAuth on
    #組有效
    SQLDoGroupAuth on
    #下面的就不用講了吧一眼就明白了 根據你數據表情況寫
    SQLUserTable users
    SQLUsernameField userid
    SQLUidField uid
    SQLGidField gid
    SQLPasswordField passwd
    SQLShellField shell
    SQLHomedirField homedir
    SQLLoginCountField count
    SQLGroupTable groups
    SQLGroupGIDField gid
    SQLGroupMembersField members
    SQLGroupnameField groupname
    SQLHomedirOnDemand on cp
      /usr/local/mysql/lib/mysql/libmysqlclientso /usr/lib
     (重要我是花了好久時間才弄明白的否則啟動不了!!!)
  
  測試
  
    先在 MYSQL 裡加用戶組用戶密碼留空也可反正是測試 運行 /usr/local/proftpd/sbin/proftpd ftp localhost
  
    用新加的用戶一試哈哈是不是成了
  
  題外話
  
    要是想把 PROFTPD 放在 ntsysv 裡邊控制呵呵加下面的腳本吧
  
    建立 /etc/rcd/initd/proftpd 內容是
  
    #!/bin/sh
    case $ in
    start)
    echo Starting professional ftp daemon: [OK]
    /usr/local/proftpd/sbin/proftpd d
    touch /var/lock/subsys/proftpd
    ;;
    stop)
    echo n Restarting professional ftp daemon: All Proftpd Process
    rm f /var/lock/subsys/proftpd
    killall proftpd
    ;;
    *)
    echo Usage: $ { start | stop }
    ;;
    esac
    exit
  
  
  
    可以用 /etc/rcd/initd/proftpd stop 來殺所有 proftpd 守護進程用 /etc/rcd/initd/proftpd start 啟動一個進程要是你不小心啟運了兩次就用一次 STOP 就可以了
  

From:http://tw.wingwit.com/Article/program/Oracle/201311/18445.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.