WIKI使用導航
站長百科導航
站長專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機
- cPanel
- 網(wǎng)址導航專題
- 云計算
- 微博營銷
- 虛擬主機管理系統(tǒng)
- 開放平臺
- WIKI程序與應用
- 美國十大主機
Xlight FTP/使用ODBC用戶數(shù)據(jù)庫:修訂間差異
(以內(nèi)容“{{Xlight FTP}} ==使用Xlight FTP服務器的ODBC功能== Xlight FTP服務器可以使用外部的用戶數(shù)據(jù)庫獲得用戶參數(shù).注意: 只有專業(yè)版本的Xl...”創(chuàng)建新頁面) |
(沒有差異)
|
2011年8月5日 (五) 18:01的版本
使用Xlight FTP服務器的ODBC功能
Xlight FTP服務器可以使用外部的用戶數(shù)據(jù)庫獲得用戶參數(shù).注意: 只有專業(yè)版本的Xlight FTP服務器有這個功能, 用戶在30-天試用期也可以試用這個功能.使用外部用戶數(shù)據(jù)庫方便系統(tǒng)管理員管理大量用戶.
使用外部用戶數(shù)據(jù)庫需要配置ODBC數(shù)據(jù)源. 下面以MySQL數(shù)據(jù)庫為例. 對于其他數(shù)據(jù)庫,設(shè)置方法很類似.
使用這個功能之前, 你首先需要設(shè)置ODBC數(shù)據(jù)源.
1. MySQL ODBC數(shù)據(jù)源可以在網(wǎng)址http://www.mysql.com/downloads/api-myodbc.html下載.在運行Xlight FTP服務器的機器上安裝MySQL ODBC數(shù)據(jù)源.
2. 安裝完mysql ODBC數(shù)據(jù)源后你需要到Windows"控制面板-管理工具"中在"系統(tǒng)DSN"標簽內(nèi)添加MySQL數(shù)據(jù)源.
3. 選擇"系統(tǒng)DSN"內(nèi)的"添加(D)..."按鍵,選擇"MySQL ODBC Driver",按"完成"按鍵.
4. 在這個例子里, 我們使用 "Xlight FTP Server" 作為數(shù)據(jù)源名字. 你可以使用任何數(shù)據(jù)源名字. 這里假定MySQL數(shù)據(jù)庫在遠端192.168.11.2的LINUX服務器上. 我們現(xiàn)要在其中創(chuàng)建一個名字是"ftp_user_db"的空數(shù)據(jù)庫. 這里你可以使用任何數(shù)據(jù)庫名字. 在機器192.168.11.2上, 在MySQL命令提示符 mysql>, 鍵入命令"create database ftpd_user_db;" 創(chuàng)建一個名字是 "ftpd_user_db" 的數(shù)據(jù)庫.
5. 你需要在Xlight FTP服務器的 [全局選項]->[高級]->[ODBC 數(shù)據(jù)庫設(shè)置] 中配置外部數(shù)據(jù)庫". 你需要填入數(shù)據(jù)庫用戶和密碼,以及ODBC數(shù)據(jù)源. 如果你想手工創(chuàng)建數(shù)據(jù)庫表, 你可以跳到步驟 7. 在這個例子里,我們假定數(shù)據(jù)庫用戶"test"對數(shù)據(jù)庫"ftpd_user_db"有完全的訪問權(quán)限. 你可以點擊"創(chuàng)建"鍵,讓Xlight FTP服務器替你在數(shù)據(jù)庫里創(chuàng)建需要的數(shù)據(jù)庫.你也可以點擊"測試"鍵,檢查你是否已正確創(chuàng)建數(shù)據(jù)表.
注意: 對于64bit系統(tǒng), 你需要用32bit ODBC管理程序設(shè)置DNS. 32bit ODBC管理程序在C:\Windows\sysWOW64\odbcad32.exe.
6. 通過ODBC使用外部用戶數(shù)據(jù)庫認證, 你需要到 [虛擬服務器設(shè)置]->[通用]->[虛擬服務器], 選擇選項"啟用外部用戶鑒權(quán)" . 單擊"設(shè)置..."鍵, 在虛擬服務器的"鑒權(quán)類型" 中必須選擇ODBC, 如下圖所示:
7. 這個步驟只是用于手工創(chuàng)建數(shù)據(jù)庫表. 如果你已經(jīng)在第5步完成數(shù)據(jù)庫表的創(chuàng)建,你可以忽略這個步驟. 手工創(chuàng)建數(shù)據(jù)庫表,在數(shù)據(jù)庫中需要兩個表: acct_table and acct_param_table. 你可以在Xlight FTP服務器的安裝目錄中的odbc目錄下找到文件 "odbc_tables.sql". 你可以用這個文件手工創(chuàng)建數(shù)據(jù)庫表.
8. 為了安全的數(shù)據(jù)庫訪問, 創(chuàng)建上面兩個表之后, 你可以在數(shù)據(jù)庫中創(chuàng)建一個只讀用戶,他對"ftp_user_db"的數(shù)據(jù)庫只有SELECT的權(quán)限,如下所示:
在MySQL命令提示符 mysql>, 鍵入命令 grant select on ftpd_user_db.* anon@'192.168.11.%' Identified by "ftpd"; 這里你創(chuàng)建了一個新的數(shù)據(jù)庫用戶"anon",他的密碼是"ftpd",他對數(shù)據(jù)庫"ftpd_user_db"只有SELECT的訪問權(quán)限. 這個命令也限制用來查詢數(shù)據(jù)庫的訪問只能來自網(wǎng)段"192.168.11.0". 然后你可以將Xlight FTP服務器的外部ODBC數(shù)據(jù)庫配置中的用戶和密碼改成這個只讀用戶.
現(xiàn)在你完成了ODBC設(shè)置步驟. ODBC功能是在每個虛擬服務器中單獨啟用的. 在同一個Xlight FTP服務器,你可以有一些虛擬服務器使用ODBC外部用戶數(shù)據(jù)庫, 而一些不使用. 如果你選擇選項 "忽略 host_id 列" 或 "忽略 host_port 列", 在數(shù)據(jù)庫查詢時, Xlight FTP服務器將會忽略 "host_id" 或 "host_port" 列. 因為 "host_id" 列可以用來表示不同的機器, 而 "host_port" 列可以用來表示在同一臺機器上的不同的虛擬服務器. 這兩個選項可以用來在不同運行Xlight FTP服務器的機器間共享用戶數(shù)據(jù)庫,也可以在同一個機器的不同虛擬服務器間共享用戶數(shù)據(jù)庫. 如果你只用數(shù)據(jù)庫鑒權(quán)用戶, 你可以選擇選項 "只檢查用戶名和密碼", 使用這個選項你需要在本地FTP服務器創(chuàng)建同名的用戶. 數(shù)據(jù)庫只是用來檢查用戶存在數(shù)據(jù)庫中的密碼. 當這個選項啟用, 所有的用戶設(shè)置都是從本地服務器中同名的用戶設(shè)置里獲得.
在數(shù)據(jù)庫中創(chuàng)建用戶
你可以使用外部的數(shù)據(jù)庫工具連接到數(shù)據(jù)庫并創(chuàng)建用戶. 這只是用于測試目的.
在實際的生產(chǎn)環(huán)境里, 你可以使用 PHP 或 其他 CGI 腳本創(chuàng)建基于網(wǎng)頁的界面,用于添加,刪除或允許用戶通過網(wǎng)頁更改密碼等等.這種方式便于管理大量的用戶.你也可以和你現(xiàn)有的數(shù)據(jù)庫應用結(jié)合. 因為Xlight FTP服務器只需要讀取用戶數(shù)據(jù)庫, 但不寫入用戶數(shù)據(jù)庫, 你不需要擔心和你其他數(shù)據(jù)庫應用沖突.
在數(shù)據(jù)庫創(chuàng)建用戶之前, 你最好先閱讀 Xlight 幫助文檔中, "ODBC 數(shù)據(jù)庫表結(jié)構(gòu)" 這一節(jié).
用戶的密碼可以是以 MD5/SHA1 Hash或明碼的形式存放在數(shù)據(jù)庫. 默認是使用MD5 hash. 你可以在虛擬服務器的外部用戶認證,ODBC設(shè)置中更改密碼類型. 如果使用 MD5 hash, 你可以通過搜索"MD5 calculator" 很容易在Google找到MD5計算的工具. 在我們的例子里用戶名是 "test" 他的密碼也是 "test" , 密碼的MD5 hash值是"098f6bcd4621d373cade4e832627b4f6". 如下圖所示:
注意: 如果用戶的主目錄不存在, 當他第一次登錄時, Xlight FTP服務器會自動在本地創(chuàng)建目錄. 例如, 當用戶名是"test" 的主目錄"c:\wutemp"不存在. 當這個名字是"test"的用戶登錄時, Xlight FTP服務器會自動為他創(chuàng)建這個目錄.
如果你想使用更多的用戶參數(shù), 你可以在數(shù)據(jù)表 "acct_param_table" 中創(chuàng)建 "param_index" 列. 在這一行中填入你想使用的參數(shù), 并且將這個參數(shù)放到這個用戶在"acct_table"表中的"param_index"列. 列"param_index"的值可以在不同用戶間共享, 因此如果你有很多用戶有同樣的參數(shù), 在數(shù)據(jù)表 "acct_param_table" 中你不需要創(chuàng)建很多不同的"param_index"行.
對于你不使用的數(shù)據(jù)庫表中的那些列, 你可以讓它們的值為空. 但列 "host_id", "host_port", "username" 是必須的值, 你必須填寫. 另外如果使用"home_path"列,"home_perm"列也必須填寫.
"virtual_path_table" 被用來設(shè)置用戶的虛擬目錄. 一個用戶在數(shù)據(jù)庫中可以有多個虛擬目錄. 這些虛擬目錄在"virtual_path_table"表中有不同或相同的"virtual_path_index". 在"acct_table"中的"virtual_path_indexes"列通過"virtual_path_index"列鏈接到"virtual_path_table"的一個或多個行. 如果他包含多個"virtual_path_index", 它們之間必須通過","(逗號)分隔.
參數(shù)%username%可以用于"virtual_path_table"里的real path. %username%將會被替換成實際登錄的用戶名. 如果用戶登錄時real path不存在, Xlight FTP服務器將會自動創(chuàng)建目錄.
查找并解決數(shù)據(jù)庫認證問題
通過選中選項"在錯誤日志顯示調(diào)試跟蹤信息",可以幫助你查找并解決數(shù)據(jù)庫認證的問題,這個選項可以在[虛擬服務器設(shè)置]->[啟用外部用戶鑒權(quán)]找到. 啟用這個選項后, 你可以在錯誤日志看到Xlight FTP服務器數(shù)據(jù)庫查詢過程.
使用其他數(shù)據(jù)庫
當用戶登錄Xlight服務器時,服務器會通過ODBC連接,用SQL語句分兩次查詢數(shù)據(jù)庫。
第一個數(shù)據(jù)庫的SQL查詢用于在數(shù)據(jù)庫中找到與用戶登錄時輸入的用戶名,密碼相匹配的紀錄,并且獲得關(guān)于這個用戶的一些基本配置參數(shù),如"home_path", "home_perm" 等等. 在這次查詢中返回的"param_index"值將會同時用在第二次數(shù)據(jù)庫查詢。
第二次數(shù)據(jù)庫的SQL查詢將會用第一次查詢返回的"param_index"值,查詢數(shù)據(jù)庫的"acct_param_table",以得到更多的用戶參數(shù)設(shè)置。
Xlight服務器使用的"acct_table"和"acct_param_table"數(shù)據(jù)庫表可以不實際存在與數(shù)據(jù)庫里. Xlight服務器并不知道"acct_table"和"acct_param_table"是否存在于數(shù)據(jù)庫中. 它只是通過察看兩個SQL查詢的返回結(jié)果. 如果第一條SQL查詢替換語句從數(shù)據(jù)庫中返回一行, Xlight服務器就認為用戶登錄驗證成功,同時它會從返回的行中,獲得用戶的基本配置參數(shù). 如果數(shù)據(jù)庫沒有返回結(jié)果,它認為用戶登錄驗證失敗。 所以數(shù)據(jù)庫如果不想讓用戶訪問服務器,就不要返回SQL查詢結(jié)果. 在第一條查詢返回的"param_index"值,將會用在第二條SQL查詢語句中.
Xlight服務器允許管理員替換上面兩個SQL查詢語句,以支持高級的數(shù)據(jù)庫應用,如數(shù)據(jù)庫的"存儲過程"(Stored Procedure), 你可以看這個例子如何使用數(shù)據(jù)庫存儲過程
替換第一條內(nèi)部SQL查詢語句 - 在第一條SQL替換語句中,可以使用下面的變量:
$USER - 這個變量將以用戶的登錄名替換 $PASS - 這個變量將以用戶的密碼(MD5或Text)替換 $ID - 這個變量將以"本地主機ID"替換 $PORT - 這個變量將以虛擬服務器的端口替換 $USERIP - 這個變量將以用戶的IP地址替換 $SERVERIP - 這個變量將以虛擬服務器的IP地址替換
例如, 如果用語句 "EXEC proc_getuser '$USER', '$PASS', $ID, $PORT" 作為第一條SQL語句的替換, 當用戶是"test"的用戶以密碼"hello"登錄到FTP服務器21端口, 本地主機ID是1, 經(jīng)過替換最后送到數(shù)據(jù)庫的SQL語句是 "EXEC proc_getuser 'test', 'hello', 21, 0".
替換第二條內(nèi)部SQL查詢語句 - 在第二條SQL替換語句中,可以使用下面的變量:
$INDEX - 這個變量將會替換為第一條SQL替換查詢語句返回的"param_index"值. $PORT - 這個變量將以虛擬服務器的端口替換 $SERVERIP - 這個變量將以虛擬服務器的IP地址替換
Xlight FTP使用手冊導航 |
---|