Xlight FTP 服务器 帮助文档

ODBC 数据库表结构

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_idintegerhost_id 用于区分不同的机器
host_portintegerhost_port 区分同一台机器上的不同的FTP虚拟服务器
usernamevarchar(64)用户名长度:1-64 字节
passwordvarchar(64)用户密码长度:1-64字节; 它可以是明码,也可以是密码的32字节MD5字符串值
no_passwordinteger0(默认值)=需要密码; 1=不需要密码
home_pathvarchar(255)Xlight FTP服务器每个用户的主目录是从"/"开始,这里需要填入用户的主目录"/" 所对应的实际DOS目录
home_permvarchar(10)用户的主目录"/"的权限限制. L - 列目录; R - 读; S -包含子目录; C- 创建 W- 写; A - 附加; D - 删除, N -更名; 例如,如果你需要给用户"读,写,列目录和包含子目录"的权利, 你需要在在这一项中放"LRSW-----"
groupnamevarchar(64)组名长度: 1- 64 字节
expire_timevarchar(24)这个用户的帐号过期时间. 格式="yyyy-mm-dd hh:mm:ss" ,其中yyyy-mm-dd是数字"year-month-day" hh:mm:ss 是数字"hour-minute-second". 如果用户帐号没有过期时间,这一项可以空着不填. 注意hour是24小时的表示方法
hide_pub_pathinteger0(默认值)=显示公共虚拟目录; 1=隐藏公共虚拟目录
hide_grp_pathinteger0(默认值)=显示组虚拟目录; 1=隐藏组虚拟目录
enable_quotasinteger0(默认值)=不使用用户的硬盘配额; 1=使用用户的硬盘配额
enable_ratiosinteger0(默认值)=不使用上传/下载比例; 1=使用上传/下载比例
freeze_userinteger0(默认值)=正常用户; 1=这个用户被冻结(禁止)
bypass_svr_maxinteger0(默认值)=受虚拟服务器最大用户数的限制; 1=忽略虚拟服务器最大用户数的限制
virtual_path_indexesvarchar(255)它链接到"virtual_path_table"表的"virtual_path_index"列. 如果它包含多个"virtual_path_index", 它们之间必须通过","(逗号)分隔.
param_indexinteger这个值索引参数表的用户参数模板,只要他们的参数相同,不同用户可以使用相同参数模板索引值


acct_param_table 参数表结构

