Xlight FTP 服務器使用三個數據庫表存儲用戶配置. 一個是用戶表"acct_table", 它包括用戶的基本信息, 例如這個用戶從屬的FTP服務器的 "host_id" 或 "host_port", 用戶的密碼和組, 這個用戶的根目錄等等. 另一個是參數表"acct_param_table",參數表包含這個用戶的參數選項的模板, 參數表的列"param_index"的值用於標識和索引不同的用戶參數模板. 用戶表"acct_table"的"param_index"項需要填入在參數表中相應的參數模板"param_index"值; 只要這些用戶有相同的選項,參數表的選項模板選項可以被多個用戶所共享. 這可以節省空間和減少新增加用戶的工作量. 第三個表是虛擬目錄表"virtual_path_table". 它被用來設置用戶的虛擬目錄. 一個用戶在數據庫中可以有多個虛擬目錄. 這些虛擬目錄在"virtual_path_table"表中有不同或相同的"virtual_path_index". 在"acct_table"中的"virtual_path_indexes"列通過"virtual_path_index"列鏈接到"virtual_path_table"的一個或多個行. 如果他包含多個"virtual_path_index", 它們之間必須通過","(逗號)分隔. 數據表的項可以為空(不填), 如果為空, 相應的用戶參數使用默認值.
Xlight FTP 服務器的數據庫表可以為不同機器運行的Xlight FTP服務器,或相同機器上運行的不同虛擬服務器之間所共享. 在用戶表列"host_id"的值表示這個用戶所附屬的機器,不同機器可以使用不同的"host_id"值. 你可以在配置Xlight FTP 的ODBC數據源的配置窗口內設置或修改這臺機器的"host_id"值. "host_port"的值表示同一臺機器上的不同虛擬服務器使用的端口,不同的虛擬服務器需要使用不同端口;
當在虛擬服務器中配置外部用戶數據庫選項時,你可以選擇查詢數據庫時是否使用選項 "忽略host_id" 或 "忽略host_port".當選中"忽略host_id"時, 用戶登錄查詢用戶表時,服務器將忽略數據表的"host_id"列,這樣你可以在不同機器之共享用戶參數和密碼. 當選項"忽略host_port"被選中時, "host_port"列將被忽略,這樣你可以在同一臺機器上的不同虛擬服務器之間共享用戶參數和密碼. 如果這兩個參數被同時選中,不同的機器和虛擬服務器將可以使用相同的用戶參數和密碼. 這兩個選項提供了在不同機器和虛擬服務器之間共享用戶參數和密碼的靈活性.
當在虛擬服務器中配置外部用戶數據庫選項時,你可以選擇查詢數據庫時是否使用選項"只鑒權".這個選項將使虛擬服務器只使用外部用戶數據庫驗證用戶密碼.這意味它只檢查數據表中的"host_id",host_port","username","password"和"no_password"列而忽略其他列.你需要在本地創建同樣用戶並配置參數,以使服務器從本地獲得用戶配置參數.
在Xlight FTP 服務器的安裝目錄中存在一個"odbc_tables.sql"文件,你可以用這個文件手工在數據庫中創建服務器需要的數據庫表. 另外你也可以在ODBC數據源配置窗口中,用"創建數據庫表"按鍵來創建需要的數據庫表.但這要求你在ODBC數據源中臨時配置一個具有更改和創建數據庫表的權限的數據庫用戶.
Xlight FTP 服務器在使用外部用戶數據庫時,並不需要更改數據庫的權限.所以你在配置ODBC數據源時,最好配置一個只讀的數據庫用戶帳號,這樣會有較好的安全性.尤其是當用戶數據庫在遠端服務器時,或者多個不同機器使用相同用戶數據庫時.
用戶密碼使用32字節MD5字符串或者明碼存儲在數據庫��, 對MD5字符串,在Google中搜索"MD5 計算器"或"MD5caculator"很容易找到相應的MD5工具,你只要將生成的32字節MD5字符串剪貼到用戶數據表密碼列即可.
acct_table 用戶表結構
| 數據庫列名 | 數據類型 | 描述 |
| host_id | integer | host_id 用於區分不同的機器 |
| host_port | integer | host_port 區分同一臺機器上的不同的FTP虛擬服務器 |
| username | varchar(64) | 用戶名長度:1-64 字節 |
| password | varchar(64) | 用戶密碼長度:1-64字節; 它可以是明碼,也可以是密碼的32字節MD5字符串值 |
| no_password | integer | 0(默認值)=需要密碼; 1=不需要密碼 |
| home_path | varchar(255) | Xlight FTP服務器每個用戶的主目錄是從"/"開始,這�婸搨n填入用戶的主目錄"/" 所對應的實際DOS目錄 |
| home_perm | varchar(10) | 用戶的主目錄"/"的權限限制. L - 列目錄; R - 讀; S -包含子目錄; C- 創建 W- 寫; A - 附加; D - 刪除, N -更名; 例如,如果你需要給用戶"讀,寫,列目錄和包含子目錄"的權利, 你需要在在這一項中放"LRSW-----" |
| groupname | varchar(64) | 組名長度: 1- 64 字節 |
| expire_time | varchar(24) | 這個用戶的帳號過期時間. 格式="yyyy-mm-dd hh:mm:ss" ,其中yyyy-mm-dd是數字"year-month-day" hh:mm:ss 是數字"hour-minute-second". 如果用戶帳號沒有過期時間,這一項可以空著不填. 註意hour是24小時的表示方法 |
| hide_pub_path | integer | 0(默認值)=顯示公共虛擬目錄; 1=隱藏公共虛擬目錄 |
| hide_grp_path | integer | 0(默認值)=顯示組虛擬目錄; 1=隱藏組虛擬目錄 |
| enable_quotas | integer | 0(默認值)=不使用用戶的硬盤配額; 1=使用用戶的硬盤配額 |
| enable_ratios | integer | 0(默認值)=不使用上傳/下載比例; 1=使用上傳/下載比例 |
| freeze_user | integer | 0(默認值)=正常用戶; 1=這個用戶被凍結(禁止) |
| bypass_svr_max | integer | 0(默認值)=受虛擬服務器最大用戶數的限制; 1=忽略虛擬服務器最大用戶數的限制 |
| virtual_path_indexes | varchar(255) | 它鏈接到"virtual_path_table"表的"virtual_path_index"列. 如果它包含多個"virtual_path_index", 它們之間必須通過","(逗號)分隔. |
| param_index | integer | 這個值索引參數表的用戶參數模板,只要他們的參數相同,不同用戶可以使用相同參數模板索引值 |
acct_param_table 參數表結構
| 數據庫列名 | 數據類型 | 描述 |
| param_index | integer | 它是不同用戶參數模板的索引值 |
| max_down_speed | integer | 用戶最大下載速度(Kbps). 0(默認值)=不限用戶下載速度 |
| max_up_speed | integer | 用戶最大上傳速度(Kbps). 0(默認值)=不限用戶下載速度 |
| max_user_conn | integer | 用戶最大同時連接數. 0(默認值)=不限用戶同時連接數 |
| max_conn_per_ip | integer | 用戶最大單IP同時連接數. 0(默認值)=不限用戶單IP同時連接數 |
| max_session_time | integer | 用戶每次會話最大持續時間. 0(默認值)=不限用戶會話持續時間 |
| max_down_file_num | integer | 用戶每次會話能夠下載的文件個數. 0(默認值)=不限用戶會話下載的文件個數 |
| max_up_file_num | integer | 用戶每次會話能夠上傳的文件個數. 0(默認值)=不限用戶會話上傳的文件個數 |
| max_session_down | integer | 用戶每次會話允許下載的總流量(MB). 0(默認值)=不限用戶每次會話下載的總流量 |
| max_session_up | integer | 用戶每次會話允許上傳的總流量(MB). 0(默認值)=不限用戶每次會話上傳的總流量 |
| max_down_file_size | integer | 用戶每次會話允許下載的最大文件大小(MB). 0(默認值)=不限用戶用戶下載的最大文件大小 |
| max_up_file_size | integer | 用戶每次會話允許上傳的最大文件大小(MB). 0(默認值)=不限用戶用戶上傳的最大文件大小 |
| disk_quotas | integer | 用戶能夠使用的最大硬盤空間 |
| disk_quota_unit | integer | 磁盤配額單元. 提供的選項有: KB(默認值), MB |
| ratios_type | integer | 0=根據KB,1=根據文件 |
| download_ratios | integer | 下載比例值; 它是上傳/下載比例的後半部分值,需要同時和下面的上傳比例值一起使用,以形成完整的上傳/下載比例對
|
| upload_ratios | integer | 上傳比例值; 它是上傳/下載比例的前半部分值,需要同時和上面的下載比例值一起使用,以形成完整的上傳/下載比例對
|
| starting_credit | integer | 用戶上傳/下載比例的初始額度 |
| ftp_cmd_speed | integer | 用戶登錄後FTP命令執行速度. 0(默認值)=用戶使用虛擬服務器的FTP命令執行速度 |
| allowed_login_ip | varchar(255) | 用戶登錄控制允許登錄的用戶IP地址範圍. 參數格式:ip地址/子網掩碼; 最多可以配置6個地址範圍. 每一個地址範圍之間用符號"|"分開. 例如: "192.168.252.1/255.255.255.0|202.96.3.1/255.255.255.0".
|
| denied_login_ip | varchar(255) | 用戶登錄控制允許登錄的用戶IP地址範圍. 參數格式:ip地址/子網掩碼; 最多可以配置6個地址範圍. 每一個地址範圍之間用符號"|"分開. 例如: "192.168.252.1/255.255.255.0|202.96.3.1/255.255.255.0" |
| allowed_login_time | varchar(255) | 用戶登錄控制允許登錄的用戶時間. 參數格式:"開始時間 - 結束時間", 其中"開始時間"和"結束時間"的格式:"mon/day/year hour:minute" 或 "weekday hour:minute". 請註意這�堻怳p的單位是分鐘,不是秒;註意hour是24小時的表示方法. 最多可以配置6個時間範圍. 每一個時間範圍之間用符號"|"分開. 例如, "01/11/2004 11:00 - 02/11/2004 12:00 | 03/21/2004 - 04/21/2005 | Mon - Tus | Wed 20:04 - Fri 20:04 | 01:00 -21:00". 另外開始和結束時間必須對稱,象"01/11/2004 11:00 - 02/11/2004"這樣的表示是不正確的,必須將結束時間的小時和分鐘補上 |
| deny_ftp_commands | varchar(128) | 禁止用戶運行的FTP命令,支持的命令有: "LIST, PASV, PORT, RETR, CWD, CDUP, STOR, DELE, REST, ABOR, SIZE, APPE, MKD, RMD, RNFR, RNTO, SYST, HELP, NLIST, NOOP". 不同命令之間用符號"|"分開 |
| files_allow_access | varchar(255) | 允許用戶訪問的一個或多個文件,用戶將只能訪問和看到放在這一項�堛漱憟鞳A他將無法訪問和看到不在這一項�堛漕銗L文件。文件名可以用 Unix shell類型的匹配字符來表示某些類型的文件。文件名之間用符號"|"分開。如"*.exe|*.txt" 表示用戶只能看到和訪問".exe",".txt"為後綴的文件。如果這一項為空,它將不會對用戶能夠訪問的文件產生影響。 |
| files_deny_access | varchar(255) | 禁止用戶訪問的一個或多個文件,用戶將不能訪問和看到放在這一項�堛漱憟鞳A他可以訪問和看到不在這一項�堛漕銗L文件。文件名可以用Unix shell類型的匹配字符來表示某些類型的文件。文件名之間用符號"|"分開。如"*.exe|*.txt"表示用戶不能看到和訪問".exe",".txt"為後綴的文件。如果這一項為空,它將不會對用戶不能夠訪問的文件產生影響。 |
| send_socket_buffer | integer | 虛擬服務器用來發送數據到FTP客戶的Socket緩存大小。單位是KB, 0(默認值)等於使用32KB作為socket緩存。增大發送Socket緩存,通常會帶來客戶端下載速度的提高,尤其在G兆以太網�堙C |
| recv_socket_buffer | integer | 虛擬服務器用來從FTP客戶接收數據的Socket緩存大小, 單位是KB. 0(默認值)等於使用32KB作為socket緩存。增大接受Socket緩存,通常會帶來客戶端上傳速度的提高 |
virtual_path_table 虛擬目錄表結構
| 數據庫列名 | 數據類型 | 描述 |
| virtual_path_index | integer | virtual_path_index值是用來索引虛擬目錄. |
| virtual_path | varchar(255) | 虛擬目錄名字. |
| real_path | varchar(255) | 和虛擬目錄關聯的真實目錄. 參數%username%可以用於real path. %username%將會被替換成實際登錄的用戶名. 如果用戶登錄時real path不存在, Xlight FTP服務器將會自動創建目錄. |
| permission | varchar(10) | 虛擬目錄權限. L - 列目錄; R - 讀; S -包含子目錄; C- 創建 W- 寫; A - 附加; D - 刪除, N -更名; 例如,如果你需要給用戶"讀,寫,列目錄和包含子目錄"的權利, 你需要在在這一項中放"LRSW-----" |