数据库列名数据类型描述
param_indexinteger它是不同用户参数模板的索引值
max_down_speedinteger用户最大下载速度(Kbps). 0(默认值)=不限用户下载速度
max_up_speedinteger用户最大上传速度(Kbps). 0(默认值)=不限用户下载速度
max_user_conninteger用户最大同时连接数. 0(默认值)=不限用户同时连接数
max_conn_per_ipinteger用户最大单IP同时连接数. 0(默认值)=不限用户单IP同时连接数
max_session_timeinteger用户每次会话最大持续时间. 0(默认值)=不限用户会话持续时间
max_down_file_numinteger用户每次会话能够下载的文件个数. 0(默认值)=不限用户会话下载的文件个数
max_up_file_numinteger用户每次会话能够上传的文件个数. 0(默认值)=不限用户会话上传的文件个数
max_session_downinteger用户每次会话允许下载的总流量(MB). 0(默认值)=不限用户每次会话下载的总流量
max_session_upinteger用户每次会话允许上传的总流量(MB). 0(默认值)=不限用户每次会话上传的总流量
max_down_file_sizeinteger用户每次会话允许下载的最大文件大小(MB). 0(默认值)=不限用户用户下载的最大文件大小
max_up_file_sizeinteger用户每次会话允许上传的最大文件大小(MB). 0(默认值)=不限用户用户上传的最大文件大小
disk_quotasinteger用户能够使用的最大硬盘空间
disk_quota_unitinteger磁盘配额单元. 提供的选项有: KB(默认值), MB
ratios_typeinteger0=根据KB,1=根据文件
download_ratiosinteger下载比例值; 它是上传/下载比例的后半部分值,需要同时和下面的上传比例值一起使用,以形成完整的上传/下载比例对
upload_ratiosinteger上传比例值; 它是上传/下载比例的前半部分值,需要同时和上面的下载比例值一起使用,以形成完整的上传/下载比例对
starting_creditinteger用户上传/下载比例的初始额度
ftp_cmd_speedinteger用户登录后FTP命令执行速度. 0-1000, 0(默认值)=用户使用虚拟服务器的FTP命令执行速度
allowed_login_ipvarchar(255)用户登录控制允许登录的用户IP地址范围. 参数格式:ip地址/子网掩码; 最多可以配置6个地址范围. 每一个地址范围之间用符号"|"分开. 例如: "192.168.252.1/255.255.255.0|202.96.3.1/255.255.255.0".
denied_login_ipvarchar(255)用户登录控制允许登录的用户IP地址范围. 参数格式:ip地址/子网掩码; 最多可以配置6个地址范围. 每一个地址范围之间用符号"|"分开. 例如: "192.168.252.1/255.255.255.0|202.96.3.1/255.255.255.0"
allowed_login_timevarchar(255)用户登录控制允许登录的用户时间. 参数格式:"开始时间 - 结束时间", 其中"开始时间"和"结束时间"的格式:"mon/day/year hour:minute" 或 "weekday hour:minute". 请注意这里最小的单位是分钟,不是秒;注意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_commandsvarchar(128)禁止用户运行的FTP命令,支持的命令有: "LIST, PASV, PORT, RETR, CWD, CDUP, STOR, DELE, REST, ABOR, SIZE, APPE, MKD, RMD, RNFR, RNTO, SYST, HELP, NLIST, NOOP". 不同命令之间用符号"|"分开
files_allow_accessvarchar(255)允许用户访问的一个或多个文件,用户将只能访问和看到放在这一项里的文件,他将无法访问和看到不在这一项里的其他文件。文件名可以用 Unix shell类型的匹配字符来表示某些类型的文件。文件名之间用符号"|"分开。如"*.exe|*.txt" 表示用户只能看到和访问".exe",".txt"为后缀的文件。如果这一项为空,它将不会对用户能够访问的文件产生影响。
files_deny_accessvarchar(255)禁止用户访问的一个或多个文件,用户将不能访问和看到放在这一项里的文件,他可以访问和看到不在这一项里的其他文件。文件名可以用Unix shell类型的匹配字符来表示某些类型的文件。文件名之间用符号"|"分开。如"*.exe|*.txt"表示用户不能看到和访问".exe",".txt"为后缀的文件。如果这一项为空,它将不会对用户不能够访问的文件产生影响。
send_socket_bufferinteger 虚拟服务器用来发送数据到FTP客户的Socket缓存大小。单位是KB, 0(默认值)等于使用32KB作为socket缓存。增大发送Socket缓存,通常会带来客户端下载速度的提高,尤其在G兆以太网里。
recv_socket_bufferinteger 虚拟服务器用来从FTP客户接收数据的Socket缓存大小, 单位是KB. 0(默认值)等于使用32KB作为socket缓存。增大接受Socket缓存,通常会带来客户端上传速度的提高

virtual_path_table 虚拟目录表结构

数据库列名数据类型描述
virtual_path_indexintegervirtual_path_index值是用来索引虚拟目录.
virtual_pathvarchar(255)虚拟目录名字.
real_pathvarchar(255)和虚拟目录关联的真实目录. 参数%username%可以用于real path. %username%将会被替换成实际登录的用户名. 如果用户登录时real path不存在, Xlight FTP服务器将会自动创建目录.
permissionvarchar(10)虚拟目录权限. L - 列目录; R - 读; S -包含子目录; C- 创建 W- 写; A - 附加; D - 删除, N -更名; 例如,如果你需要给用户"读,写,列目录和包含子目录"的权利, 你需要在在这一项中放"LRSW-----"