程序主窗口

工具栏按键

创建新的虚拟服务器

删除虚拟服务器

修改虚拟服务器选项

用户列表（创建，复制，删除用户，修改用 户配置）

组列表（创建，复制，删除组，修改组配置）
用户连接细节
全局选项 （服务器带宽，防火墙，远程管理设置，SSL证书，ODBC数据库，服务器日志）
服务器帮助
输入注册信息，察看Xlight版本号

虚拟服务器控制按键

启动所有的虚拟服务器

停止所有的虚拟服务器

启动所选择的虚拟服务器

停止所选择的虚拟服务器

暂停所选择的虚拟服务器 （服务器被暂停后不再接受新用户登录，但已经登录用户依然正常工作）

其他按键

在线的远程管理员 （只显示以远程管理界面客户端登录的用户）

服务器FTP和错误日志的屏幕显示

服务器网卡IP （注意：对有IPv6地址的网卡，Link Local地址不显示。Window 2000，由于IPv6支持不完整，不能显示任何网卡的IPv6地址）


虚拟服务器配置 - 通用

虚拟服务器

服务器IP和端口 - 修改虚拟服务器的IP和端口，或者禁用虚拟服务器。

启用虚拟服务器SSL功能 - 虚拟服务器使用SSL加密 （注意: 在使用SSL功能之前，必须在全局选项里，创建并选择一个有效的服务器证书)。

显 示SSL - Explicit SSL 模式，服务器控制端口默认处于不加密状态，FTP客户通过AUTH TLS或AUTH SSL命令请求，并和服务器协商控制和 数据连接的SSL加密传输。

隐 式SSL - Implicit SSL 模式，服务器控制端口默认处于SSL加密状态，只有支持SSL的FTP客户才能够连接。

要求客户证书 - 支持SSL客户端认证，FTP客户端必须发送有效的X.509客户端证书给FTP服务器, 才能通过鉴权。

启用外部用户鉴权 - 用户数据在外部数据库里，用户登录服务器时，密码认证和用户设置信息都从外部数据库读取。

在错误日志显示调试跟踪信息 - 当外部用户鉴权启用后, 在Xlight FTP 服务器的错误日志中显示调试跟踪信息. 这个选项可以跟踪外部用户鉴权的问题, 以用来帮助设置外部用户鉴权.

默认的用户设置 - 这个链接有关于设置用户默认设置的详细说明.

鉴权类型 - 支持ODBC, LDAP和活动目录(Active Directory)。

ODBC - 使用外部数据库通过ODBC连接来鉴权和获取用户设置

查 询超时 - 检查数据库的超时时间，0(默认值)=90秒。

忽 略"host_id"列 - 查询数据库的"acct_table"表时，忽略"host_id"列。因为位于不同机器的服务器可以通过设置不同的"host_id"来识别，忽略 host_id列后，虚拟服务器可以共享其他机器的用户配置。

忽 略"host_port"列 - 查询用户数据库的"acct_table"表时，忽略表中"host_port"列。因为同一机器的不同虚拟服务器有不同的端口，忽略 "host_port"列后，同一机器的不同虚拟服务器之间可以共享用户配置。

只 检查用户名和密码 - 只用数据库的"acct_table"表验证登录用户密码，但并不从数据库读取用户设置，用户设置从本地FTP服务器内的同名的用户配置中获得。

密 码类型 - 存贮在数据库中的用户密码类型， 密码可以是(md5)，或纯文本(text)。

通过ODBC方式鉴权和获取用户设置的方法可以参考链接

活动目录(Active Directory) - 使用活动目录来鉴权用户和获取用户设置(主目录)。如果不使用xlightFTPdUser扩展Schema, 活动目录里可以设置的只有用户主目录(homeDirectory, user object class属性)一项。当用户使用活动目录设置的主目录，用户的目录访问权限遵从这个目录的NTFS设置

登录域 - 用户登录到的域。

搜索用户的起始DN - 用于搜索用户的起始DN。如果用户不位于设置的起始DN之下, 用户的鉴权将失败。如果起始DN为空, FTP服务器将只检查用户名和密码于整个活动目录域.

只检查用户名和密码 - 只用活动目录验证登录用户名和密码，但并不使用活动目录中的用户主目录(homeDirectory)设置。用户设置从本地同名用户配置中获得。

兼容IIS FTP活动目录用户隔离模式 - 当这个选项被选中后, Xlight FTP服务器提供了一个和IIS FTP服务器 6.0引入的活动目录用户隔离模式兼容的方式. Xlight FTP服务器将会读取并使用IIS FTP 活动目录的属性 msIIS-FTPRoot和msIIS-FTPDir, 用它作为用户的主目录. 如果这两个IIS FTP的属性在活动目录里没有被设置或不存在, 活动目录属性homeDirectory 将会自动被用做主目录.

在用户主目录使用NTFS权限 - 当这个选项被选中后,Xlight FTP服务器将模拟登录FTP用户的活动目录账户. 他的主目录访问将受到这个用户NTFS权限的限制. 如果这个选项没有被选中,Xlight FTP服务器的系统账户或当前登录并运行Xlight FTP服务器的账户将被用来访问所有用户的主目录. 注意: 选择这个选项后,不要将FTP服务器和主域控制器共享同一台服务器,否则需要在主域控制器进行特殊设置,才能访问用户主目录.

在公共目录使用NTFS权限 - 当这个选项被选中后,Xlight FTP服务器将模拟用户的AD(活动目录)账户.公共目录访问将检查每个AD用户的NTFS权限. 基于NTFS权限给予公共目录更多的权限控制灵活性，它将取代公共目录的本地FTP权限.

在组目录使用NTFS权限 - 当这个选项被选中后,Xlight FTP服务器将模拟用户的AD(活动目录)账户.组目录访问将检查每个AD用户的NTFS权限. 当用户登录到活动目录, 如果这个用户在AD里被设置了Primary组, 它将成为这个用户的FTP组. 如果使用扩展模板"xlightFTPdUser"并且其中设置了ftpGroupName, 它将取代AD里设置的组.

使用扩展模版 "xlightFTPdUser" - 使用Xlight FTP服务器的扩展Schema. 用于扩展活动目录的Schema文件可以在Xlight FTP服务器的安装目录下的LDAP目录里找到.

通过活动目录方式鉴权和获取用户设置的方法可以参考链接

LDAP - 使用外部LDAP服务器来鉴权用户和获取用户设置(主目录)。如果不使用xlightFTPdUser扩展Schema, 外部LDAP服务器里可以设置的只有用户主目录(homeDirectory, Object Class POSIX中的属性)一项。用户名LDAP服务器中Obejct Class inetOrgPerson的属性uid获得. 密码是保存在LDAP服务器内的用户密码.

LDAP 服务器 - LDAP服务器的IP地址或域名。

端口 - LDAP服务器的端口。

使用SSL/TLS连接 - 如果LDAP服务器要求使用SSL/TLS连接,你可以使用这个选项.

绑定DN (Bind DN) - LDAP服务器的绑定DN。当LDAP服务器禁止匿名绑定时,或匿名绑定没有足够访问权限时,你才需要指定绑定DN和绑定密码.

绑定密码 (Bind Password) - LDAP服务器的绑定密码。当LDAP服务器禁止匿名绑定时,或匿名绑定没有足够访问权限时,你才需要指定绑定DN和绑定密码.

匿名绑定 - 在LDAP服务器使用匿名绑定.绝大部分LDAP服务器默认都支持匿名绑定.

搜索用户的起始DN - 用于搜索用户的起始DN。如果你知道确切的用户搜索的起始DN，可以比从域的根DN开始搜索，有更快的用户搜索速度。

只检查用户名和密码 - 只用LDAP服务器验证登录用户名和密码，但并不使用LDAP服务器中的用户主目录(homeDirectory, Object Class POSIX中的属性)。用户设置从FTP服务器内的同名的用户配置中获得。

使用扩展模版 "xlightFTPdUser" - 使用Xlight FTP服务器的扩展Schema. 用于扩展LDAP的Schema文件可以在Xlight FTP服务器的安装目录下的LDAP目录里找到.

通过LDAP方式鉴权和获取用户设置的方法可以参考链接

服务器带宽

限制虚拟服务器所使用的带宽，单位是(KB/s)。

最大下载带宽 - 限制虚拟服务器的下载带宽，0(默认值)，等于不限制带宽。

最大上传带宽 - 限制虚拟服务器的上传带宽，0(默认值)，等于不限制带宽。

根据IP地址范围设置带宽 - 根据用户的IP地址范围设置虚拟服务器的下载和上传带宽. 当用户IP地址匹配这里设置的IP地址范围之一,它设置的带宽将会替代上面的虚拟服务器默认带宽. 这个选项允许你根据用户的IP范围, 设置不同的服务器带宽. 你可以有三种方法设置IP地址范围. 1. 通配符*, 通配符只能用来表示完整的地址段,如192.168.0.1 - 192.168.0.255, 你可以用通配符192.168.0.*表示. 2. 直接设置IP地址范围, 如192.168.1.15 - 192.168.1.45. 3. 子网掩码. 如192.168.0.1/24, 或192.168.0.1/255.255.255.0

服务器连接限制

限制虚拟服务器的连接数。

最 大在线用户数 - 限制虚拟服务器的在线用户总数，0(默认值)，等于不限制在线用户总数。

相 同IP最 大连接数 - 来自相同IP地址的用户允许的连接数，0(默认值)，等于不限制IP连接数。

用户空闲时间

限制服务器内用户的空闲时间（用户没有FTP命令请求以及文件上传下载的时间），超过空闲时间的用户连接会被自动断开。

用 户最大空闲时间 - 限制服务器内所有用户的最大空闲时间，0(默认值)，等于不限制最大空闲时间。

启 用防空闲策略 - 很多FTP客户在空闲时，通过不断发送NOOP等FTP命令，让服务器误以为它不在空闲状态。启用防空闲策略后，服务器会用比较严格的方法计算用户空闲时 间，有效 防止这种情况发生。


虚拟服务器配置 - 高级

服务器信息

标志信息文件 - 配置用户登录前看到的服务器标志信息的文本文件, 这个文件最大不超过1024比特。

欢迎信息文件 - 配置用户登录后看到的服务器欢迎信息的文本文件, 这个文件最大不超过1024比特。

FTP服务器就绪信息 - 用于替换用户登录后看到的"220 服务器就绪"消息。

显示目录信息 - -启用这个选项后，当用户进入包含_msg.txt文件的目录时，服务器会将_msg.txt文件的内容作为目录信息发送给这个用户。

虚拟服务器参数

%maxusers -这个虚拟服务器允许的最大用户数.
%curusers - 这个虚拟服务器当前在线用户数.
%totaldown - 这个虚拟服务器当前下载的总比特数.
%totalup - 这个虚拟服务器当前上传的总比特数.
%s_idle_timeout - 虚拟服务器用户的最大空闲(idle)时间.
%s_down_bw_limit - 这个虚拟服务器的下载带宽限制.
%s_up_bw_limit - 这个虚拟服务器的上传带宽限制.
%downfiles - 这个虚拟服务器当前下载的总文件数.
%upfiles - 这个虚拟服务器当前上传的总文件数.
%avg_downspd - 这个虚拟服务器的平均下载速度.
%avg_upspd - 这个虚拟服务器所谓平均上传速度.
%time - 虚拟服务器当前时间.
%date - 虚拟服务器当前日期.
%runtime - 这个虚拟服务器启动后已经运行的时间.
%logins_sum - 这个虚拟服务器启动后登录的总用户数.
%login_per_ip - 这个虚拟服务器单IP登录限制值.

FTP服务器参数

%max_down_bw - FTP服务器的下载带宽限制.
%max_up_bw - FTP服务器的上传带宽限制.
%cur_down_bw - FTP服务器当前使用的下载带宽.
%cur_up_bw - FTP服务器当前使用的上传带宽.
%cur_dl_users - 当前正在下载文件的用户数.
%cur_ul_users - 当前正在上传文件的用户数.
%diskfree<> - 硬盘的剩余空间(单位MB)，例如"%diskfree<C>"将显示C盘的剩余空间

用户参数

%u_downspd - 这个用户的下载速度限制.
%u_upspd - 这个用户的上传速度限制.
%clientip - 显示用户的IP地址.
%idle_timeout - 这个用户的最大空闲(idle)时间.
%max_sess_tm - 这个用户Session允许的最大持续时间.
%max_dl_fsize - 这个用户允许下载的单个文件最大尺寸(MB).
%max_ul_fsize - 这个用户允许上传的单个文件最大尺寸(MB).
%max_sess_dl - 这个用户Session允许的最大下载总量(MB).
%max_sess_ul - 这个用户Session允许的最大上传总量(MB).
%u_totaldown - 这个用户当前的总下载量.
%u_totalup - 这个用户当前的总上传量.
%u_conns_per_ip - 这个用户IP连接数限制.
%username - 用户名.

Socket缓存大小

发送数据的缓存 - 虚拟服务器用来发送数据到FTP客户的Socket缓存大小, 单位是KB. 0(默认值)等于使用32KB作为socket缓存。增大发送Socket缓存,通常会带来客户端下载速度 的提高，尤其在G兆以太网里。但要注意,Socket缓存使用内核不可分页内存，在32位的Windows里，系统最大可用不可分页内存是256M. 如果你的服务器有非常多的用户在同时下载，最好不要用太大的发送Socket缓存. 默认32KB的Socket缓存已经可以提供很好的服务器吞吐量，当然使用64KB，128KB，256KB的Socket缓存通常会带来更明显的性能提 升. 具体多大的Socket缓存适合你的服务器，可能你需要自己试验。

接受数据的缓存 - 虚拟服务器用来从FTP客户接收数据的Socket缓存大小, 单位是KB. 0(默认值)等于使用32KB作为socket缓存。增大接受Socket缓存，通常会带来客户端上传速度的提高。

编码

启用UTF8编码 对FTP会话启用UTF8编码。 注意微软的IE浏览器内置FTP客户端对UFT8中文编码支持不好。如果你希望使用IE浏览器内置的FTP客户端，最好不要启用UTF8编码。

压缩

允许文件传输使用 MODE Z 模式 允许文件传输使用 MODE Z 模式, 某些FTP客户支持MODE Z功能。 MODE Z 能够实时压缩被传输的文件，但使用这个功能也会带来较高的服务器CPU占有率。

事件通知

启用电子邮件通知 使用FTP服务器的电子邮件通知功能,通知系统管理员或其他用户FTP服务器发生的事件. 支持的事件包括硬盘空间不足,文件上传,文件下载,文件删除. 设置电子邮件通知的方法可以参考链接。

服务器统计记录

将统计记录写入文件

统计记录更新间隔 - 以秒为单位的统计记录更新间隔，如果是默认值0，统计记录是每秒被更新.

统计记录文件名 - 统计记录文件名.

杂项

允许用户使用"SITE PSWD"命令更改密码 - 启用这个选项后，用户可以通过FTP客户端，使用"SITE PSWD"更改他的密码（这个功能要求FTP客户端支持输入自定义命令，绝大部分图形界面的FTP客户端支持这个功能。但注意有些常用的FTP客户端不支持，象IE和Window自带的命令行FTP客户端）

PASV模式IP选项 - 用于设置PASV模式服务器响应的IP地址.

当FTP服务器位于NAT或宽带路由器后, 它会使用内部私有IP地址. 如果内部私有IP地址内置在PASV模式的服务器响应里, 来自外面的用户将不能建立和服务器的数据通道以传输文件. 因为路由器广域网接口有一个公共IP, 为了允许外部用户建立和服务器的数据通道以传输文件，Xlight全局选项里的 固定WAN IP或WAN域名需要设置. 当WAN IP设置后，虚拟服务器会自动决定什么IP放置在PASV模式的响应里. 如果用户的IP和服务器IP位于相同C类子网, 在PASV模式的响应里它将使用服务器IP, 否则将使用广域网的IP地址, 响应客户的PASV命令请求. 但你可以使用下面两个选项改变上面默认的行为.

PASV模式响应总是使用服务器IP 在某些情形, 不是所有的虚拟服务器都是为外部用户, 某些只是为内部使用. 因为内部用户使用私有IP并能够直接访问服务器的私有IP, 但他们的IP不位于服务器的C类子网内. 当这个选项被选中, 虚拟服务器将一直使用服务器的IP用于PASV模式的响应.

PASV模式响应总是使用广域网IP - 这和"PASV模式响应总是使用服务器IP"的选项正好相反. 虚拟服务器将一直使用WAN IP用于PASV模式的响应, 即使用户来自和服务器IP相同的C类子网.


虚拟服务器配置 - 公共目录

公共目录

公共目录是那些可以被所有用户看到和访问的虚拟目录（从Xlight 2.0开始，所有用户默认都可以访问公共目录，如果你不想让某些用户访问公共目录，你可以在这个用户的设置中，关掉他的公共目录访问权限）

权限 - 配置公共目录的访问权限，这个权限是由所有能访问公共目录的用户所共享。

读(下 载) - 用户允许从这个虚拟目录下载文件的权限。

写(上 传) - 用户允许向这个虚拟目录上传文件的权限。

创 建目录 - 用户允许在这个虚拟目录里创建新目录的权限。

更 名 - 用户允许在这个虚拟目录里更改文件和目录名字的权限。

列 目录 - 用户允许从这个虚拟目录获得目录内文件列表的权限。

附 加（上传续传）- 用户允许在这个虚拟目录里续传文件(APPEND)的权限。

删 除 - 用户允许在这个虚拟目录里删除文件和目录的权限。

权 限范围包括所有子目录 - 虚拟目录设置的访问权限将同时应用到它的所有子目录。

UNC路径账号身份模拟 - 具体的解释在这里

磁盘空间配额

启用磁盘空间配额 - 对公共虚拟目录启用磁盘空间配额，这个配额只包括公共虚拟目录对应的实际目录及其子目录所占用的硬盘空间。

最大允许磁盘空间 - 在公共虚拟目录里，超过这个限制后文件上传将不被允许。


虚拟服务器配置 - 文件和目录

目录列表选项

隐藏具有隐性属性的文件和目录 - 启用这个选项后，服务器不会在生成的文件列表中显示具有隐藏属性的文件和目录。

文件列表使用小写字母 - 启用这个选项后，当服务器生成的文件列表时，服务器会将文件名的大写英文字母换成小写字母。

NLIST同时显示目录和文件名 - 这个选项只是用来和某些不遵守FTP标准的客户端兼容（如Dreamwaver内置的FTP客户端），这些客户端要求NLIST命令同时返回文件名和目录名。

使用Netware FTP服务器输出格式显示目录列表 - Netware FTP服务器使用特殊的目录列表格式. 这个选项用于以Netware FTP服务器的特殊列表格式输出目录列表.

文件传输选项

自动删除上传失败的文件 - 启用这个选项后，服务器会自动删除上传失败的文件。

文件上传SFV检查 - 启用这个选项后, 当上传文件之前,你需要首先上传".sfv"为后缀的文件，其中包含要上传文件的CRC32信息。服务器将会自动对上传文件计算CRC32，如果CRC32值不正确,，文件将自动被更名为".bad"文件。 当正确文件上传后相应的".bad"文件会被自动删除。如果在上传目录里有超过1个的".sfv"后缀的文件，服务器会在其中自动寻找和上传文件名对应的CRC32值,每个目录最多可以有5个".sfv"后缀的文件。

文本文件传输禁用ASCII模式 - 启用这个选项后，服务器在上传和下载ASCII文件时将不做ASCII模式转换。

允许下载正在被另一个进程占用写入的文件 - 启用这个选项后，服务器将允许用户下载被其他进程占用写入的文件（下载的文件很可能是不完整的）。这个选项可以用于一些特殊用途，如下载正在被其他进程使用的网站日志文件

其他选项

基于对一个文件的动作执行程序 - 当一个文件被上传,下载或删除后执行外部程序. 你可以将变量做为命令行参数传给外部程序. 下面是支持的变量, 它们将在外部程序被调用后替换成实际的值:

$username - 对一个文件执行动作的用户名.
$user_ip - 对一个文件执行动作的用户IP地址.
$ftp_path - 被执行动作文件的FTP虚拟路径.
$real_path - 被执行动作文件的实际WIndows路径. $real_path里包含Windows路径结尾字符"\", 因此和文件名结合使用时你不需要额外的"\".
$filename - 被执行动作文件的名字.
$filesize - 被执行动作文件的大小, 数值以比特(BYTE)为单位.
$status - 对一个文件执行动作的结果, 值会是"success"或"fail".

当一个文件被上传后执行这个程序 - 当一个文件被上传后执行外部程序.

当一个文件被下载后执行这个程序 - 当一个文件被下载后执行外部程序.

当一个文件被删除后执行这个程序 - 当一个文件被删除后执行外部程序.

文件更名时覆盖已经存在的文件 - 文件更名时, 如果同名文件已经存在, 更名操作将会失败. 当这个选项被选中, 更名到已存在的同名文件将不会失败, 同名文件将被覆盖.

要检查FTP服务器实际传入脚本的参数值. 在Windows DOS批处理脚本里, 你可以写象这样的一行"echo %1 %2 %3 > c:\test.log", 这将会把脚本输入的前三个参数的实际值写到c:\test.log文件里. 你可以检查c:\test.log文件里内容，获知FTP服务器实际传入的参数值

访问控制列表

Xlight可以定义访问控制列表来控制服务器上的文件和目录的访问。有两种访问控制列表可以使用，一种用来隐藏/显示服务器上的文件和目录，一种用来控制对FTP服务器上文件和目录的FTP动作权限。

访问控制列表最大优点是可以灵活的控制文件目录，达到传统目录权限方式无法做到的效果。比如可以对匿名用户根据IP地址来源不同，显示不同内容。

"隐藏/显示"访问控制列表

通过使用"隐藏/显示"访问控制列表，FTP服务器可以按照你设计的方式隐藏和显示文件。 如果你不定义任何"隐藏/显示"控制列表，FTP服务器会显示所有服务器目录里的文件。

我们用一个简单的例子开始. 例如，你想要隐藏在FTP服务器的公共目录"/mydoc"中的所有文件和目录（包含/mydoc的子目录）。你应该如何定义"隐藏/显示"访问控制列表？

表一： 隐藏公共目录"/mydoc"中的所有文件和目录
类型 | 虚拟目录 | 目录类型 | 子目录 | 文件名 | 文件类型 | 用户名 | 组名 | 时间范围 | 客户IP
隐藏 | /mydoc | 公共目录 | 是 | 任意 | 任意 | 任意 | 任意 | 任意 | 任意

访问控制列表的定义如表一所示，类型=隐藏，虚拟目录=/mydoc，子目录=是，其他项是任意。

我们延伸上一个例子，如果想隐藏在"/mydoc"目录下所有以字母“a”开头的文件，你该 如何定义访问控制列表？

表二： 隐藏公共目录"/mydoc"中的所有字母“a”开头的文件
类型 | 虚拟目录 | 目录类型 | 子目录 | 文件名 | 文件类型 | 用户名 | 组名 | 时间范围 | 客户IP
隐藏 | /mydoc | 公共目录 | 是 | a* | 只包括文件 | 任意 | 任意 | 任意 | 任意

表二比表一的访问控制列表多了两项限制，文件名=a*，文件类型=只包括文件。

注意: 文件名是访问控制列表中唯一可以使用Unix shell类型的匹配字符来表示特定的文件名匹配. 支持的Unix shell类型的匹配字符如下.

匹配字符 | 含义
* | 匹配任意长度的所有字符
? | 匹配任意单个字符
[seq] | 匹配在seq内的字符
[!seq] | 匹配不在seq内的字符

我们继续延伸上一个例子，如果只是想对匿名（anonymous），用户隐藏在"/mydoc"目录下所有以字母& ldquo;a”开头的文件，你该 如何定义访问控制列表？

表三： 对匿名用户隐藏公共目录"/mydoc"中的所有字母“a”开头的文件
类型 | 虚拟目录 | 目录类型 | 子目录 | 文件名 | 文件类型 | 用户名 | 组名 | 时间范围 | 客户IP
隐藏 | /mydoc | 公共目录 | 是 | a* | 只包括文件 | anonymous | 任意 | 任意 | 任意

表三比表二又多了一项限制，用户名=anonymous。 表三访问控制列表作用的结果是，只有anonymous用户，在公共目录"/mydoc"下，看不 到字母“a”开头的文件，其他用户依然能看到这些文件。

你还可以进一步定义用户IP范围，访问时间，根据这些来 限制用户能否看到的文件，表四是一个根据用户IP范围，对匿名用户隐藏文件的例子。

表四： 对来自“202.96.33.1-202.96.33.25”的"anonymous"用户，在公共目录 里，隐藏 ".exe"为后缀的文件

类型 | 虚拟目录 | 目录类型 | 子目录 | 文件名 | 文件类型 | 用户名 | 组名 | 时间范围 | 客户IP
隐藏 | 任意 | 公共目录 | 是 | *.exe | 只包括文件 | anonymous | 任意 | 任意 | 202.96.33.1-202.96.33.25

注意: 对于访问控制列表, 用户名，组名，文件名和服务器目录名都是不区分大小写的。

"隐藏/显示"访问控制列表的高级应用

知道和利用访问控制列表的检查次序，可以帮助定义一些复杂的应用。访问控制列表的检查次序是，先检查所有的"隐藏控制列表"，然后再检 查所有的"显示控制 列表 "，所以控制列表排列次序对结果没有影响。因此如果你想只显示某些特定的文件，你需要首先隐藏所有的文件，然后再显示那些特定的文件。

下面的例子，将只显示/mydoc"目录中".exe"为后缀的文件。

类型 | 虚拟目录 | 目录类型 | 子目录 | 文件名 | 文件类型 | 用户名 | 组名 | 时间范围 | 客户IP
隐藏 | /mydoc | 公共目录 | 是 | 任意 | 只包括文件 | 任意 | 任意 | 任意 | 任意
显示 | /mydoc | 公共目录 | 是 | *.exe | 只包括文件 | 任意 | 任意 | 任意 | 任意

"禁止/允许"访问控制列表

"禁止/允许"规则用来控制用户对FTP服务器上的文件和目录的动作权限。它与"隐藏/显示"访问控制列表的定义方式类似。不同之处在 于它多了"用户动作"这一项。因为根据用户动作就可以知道针对的文件类型，所以它没有文件类型这一项。 下面是一些"禁止/允许"访问控制列表的例子

表一： 禁止用户在公共虚拟目录"/mydoc"和它的子目录中上传".exe"为后缀的文件
类型 | 虚拟目录 | 目录类型 | 子目录 | 文件名 | 用户动作 | 用户名 | 组名 | 时间范围 | 客户IP
禁止 | /mydoc | 公共目录 | 是 | *.exe | Upload | 任意 | 任意 | 任意 | 任意

表二： 禁止用户在公共虚拟目录"/mydoc"和它的子目录中删除，下载和更名".exe"为后缀的文件
类型 | 虚拟目录 | 目录类型 | 子目录 | 文件名 | 用户动作 | 用户名 | 组名 | 时间范围 | 客户IP
禁止 | /mydoc | 公共目录 | 是 | *.exe | Download|Delete|Rename | 任意 | 任意 | 任意 | 任意

表三： 禁止用户切换 目录到公共虚拟目录"/mydoc"和它的子目录
类型 | 虚拟目录 | 目录类型 | 子目录 | 文件名 | 用户动作 | 用户名 | 组名 | 时间范围 | 客户IP
禁止 | /mydoc | 公共目录 | 是 | 任意 | ChangeDir | 任意 | 任意 | 任意 | 任意


虚拟服务器配置 - 安全

SSL选项

强制匿名用户之外的所有用户使用SSL登录 - 当这个选项被选中, 匿名用户之外的所有用户必须切换到SSL模式才能登录. FTP服务器必须被配置使用显性或隐性SSL才能使用这个选项.

启用CCC(清空命令通道)命令 - CCC(清空命令通道)命令被用来反转FTP控制通道从SSL加密模式到不加密的明码模式. 反转到不加密的明码模式只是在用户认证完成后才执行, 因此用户的密码不是以明码方式发送的. 这个命令主要用于FTP服务器位于不能和FTP控制通道加密很好工作的某些防火墙后的情况.

控制用户FTP命令速度

用户登录前命令速度 - 对于每个FTP连接，服务器可以控制这个连接登录前每秒可以运行的FTP命令数。它的范围是0-1000， 0(默认值)等于登录前每秒可执行10条FTP命令。出于安全考虑，不要将用户命令速度值设的太高，公网FTP服务器要尽可能在用户感觉容忍的范围内设成 较低的值。登录前的连接很容易成为拒绝服务攻击的目标. 尽管防止用户Hammer连接的选项可以阻挡一些这样的攻击，但是稍微狡猾一些的攻击可以采用分布的方式进行，使得防止用户Hammer的功能无效。 降低用户登录前命令执行速度可以很大程度减弱这种攻击的危害。

用户登录后命令速度 - 对于每个FTP连接，服务器可以控制这个连接登录后每秒可以运行的FTP命令数。它的范围是0-1000. 0(默认值)等于登录后每秒可执行20条FTP命令。出于安全考虑，通常也这个不要将值设的太高。通常来说，对普通用户每秒能够执行10-20条FTP命 令已经足够了. 降低用户命令执行的速度能够减弱FTP搜索引擎和用户大量的FTP搜索行为对其他用户速度的影响。

检查控制和数据连接的用户IP

PORT命令,控制和数据连接必须来自相同的IP - 启用这个选项，会阻止\"FTP bounce\"攻击，但也会阻止FXP(site to site)传输。 接收到用户PORT命令后, 服务器要检查确保FTP数据和控制连接来自相同的IP地址。

PASV命令,控制和数据连接必须来自相同的IP - 启 用这个选项，会阻止FXP(site to site)传输。 接收到用户PASV命令后, 服务器要检查确保FTP数据和控制连接来自相同的IP地址。

IP地址自动禁止

对hammer连接的用户启用IP地址自动禁止访问 - 启用这个选项，服务器提供了一种自动防止外部拒绝服务攻击和已登录用户内部攻击的机制。

IP 地址自动禁止持续时间 - IP地址自动禁止访问持续的时间，这个值以秒为单位，范围0 －65535。 如果设置为0，等于关闭IP地址自动禁止功能。

当下面一个或多个IP地址自动禁止访问的条件满足时，用户将被 自动从FTP虚拟服务器上断开，并在上面定义的自动禁止持续时间内禁止访问这个虚拟服务器。

Hammer 连接 - 定义符合Hammer连接的条件. Hammer连接如果为0，这个功能将无效。

登 录失败次数 - 每个FTP连接上，允许的登录失败重试的次数，范围0-255， 当值为0时这个功能无效。

恶 意行为次数 - 每个FTP连接上(包括登录和未登录用户)，允许的恶意行为的次数， 范围0-255， 当值为0时这个功能无效。 下列行为被认为是恶意行为:

- 用户在登录前送出非USER和PASS的FTP命令或无效字 符串，即用户在登录前试图运行和登录不相关的指令。
- 用户在登录后发送超长字符串，命令或目录文件名，试图使FTP服务器缓冲区溢出。
- 用户试图删除他没有权限删除的文件。
- 用户试图删除他没有权限删除的目录。
- 用户试图在向他没有上传权限的目录上传文件。
- 用户试图更名他没有更名权限的文件和目录。
- 其他由FTP服务器认定的用户在服务器内部的恶意行为。

IP地址自动禁止的消息 - 如果设置了IP地址自动禁止的消息后, 当用户使用被自动禁止的IP连接时, FTP服务器将这个消息提供给用户, 连接在这个消息后会被自动断开. 如果没有设置IP地址自动禁止的消息, 当IP被自动禁止的用户连接时，连接会被自动断开, 但没有任何消息提供给用户.

IP地址禁止和允许列表

允许的IP地址 - 设置虚拟服务器允许访问的IP地址. 你可以用IP地址范围，或子网掩码来设置允许访问的IP地址。例如"202.44.56.1-32",或202.44.56.1/27 。
禁止的IP地址 - 设置虚拟服务器允许访问的IP地址. 你可以用IP地址范围，或子网掩码来设置禁止访问的IP地址。例如"202.44.56.1-32",或202.44.56.1/27 。

反盗链保护

作为系统管理员在你的网站提供文件下载和链接，你可能希望用户从你的主页上点击下载链接，因为这样他们能够在下载前，看到你主页上的广告。但是你会经常面对这样的情况，一些人复制了你的下载链接，并放到他们自己的网页上。这样导致了很多不是直接来自你的主页的下载请求，偷走了你的网站的大量带宽。在反盗链保护的帮助下，你可以阻止这种情况发生。

Xlight FTP 服务器提供了一个新的机制用于反盗链保护，FTP服务器会自动在所有FTP下载链接前加一段随机的路径. 例如，如果你原始的FTP下载链接是 "/public/download/test.txt", 经过反盗链保护后，FTP下载链接自动变为 "/xxxx/public/download/test.txt", 其中 "xxxx" 是FTP服务器自动生成的随机路径. Xlight FTP 服务器能够被配置成经过一段时间自动更改 "xxxx" 部分, 因此FTP下载链接 "/xxxx/public/download/test.txt" 也会自动变化. 偷盗的链接无法及时更新最顶端路径的 "xxxx" 部分, 盗链者就不能从FTP 服务器下载.

每当反盗链随机路径改变时，Xlight FTP 服务器能够被配置输出改变的随机路径部分到一个文件，或执行一个外部的程序，将随机路径 "xxxx" 作为第一个参数传递给这个外部程序. 在这两个方法的帮助下, 你可以使用你自己的cgi脚本或其他程序更新网站的下载链接.

Xlight FTP 服务器的xferlog里面, 随机路径的部分被自动移除, 因此反盗链保护不会影响服务器的下载统计结果.

启用文件路径防盗链保护 - 这个选项用于启用或关闭反盗链保护功能.

生成新的防盗链路径每（分钟） - 反盗链保护改变的时间周期。

防盗链路径改变后, 继续保持旧的路径有效时间 - 因为从反盗链随机路径改变到网站最终更新它的下载链接可能有一些延迟，如果某个用户恰好在这段时间点击网站的下载链接，他可能会去到旧的下载链接，而这个链接在FTP服务器已经失效。 Xlight FTP服务器有一个选项，你可以设置一段保护时间。在这段保护时间内，旧的下载链接和新的链接同时有效，这样在这段转换时间中，点击下载链接的用户就不会遇到失效链接的情况。确保这段时间不大过反盗链路径改变的时间周期.

从文件列表里隐藏防盗链路径 - 随机反盗链路径 "xxxx" 能够被从文件列表里隐藏, 因此没有人 (甚至之间访问FTP服务器服务器) 能够看到 "xxxx" 路径，除非直接从网站上点击下载链接。

更新防盗链路径改变到文件 - 每当反盗链随机路径改变时，Xlight FTP 服务器能够同时将改变的随机路径"xxxx"写到一个文件。因此外部程序能够定时读取这个文件并更新网站的下载链接

当防盗链路径改变, 执行程序 - 每当反盗链随机路径改变时，Xlight FTP 服务器能够执行一个外部的程序，将随机路径 "xxxx" 作为第一个参数传递给这个外部程序.


用户配置 - 账号

账号基本选项

用户名 - 登录进FTP服务器使用的用户名。

密码 - 这个用户是否有密码. 如果用户不要求密码登陆(匿名用户)，它显示为"不需要密码"，有密码显示为 “*******”。

账号过期时间

账 号将会过期于 - 启用这个帐号过期的时间，帐号过期后这个用户就不能登录了。

禁用这个账号 - 启用这个选项将禁止这个用户，这个用户不能登录到FTP服务器，但是用户的设置依然保留。

登录不需要密码 - 启用这个选项，用户输入任何密码都可以登录。这个选项主要对应于匿名用户。

组名 - 这个用户所附属的组名字。如果用户不属于任何组，就不需要组名。

账号其他选项

忽略服务器最大用户数 - 启用这个选项后, 这个用户将不受服务器最大用户数限制。

外部鉴权选项 - 这个用户的外部鉴权选项.

忽略外部用户鉴权 - 启用这个选项后, 这个本地的FTP用户将会忽略外部用户鉴权,而使用本地FTP鉴权. 同时他的设置也将来自本地FTP服务器.

通过外部鉴权只检查用户密码 - 启用这个选项后, 这个用户将只使用外部鉴权检查他的密码. 通过外部鉴权后, 他的设置将来自本地FTP服务器.


用户配置 - 选项

传输速度

最大下载速度 (KB/s) - 用户的最大下载速率, 0(默认值)等于不限下载速率，下载速率以KB/s为单位。

最大上传速度 (KB/s) - 用户的最大上传速率, 0(默认值)等于不限上传速率，上传速率以KB/s为单位。

连接数限制

单用户最大连接数 - 用户的最大同时连接数, 0(默认值)等于不限这个用户的最大连接数。

单IP最大连接数 - 用户使用相同IP地址连接，被允许的最大同时连接。 0(默认值)等于不限这个用户的单IP最大连接数。

公共和组虚拟目录

对这个用户隐藏公共虚拟目录 - 启用这个选项后，这个用户将看不到公共虚拟目录。

对这个用户隐藏组虚拟目录 - 启用这个选项后，这个用户将看不到他附属组的虚拟目录。

Socket缓存大小

发送数据的缓存 - 虚拟服务器用来发送数据到FTP客户的Socket缓存大小, 单位是KB. 0(默认值)等于使用32KB作为socket缓存。增大发送Socket缓存,通常会带来客户端下载速度 的提高，尤其在G兆以太网里。但要注意,Socket缓存使用内核不可分页内存，在32位的Windows里，系统最大可用不可分页内存是256M. 如果你的服务器有非常多的用户在同时下载，最好不要用太大的发送Socket缓存. 默认32KB的Socket缓存已经可以提供很好的服务器吞吐量，当然使用64KB，128KB，256KB的Socket缓存通常会带来更明显的性能提 升. 具体多大的Socket缓存适合你的服务器，可能你需要自己试验。

接受数据的缓存 - 虚拟服务器用来从FTP客户接收数据的Socket缓存大小, 单位是KB. 0(默认值)等于使用32KB作为socket缓存。增大接受Socket缓存，通常会带来客户端上传速度的提高。

杂项

FTP命令速度 - 这个用户登录后每秒可以运行的FTP命令数。它的范围是0-1000。0(默认值) 等于用户使用虚拟服务器的"安全"选项中所定义的"用户登录后的命令速度"。

最大用户空闲时间 - 用户的最大空闲时间(单位秒). 如果最大空闲时间是非零值, 对这个用户, 它将取代虚拟服务器"通用"里设定的用户空闲时间。


用户配置 - 会话期

会话持续时间

会话最大持续时间 - 用户会话最大持续时间(以秒为单位) ，0(默认值)等于不限用户会话时间。会话只在用户空闲时过期, 即用户的状态，既不正在下载文件也不正在上传文件。 所以用户会话过期不会中断文件下载和上传. 会话过期后用户将被从服务器上断开。

会话上传/下载流量限制

每次会话下载流量限制 (MB) - 用户每次会话允许的最大下载总量(以MB为单位), 0(默认值)等于不限下载总量。

每次会话上传流量限制 (MB) - 用户每次会话允许的最大上传总量(以MB为单位), 0(默认值)等于不限上传总量。

会话上传/下载文件大小限制

会话下载允许的最大文件尺寸 (MB) - 会话允许下载的最大单个文件大小(以MB为单位), 0(默认值)等于不限文件大小。

会话上传允许的最大文件尺寸 (MB) - 会话允许上传的最大单个文件大小(以MB为单位), 0(默认值)等于不限文件大小。

会话上传/下载文件个数

允许下载的文件个数 - 用户每次会话允许的最大下载文件个数, 0(默认值)等于不限下载文件个数。

允许上传的文件个数 - 用户每次会话允许的最大上传文件个数, 0(默认值)等于不限上传文件个数。

会话上传/下载文件个数

启用上传/下载比例 - 对这个用户启用上传下载比例。

比 例类型

根据文件 -以文件数量为单位的上传下载比例。

根据KB -以文件大小为单位(千比特)的上传下载比例。

初 始额度 - 用户的初始额度。


用户配置 - 用户目录

用户目录

用户目录是属于每个用户的虚拟目录。用户目录只能被这个用户自己看到，新用户默认有一个伪主目录"/". 这个伪主目录没有相对应的实 际目录，所以用户不能向其中上传文件。加新用户时，你可以为这个用户选择一个真实的主目录"/"，它将取代伪主目录"/". 你也可以保留伪主目录。而直 接在伪主目录之下添加虚拟目录。

注意：如果主目录"/"相对应的实际目录，在设置时还没有被创 建，FTP服务器将会在用户第一次登录时自动创建这个实际目录. 自动创建实际目录只对用户主目录"/"和ODBC数据库中的Home Path起作用, 其他虚拟目录对应的实际目录如果不存在，FTP服务器不会帮助自动创建。

权限 - 配置用户目录的访问权限。

读(下 载) - 用户允许从这个虚拟目录下载文件的权限。

写(上 传) - 用户允许向这个虚拟目录上传文件的权限。

创 建目录 - 用户允许在这个虚拟目录里创建新目录的权限。

更 名 - 用户允许在这个虚拟目录里更改文件和目录名字的权限。

列 目录 - 用户允许从这个虚拟目录获得目录内文件列表的权限。

附 加（上传续传）- 用户允许在这个虚拟目录里续传文件(APPEND)的权限。

删 除 - 用户允许在这个虚拟目录里删除文件和目录的权限。

权 限范围包括所有子目录 - 虚拟目录设置的访问权限将同时应用到它的所有子目录。

UNC路径账号身份模拟 - 具体的解释在这里

磁盘空间配额

启用磁盘空间配额 - 对用户虚拟目录启用磁盘空间配额，这个配额只包括用户虚拟目录对应的实际目录及其子目录所占用的硬盘空间。

最 大允许磁盘空间 - 在用户虚拟目录里，超过这个限制后文件上传将不被允许。


用户配置 - 登录控制

用户登录时间

用户登录时间 - 配置这个用户允许的登录时间范围，最多可以设置16个时间范围。如果用户登录时间没有设置，默认用户可以在所有时间登录。如果设置用户登录时间，这个用户只能在设置的时间范围内登录，其他时间不能登录。

用户登录IP范围

允许登录的IP范围 - 用户允许的登录IP连接范围，最多可以设置16个允许登录的IP连接范围。如果允许登录的IP没有设置，默认用户可以从所有IP登录。如果设置许的登录IP，这个用户只能从设置的IP范围登录，其他IP不能登录。

禁止登录的IP范围 - 用户禁止登录的IP连接范围，最多可以设置16个禁止登录的IP连接范围。如果禁止登录的IP没有设置，

服务器会同时检查允许登录和禁止登录的IP范围，以决定这个用户是否能登录。


用户配置 - 权限

文件访问控制

允许访问的文件 - 允许访问的文件列表用来控制用户能够访问和看到的文件。用户对允许访问列表中的文件存取权限，遵守文件所在虚拟目录的权限限制。对于不在允许列表里的文 件，尽管可能和允许访问列表中的文件存在与同一个目录里，用户将无法看到和访问。从用户角度，他并不知道那些不在列表里的文件存在。文件名可以用Unix shell类型的匹配字符来表示。举例来说允，如果允许访问的文件列表是"*.exe,*.txt"，用户将只能访问".exe"，".txt"为后缀的 文件。如果允许访问的文件列表为空，表示它将不会对用户能够访问的文件产生影响。

拒绝访问的文件 - 禁止访问的文件列表可以用来控制用户不能够访问和看到的文件。对于不在禁止列表里的文件，用户将可以看到和访问。从用户角度，他并不知道那些在禁止列表里 的文件存在。文件名可以用Unix shell类型的匹配字符来表示。如果禁止访问的文件列表为空，表示它将不会对用户能够访问的文件产生影响。

拒绝FTP命令

选择拒绝的FTP命令 - 选择拒绝这个用户执行的FTP命令。


组配置 - 选项

组选项

组名 - 组的名字。

组里用户最大总连接数 - 组中所有用户同时连接总数，0(默认值)等于不限最大组连接数。

组带宽

最大下载带宽 (KB/s) - 组的最大下载带宽(KB/s), 0(默认值)等于不限制下载带宽。

最大上传带宽 (KB/s) - 组的最大上传带宽(KB/s), 0(默认值)等于不限制上传带宽。


组配置 - 组目录

组目录

组目录是属于组里所有用户的虚拟目录。组目录只能由这个组里的用户看到。

权限 - 配置组目录的访问权限。

读(下 载) - 组里用户允许从这个虚拟目录下载文件的权限。

写(上 传) - 组里用户允许向这个虚拟目录上传文件的权限。

创 建目录 - 组里用户允许在这个虚拟目录里创建新目录的权限。

更 名 - 组里用户允许在这个虚拟目录里更改文件和目录名字的权限。

列 目录 - 组里用户允许从这个虚拟目录获得目录内文件列表的权限。

附 加（上传续传）- 组里用户允许在这个虚拟目录里续传文件(APPEND)的权限。

删 除 - 组里用户允许在这个虚拟目录里删除文件和目录的权限。

权 限范围包括所有子目录 - 虚拟目录设置的访问权限将同时应用到它的所有子目录。

UNC路径账号身份模拟 - 具体的解释在这里

磁盘空间配额

启用磁盘空间配额 - 对组虚拟目录启用磁盘空间配额，这个配额只包括组虚拟目录对应的实际目录及其子目录所占用的硬盘空间。

最 大允许磁盘空间 - 在组虚拟目录里，超过这个限制后文件上传将不被允许。


组配置 - 权限

文件访问控制

允许访问的文件 - 允许访问的文件列表用来控制组内用户能够访问和看到的文件。组内用户对允许访问列表中的文件存取权限，遵守文件所在虚拟目录的权限限制。这个功能的详细说明见用户设置"权限"里对应的部分。

拒绝访问的文件 - 禁止访问的文件列表可以用来控制组内用户不能够访问和看到的文件。这个功能的详细说明见用户设置"权限"里对应的部分。

拒绝FTP命令

选择拒绝的FTP命令 - 选择拒绝组内用户执行的FTP命令。


组配置 - 登录控制

组登录时间

组登录时间 - 配置组内所有用户允许的登录时间范围，最多可以设置16个时间范围。如果组内所有用户登录时间没有设置，将根据用户自己的登录时间范围决定这个用户能否登录。

组登录IP范围

允许登录的IP范围 - 组内所有用户允许的登录IP连接范围，最多可以设置16个允许登录的IP连接范围。

禁止登录的IP范围 - 组内所有用户禁止登录的IP连接范围，最多可以设置16个禁止登录的IP连接范围。


全局选项 - 通用

系统服务

在Windows启动后在任务栏显示程序图标- 启用这个选择后，当Xlight FTP服务器作为系统服务运行时，在Windows启动后，程序图标会显示在任务栏。

管理FTP服务器系统服务 - 你可以从系统服务中安装和删除Xlight FTP服务器. 在启动系统服务前, 你必须退出现在正在运行的Xlight FTP服务器程序.

配置更改后备份

启用服务器配置更改后的自动备份 - 启用这个选择后，每当Xlight FTP服务器的配置被改变后, 配置文件将会被自动备份.

存储设置文件备份的目录 - 存储设置文件备份的目录.

全局IP地址禁止和允许列表

设置全局IP地址禁止和允许列表 - 在这里设置的IP地址禁止和允许列表将作用与所有虚拟服务器. 这个列表在虚拟服务器禁止和允许列表之前检查. 因此一个IP是否允许访问虚拟服务器被这个检查顺序决定。如果一个用户在这里禁止访问，但是在虚拟服务器列表里被允许访问，这个用户还是不能访问虚拟服务器.

服务器带宽限制

下载带宽 (KB/s) - FTP 服务器用于下载的总带宽，0(默认值)等于不限制服务器下载总带宽。

上传带宽 (KB/s) - FTP 服务器用于上传的总带宽，0(默认值)等于不限制服务器上 传总带宽。

定时控制带宽 - 根 据预先计划的时间范围动态定时改变FTP服务器的上传或下载带宽。只有在定时带宽规定的时间范围时，定时带宽才会将取代FTP服务器的默认带宽，其他时间 服务器使用默认带宽。你可以最多定义10个定时带宽。

防火墙和宽带路由器

只有当你的FTP服务器使用内部私有IP，通过宽带路由器(NAT)/防火墙连接到互联网，你才需要使用里面的配置选项。

自动设置广域网IP和端口转发 - 通过UPnP自动设置宽带路由器,在宽带路由器自动打开FTP服务器需要的端口。具体设置可以参考链接

广域网IP使用固定IP地址 - ADSL路由器(NAT)/防火墙的广域网接口有固定IP地址。这个地址通常是运营商提供的。你可以将这个IP添到这个选项里。这个IP必须是能全球访问的公共IP地址。

广域网IP使用域名 - 尽管ADSL路由器(NAT)/防火墙的广域网接口的IP不是固定的，但是你为这个接口申请了一个域名。你可以将申请到的域名添到这个选项里。

限制PASV的端口范围 - 这个选项用于设置被动模式的端口范围，如果你的服务器在防火墙后（ADSL路由器通常也内置防火墙）。你需要在防火墙里打开一段端口范围，同时在这里相应设置相同的范围。否则外部用户使用PASV命令，将无法连接到防火墙后的FTP服务器。表现为外部用户不能获得目录列表和下载。

启用广域网IP自动检测 - 帮助用户检测他的广域网IP，这个选项有时不能检测到广域网IP。ADSL路由器(NAT)/防火墙后设置FTP服务器，应该主要依靠前面三个选项。


全局选项 - 高级

服务器SSL证书

为 了使用SSL功能你需要在这里创建一个服务器证书，服务器证书存放在"本地计算机"的"个人"证书商店中。

创建自签名的SSL证书 - 创建一个自签名的SSL证书。

ODBC数据库设置

启用ODBC数据源 - 使用ODBC数据源。

数据源名称 - 在"系统DSN"内的ODBC数据源。

数据库用户名 - 数据库登录使用的用户名，这是ODBC数据源里设置的用户名。

数据库密码 - 数据库用户的密码。

本地主机ID - 这个ID和数据库"acct_table" 中的"host_id"列相对应，不同ID可以代表不同机器，这样不同机器的FTP服务器可以共享同一个数据库表。

测试，创建和升级数据库表 - 数据库中创建，测试以及升级Xlight FTP的数据库表，要创建和升级数据表，ODBC数据源设置的数据库用户必须有相应数据库权限。

当用户登录xlight服务器时，xlight会通过ODBC连接，用SQL语句分两次查询数据库。

第一个数据库的SQL查询用于在数据库中找到与用户登录时输入的用户名，密码相匹配的纪录，并且获得关于这个用户的一些基本配置参数， 如"home_path", "home_perm" 等等. 在这次查询中返回的"param_index"值将会同时用在第二次数据库查询。

第二次数据库的SQL查询将会用第一次查询返回的"param_index"值，查询数据库的"acct_param_table"，以得到更多的用户参 数设置。

Xlight允许管理员替换上面两个SQL查询语句，以支持高级的数据库应用，如数据库的"存储过程"(Stored Procedure)

替换第一条内部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, 经过替换最后实际送到数据库的SQL语句是 "EXEC proc_getuser 'test', 'hello', 21, 0".

替换第二条内部SQL查询语句 - 下面的变量将可以在第二条SQL替换语句中，送给数据库的存储过程:

$INDEX - 这个变量将会替换为第一条SQL替换查询语句返回的"param_index"值.
$PORT - 这个变量将以虚拟服务器的端口替换
$SERVERIP - 这个变量将以虚拟服务器的IP地址替换

因为xlight允许时不对数据库写入任何纪录, 如果使用数据库存储过程，对于xlight使用的"acct_table"和"acct_param_table"数据库表可以不实际存在与数据库里. Xlight服务器 不知道"acct_table"和"acct_param_table"不存在于数据库中. 它只是通过察看两个SQL查询的返回结果. 如果第一条SQL查询替换语句从数据库中返回一行, xlight就认为用户登录验证成功，同时它会从返回的行中，获得用户的基本配置参数. 如果数据库没有返回结果，它认为用户登录验证失败, 所以数据库如果不想让用户访问服务器，就不要返回查询结果. 在第一条查询返回的"param_index"值，将会用在第二条SQL替换语句中.

服务器远程管理员

Xlight FTP服务器允许你设定远程管理者的帐户。远程管理者可以运行SITE命令，或者通过 Xlight图形界面的远程管理程序，管理远端FTP服务器。远程管理不需要使用专门端口，远程管理者可以从任何一个打开的FTP虚拟服务器端口连接，对服务器进行管理。

启用服务器远程管理 - 对FTP服务器启用远程管理功能。如果远程管理功能被禁用，设置的远程管理者就不能连接到服务器了。

具有全部权限的远程管理员 - Xlight的远程管理者有全部的服务器管理权限。

具有全部权限的远程管理员 - Xlight的远程管理者只有服务器的只读权限。

远程管理员IP范围 - 限制远程管理者能够连接的IP范围。

使用专用远程管理端口 - 尽管远程管理不需要使用专门端口，但是如果管理者希望有一个专门的远程管理端口，也可以在这里设置。

专用端口必须使用隐式SSL - 远程管理者必须通过隐式SSL连接到专门的管理端口。使用这个选项之前，必须为服务器选择一个SSL证书。


全局选项 - 日志

系统错误日志

系 统错误日志，记录FTP服务器出现的系统错误信息。

不要将日志发送到屏幕 - 启用这个选项后系统错误信息将不会被送到屏幕显示。

将日志写入文件 - 将系统错误信息写入到文件。

日 志文件名 - 选择要写入的日志文件名。

日 志文件最大尺寸 (MB) - 系统错误记录文件最大尺寸，记录超过最大文件尺寸后，现有系统错误记录文件将被清零，原有的系统错误记录信息将被依次自动备份到后缀为".000", ".001",".002"...的同名文件中。0（默认值）或此项为空等于不限制最大文件尺寸。

Syslog服务器 - Syslog服务器得IP地址或主机名. 对于非标准的syslog端口(514), 端口号必须用":" 附加在IP/主机名后, 例如 "172.28.7.6:520". 为IPv6地址指定端口, 地址必须放在"[]"内, 例如 "[3ffe:b00:ffff:2::]:520".

FTP会话日志 - 基本选项

FTP会话日志，记录FTP用户和服务器的会话交互信息。

不要将日志发送到屏幕 - 启用这个选项后FTP的会话日志将不会被送到屏幕显示。

将日志写入文件 - 将FTP的会话日志写入到文件。

日 志文件名 - 选择要写入的日志文件名。

日 志文件最大尺寸 (MB) - FTP记录文件最大尺寸，记录超过最大文件尺寸后，现有FTP记录文件将被清零，原有的FTP记录信息将被依次自动备份到后缀为".000", ".001",".002"...的同名文件中。0（默认值）或此项为空等于不限制最大文件尺寸。

按日期自动轮换日志文件- 选择自动轮换日志文件的方式：从不，每天，每周，每月。自动轮换文件的生成日期会自动附加在日志文件名的后面。

Syslog服务器 - Syslog服务器得IP地址或主机名. 对于非标准的syslog端口(514), 端口号必须用":" 附加在IP/主机名后, 例如 "172.28.7.6:520". 为IPv6地址指定端口, 地址必须放在"[]"内, 例如 "[3ffe:b00:ffff:2::]:520".

FTP会话日志 - 高级选项

根据会话方向记录

服 务器响应 - 记录FTP服务器对用户请求的回应。

客 户端请求 - 记录FTP用户对服务器的请求。

同 时两个方向 - 同时记录FTP用户对服务器的请求和服务器对用户请求的回应。

记录客户动作

文 件下载 - 记录FTP用户下载文件。

文 件上传 - 记录FTP用户上传文件。

文 件删除 - 记录FTP用户删除文件。

创 建目录 - 记录FTP用户创建目录。

切 换目录 - 记录FTP用户改换目录。

根据下面过滤规则记录日志

只纪录指定的客户IP - 只对指定的客户IP纪录FTP会话。

只纪录指定的用户名 - 只对指定的用户名纪录FTP会话。

只纪录指定的组名 - 只对指定的组名纪录FTP会话。

只纪录指定的时间范围 - 只对指定的时间范围纪录FTP会话。

只纪录指定的虚拟服务器 - 只对指定的虚拟服务器纪录FTP会话。

文件传输日志 - UNIX xferlog格式

UNIX xferlog格式文件传输日志能够被一些象AWStats之类的日志分析工具读取，系统管理员可以用它分析服务器流量

日志文件名 - 选择要写入的日志文件名。

日志文件最大尺寸 (MB) - 系统错误记录文件最大尺寸，记录超过最大文件尺寸后，现有系统错误记录文件将被清零，原有的系统错误记录信息将被依次自动备份到后缀为".000", ".001",".002"...的同名文件中。0（默认值）或此项为空等于不限制最大文件尺寸。

按日期自动轮换日志文件- 选择自动轮换日志文件的方式：从不，每天，每周，每月。自动轮换文件的生成日期会自动附加在日志文件名的后面。

Syslog服务器 - Syslog服务器得IP地址或主机名. 对于非标准的syslog端口(514), 端口号必须用":" 附加在IP/主机名后, 例如 "172.28.7.6:520". 为IPv6地址指定端口, 地址必须放在"[]"内, 例如 "[3ffe:b00:ffff:2::]:520".

文件传输日志 - 纪录到数据库

将文件传输写到数据库- 启用将文件传输日志写到数据库的功能。具体设置可以参考链接


Xlight安装系统服务

如何开机自动允许Xlight FTP服务器

通过安装Xlight服务器作为系统服务，或者在Windows启动程序组中创建一个Xlight FTP 程序的shortcut，或者在注册表 "\HKEY_LOCAL_MACHINE\SOFTWARE\Windows\CurrentVersion\Run" 加入xlight.exe程序，并加上命令行参数 -startall, Xlight FTP服务器就能够随着Windows启动自动运行。

如何安装Xlight FTP服务器为系统服务

在"全局选项"内, 从[通用]->[系统服务], 点击选项"管理FTP服务器系统服务"中的"设置...". 在对话框内,点击"安装系统服务".

另外一个安装系统服务的方法: 如果你从安装程序(setup_cn.exe)安装了Xlight FTP服务器, 在开始→Xlight程序组→管理 Xlight FTP 系统服务，你可以看到下面菜单，通过这个菜单你可以安装和卸载Xlight的系统服务

安装Xlight FTP服务器作为系统服务 - 在上图的菜单中选择"安装成系统服务", 将会安装Xlight服务器作为系统服务,并自动启动系统服务。

删除Xlight FTP服务器的系统服务 - 在上图的菜单中选择"删除系统服务", 将会删除Xlight服务器的系统服务,并自动停止系统服务。


连接详细信息

移除自动禁止的IP

点击这个图标会显示移除自动禁止IP的窗口. 选择你想要移除的IP, 单击鼠标右键. 你将会看到移除自动禁止IP的选项.

用户连接细节

用户名 - FTP用户的登录名, 如果用户没有登录，用户名显示为？。

客户IP - FTP用户的IP地址和端口。

当前目录 - 用户当前所在的FTP服务器虚拟目录。

恶意行为 - 纪录的FTP用户恶意企图的数量。

速度 - 用户当前上传或下载的速度。

已下载 - 用户的 下载总量。

已上传 - 用户的上传总量。

更多 - 其他信 息. 例如用户现在正在下载或上传的文件名和进度。

文件上传或下载的历史记录

文件名 - 用户刚完成下载和上传的文件名字。

状态 - 文 件的下载和上传结束状态。

完成于 - 文件传输完成的时间。

速度 - 文件上传或下载的平均速度。

文件大小 - 上传或下载的文件大小。

发送/接收 - 服 务器实际发送和接收的文件比特。

其他信息

连接自从 - 用户连接到FTP虚拟服务器的时间。

空闲时间 - 用户空闲的时间。

上一命令 - 用户发送的上一个FTP命令。

文件(上传/下载） - 用户上传和下载的文件个数。

恶意行为

缓存溢出 - 用户试图发送超长字符使服务器缓冲区溢出。

恶意删除 - 用户在没有权限的情况下试图删除或上传文件。

垃圾命令 - 用户向服务器发送垃圾FTP命令。

密码暴力破解 - 用户使用暴力猜测FTP服务器的密码。

其他 - 其他服务器认为是恶意的用户行为。


如何使用远程管理功能

远程管理功能使用非常简单.

1. 在Xlight的全局选项→高级→服务器远程管理员→启用服务器远程管理，启用远程管理选项。

2. 在Xlight的全局选项→高级→服务器远程管理员→远程管理账号内，设置一个远程管理账号。

3. 在Xlight安装目录里找到有 [image] 图标的remote_admin.exe文件，将它拷贝到远端PC，在远端PC执行这个文件。

4. 在下面窗口内填入你要管理的FTP服务器IP/域名，远程管理账号，和选择连接方式。Xlight远程管理可以非常方便的从任何打开的FTP虚拟服务器端口连接，你不需要专门的远程管理端口。当然你也可以设置专门的远程管理端口。

5. 连接成功后，远程管理的界面和本地完全一样。


Xlight 命令行选项

安装Xlight FTP服务器作为手工启动的系统服务 - 在DOS提示符下, 改变目录到Xlight FTP服务器的安装目录. 执行命令"xlight –install" ，在Windows控制面板的管理工具中，检查以确保Xlight FTP服务器已经被正确安装成为手工启动的系统服务。

安装Xlight FTP服务器作为自动启动的系统服务 - 在DOS提示符下, 改变目录到Xlight FTP服务器的安装目录. 执行命令"xlight –installauto"，在Windows控制面板的管理工具中，检查以确保Xlight FTP服务器已经被正确安装成为自动启动的系统服务。

将Xlight FTP服务器从系统服务中卸载 - 在DOS提示符下, 改变目录到Xlight FTP服务器的安装目录. 执行命令"xlight –uninstall"，在Windows控制面板的管理工具中，检查以确保Xlight FTP服务器已经被正确安装成为手工启动的系统服务。

当Xlight FTP服务器作为系统服务运行时显示任务栏图标 - 当Xlight FTP服务器作为系统服务运行时，你依然可以访问主程序窗口. 为了能够访问主程序窗口，你首先需要显示Xlight服务器的任务栏图标。在DOS提示符下, 改变目录到Xlight FTP服务器的安装目录. 执行命令 “xlight –showicon”

隐藏当Xlight FTP服务器作为系统服务运行时的任务栏图标 - 在DOS提示符下, 改变目录到Xlight FTP服务器的安装目录. 执行命令 “xlight –hideicon”隐藏任务栏图标，这个命令只当Xlight服务器作为系统服务运行时才有效。

用于启动所有FTP虚拟服务器的程序命令行参数 - “xlight –startall” 用于从命令行启动所有虚拟服务器。当你在Windows 95，98或者ME运行FTP程序，但又不想让程序作为系统服务运行时，你可以使用这个参数. 你可以在Windows启动程序组中用这个参数创建一个Xlight FTP 程序的shortcut或者在注册表中"\HKEY_LOCAL_MACHINE\SOFTWARE\Windows\CurrentVersion\ Run"位置在程序启动时使用这个参数.另一个用途是当你的机器上装有Telnet服务器，并且你想通过远程Telnet启动FTP服务器.


服务器 SITE 命令

用户更改自己的密码

SITE PSWD <oldpass> <newpass>
作用: 更改用户自己的密码。
可执行用户: 所有用户。
说明: 远程管理员可以随时更改自己的密码,其他用户只有在虚拟服务器中允许更改密码的选项启用后才能更改密码。

用于用户管理的SITE命令

SITE SHOW USER <username>
作用: 根据用户名显示在线用户,用户名可以使用*,?表示匹配. 例如 "SITE SHOW USER *", 将会显示所有用户。
可执行用户: 远程管理员。

SITE SHOW USER ID <#id>
作用: 根据ID显示这个用户的详细信息, 在执行这个命令之前可以用"SITE SHOW USER [username]" 取得用户ID。
可执行用户: 远程管理员。

SITE KILL <username>
作用: 根据用户名踢出在线用户,用户名可以使用*,?表示匹配. 例如 "SITE KILL "a*", 将会踢出所有以字母a开头的用户。
可执行用户: 远程管理员。

SITE KILL ID <#id>
作用: 根据 ID 踢出在线用户, 在执行这个命令之前可以用"SITE SHOW USER [username]" 取得用户ID。
可执行用户: 远程管理员。

SITE ADDUSER <username> <password>
作用: 在虚拟服务器中添加新用户。
可执行用户: 远程管理员。

SITE DELUSER <username>
作用: 在虚拟服务器中删除用户。
可执行用户: 远程管理员。

SITE CHPASS <username> <password>
作用: 为用户更换密码。
可执行用户: 远程管理员。

SITE ADDGRP <groupname>
作用: 在虚拟服务器中添加新组。
可执行用户: 远程管理员。

SITE DELGRP <groupname>
作用: 在虚拟服务器中删除组。
可执行用户: 远程管理员。

SITE CHGRP <username> <groupname>
作用: 为用户更换组。
可执行用户: 远程管理员。

用于虚拟服务器管理的SITE命令

SITE SHOW SERVER LIST
作用: 显示系统中的所有虚拟服务器列表和ID。
可执行用户: 远程管理员。

SITE SHOW SERVER <ip:port>
作用: 根据虚拟服务器IP和端口显示详细信息, 在执行这个命令之前可以用"SITE SHOW SERVER LIST" 取得服务器IP和端口。
可执行用户: 远程管理员。


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_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服务器每个用户的主目录是从"/"开始,这里需要填入用户的主目录"/" 所对应的实际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 | 用户能够使用的最大硬盘空间
ratios_type | integer | 0=根据KB，1=根据文件
download_ratios | integer | 下载比例值; 它是上传/下载比例的后半部分值,需要同时和下面的上传比例值一起使用,以形成完整的上传/下载比例对
upload_ratios | integer | 上传比例值; 它是上传/下载比例的前半部分值,需要同时和上面的下载比例值一起使用,以形成完整的上传/下载比例对
starting_credit | integer | 用户上传/下载比例的初始额度
ftp_cmd_speed | integer | 用户登录后FTP命令执行速度. 0-1000, 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". 请注意这里最小的单位是分钟,不是秒;注意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) | 允许用户访问的一个或多个文件，用户将只能访问和看到放在这一项里的文件，他将无法访问和看到不在这一项里的其他文件。文件名可以用 Unix shell类型的匹配字符来表示某些类型的文件。文件名之间用符号"|"分开。如"*.exe|*.txt" 表示用户只能看到和访问".exe"，".txt"为后缀的文件。如果这一项为空，它将不会对用户能够访问的文件产生影响。
files_deny_access | varchar(255) | 禁止用户访问的一个或多个文件，用户将不能访问和看到放在这一项里的文件，他可以访问和看到不在这一项里的其他文件。文件名可以用Unix shell类型的匹配字符来表示某些类型的文件。文件名之间用符号"|"分开。如"*.exe|*.txt"表示用户不能看到和访问".exe"，".txt"为后缀的文件。如果这一项为空，它将不会对用户不能够访问的文件产生影响。
send_socket_buffer | integer | 虚拟服务器用来发送数据到FTP客户的Socket缓存大小。单位是KB, 0(默认值)等于使用32KB作为socket缓存。增大发送Socket缓存,通常会带来客户端下载速度的提高，尤其在G兆以太网里。
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-----"


Xlight FTP 服务器 LDAP Schema 属性

名字 | 描述
ftpDisableAccount | 禁止FTP账户
ftpAccountExpireTime | 账户过期时间. 参数格式:"yyyy-mm-dd hh:mm:ss" ,其中"yyyy-mm-dd"是"年-月-日", "hh:mm:ss"是"时-分钟-秒". 时取值的范围是从0-23.
ftpGroupName | 用户属于的组
ftpHomeDirectory | 用户主目录的绝对路径
ftpHomePerm | 用户的主目录"/"的权限限制. L - 列目录; R - 读; S -包含子目录; C- 创建 W- 写; A - 附加; D - 删除, N -更名; 例如,如果你需要给用户"读,写,列目录和包含子目录"的权利, 你需要在在这一项中放"LRSW-----". 这些标志的先后次序对权限限制没有影响.
ftpHidePublicPath | 对这个用户隐藏公共虚拟目录
ftpHideGroupPath | 对这个用户隐藏组虚拟目录
ftpBypassServerMax | 忽略服务器的最大用户数限制
ftpMaxDownloadSpeed | KB/s为单位的这个用户最大下载速度
ftpMaxUploadSpeed | KB/s为单位的这个用户最大上传速度
ftpMaxUserConnections | 这个用户的最大连接数
ftpMaxConnectionsIP | 这个用户的最大单IP连接数
ftpMaxSessionTime | 用户每次会话最大持续时间
ftpMaxDownloadFileNum | 用户每次会话能够下载的文件个数
ftpMaxUploadFileNum | 用户每次会话能够上传的文件个数
ftpSessionMaxDownload | 用户每次会话允许下载的总流量(MB)
ftpSessionMaxUpload | 用户每次会话允许上传的总流量(MB)
ftpMaxDownloadFileSize | 用户每次会话允许下载的最大文件大小(MB)
ftpMaxUploadFileSize | 用户每次会话允许上传的最大文件大小(MB)
ftpEnableQuotas | 启用磁盘配额功能
ftpUserSpaceQuotas | 用户能够使用的最大硬盘空间(MB)
ftpEnableRatio | 启用上传/下载比例功能
ftpRatioType | 上传/下载比例类型
ftpRatioDownload | 下载比例值; 它是上传/下载比例的后半部分值,需要同时和下面的上传比例值一起使用
ftpRatioUpload | 上传比例值; 它是上传/下载比例的前半部分值,需要同时和上面的下载比例值一起使用
ftpRatioStartingCredit | 用户上传/下载比例的初始额度
ftpUserCommandSpeed | 用户登录后FTP命令执行速度. 0-1000, 0(默认值)=用户使用虚拟服务器的FTP命令执行速度
ftpAllowedUserLoginIP | 用户登录控制允许登录的用户IP地址范围. 参数格式:ip地址/子网掩码; 最多可以配置6个地址范围. 每一个地址范围之间用符号"|"分开. 例如:"192.168.252.1/255.255.255.0|202.96.3.1/255.255.255.0"
ftpDeniedUserLoginIP | 用户登录控制允许登录的用户IP地址范围. 参数格式:ip地址/子网掩码; 最多可以配置6个地址范围. 每一个地址范围之间用符号"|"分开. 例如: "192.168.252.1/255.255.255.0|202.96.3.1/255.255.255.0"
ftpAllowedUserLoginTime | 用户登录控制允许登录的用户时间. 参数格式:"开始时间 - 结束时间",其中"开始时间"和"结束时间"的格式:"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"这样的表示是不正确的,必须将结束时间的小时和分钟补上
ftpFilesAllowedAccess | 允许用户访问的一个或多个文件，用户将只能访问和看到放在这一项里的文件，他将无法访问和看到不在这一项里的其他文件。文件名可以用Unix shell类型的匹配字符来表示某些类型的文件。文件名之间用符号"|"分开。如"*.exe|*.txt" 表示用户只能看到和访问".exe"，".txt"为后缀的文件。如果这一项为空，它将不会对用户能够访问的文件产生影响
ftpFilesDeniedAccess | 禁止用户访问的一个或多个文件，用户将不能访问和看到放在这一项里的文件，他可以访问和看到不在这一项里的其他文件。文件名可以用 Unix shell类型的匹配字符来表示某些类型的文件。文件名之间用符号"|"分开。如"*.exe|*.txt"表示用户不能看到和访问".exe"，".txt"为后缀的文件。如果这一项为空，它将不会对用户不能够访问的文件产生影响
ftpDeniedCommands | 禁止用户运行的FTP命令,支持的命令有: "LIST, PASV, PORT, RETR, CWD, CDUP, STOR, DELE, REST, ABOR, SIZE, APPE, MKD, RMD, RNFR, RNTO, SYST, HELP, NLIST, NOOP". 不同命令之间用符号"|"分开
ftpSendSocketBuffer | 虚拟服务器用来发送数据到FTP客户的Socket缓存大小。单位是KB, 0(默认值)等于使用32KB作为socket缓存。增大发送Socket缓存,通常会带来客户端下载速度的提高，尤其在G兆以太网里
ftpRecvSocketBuffer | 虚拟服务器用来从FTP客户接收数据的Socket缓存大小, 单位是KB. 0(默认值)等于使用32KB作为socket缓存。增大接受Socket缓存，通常会带来客户端上传速度的提高
ftpVirtualPaths | 用户的虚拟目录. 这是一个多值的属性. 用户可以有多个虚拟目录. ftpVirtualPaths字符串是"|"分割的虚拟目录，实际目录和权限的结合. 它的格式是: "虚拟目录 | 实际目录 | 权限". 例如,一个虚拟目录可以是 "/files/ | d:\Downloads\ | RLS----", 其中 "/files/" 是虚拟目录, "d:\Downloads\" 是映射到"/files/"的实际目录, "R--L--S"是"/files/"的权限标记. 虚拟目录, 实际目录和权限用"|"符号分割. 对于权限标记的含义，你可以参考"ftpHomePerm"的描述. 注意: 虚拟目录必须是UNIX形式的目录，实际目录必须是Windows形式的目录. 参数%username%可以用于real path. %username%将会被替换成实际登录的用户名. 如果用户登录时real path不存在, Xlight FTP服务器将会自动创建目录.


在宽带路由器后如何使用Xlight FTP服务器的UPnP功能?

1.

如果你的FTP服务器位于无线或有线宽带路由器后, UPnP是最简单的设置FTP服务器的方法. Xlight FTP服务器2.6版本开始支持 UPnP功能,这个功能也包括在个人版里.

到 [全局选项]->[通用]->[防火墙和宽带路由器], 点击 [设置...] 键. 在对话框里,选择选项 "自动设置广域网IP和端口转发", 如下图所示:

你可以点击 [测试...] 测试你的宽带路由器是否支持UPnP. 一些宽带路由器默认打开并支持UPnP功能, 但也有一些默认UPnP功能是关闭的. 如果UPnP在路由器上被关闭,你可能需要更改路由器设置启用UPnP. 如果你能够看到测试结果, 你的路由器应该支持UPnP功能.

当UPnP功能启用后, Xlight FTP服务器将会在通过UPnP在路由器上自动打开端口61010和61011. 这两个端口用于FTP的被动模式. 如果你打算为被动模式使用其他端口, 你可以在"设置被动模式的端口范围"下,手工选择端口范围. 对于UPnP,最多可以使用5个端口用于被动模式. 如果想打开更多的被动模式端口, 你需要在路由器上手动设置端口转发. Xlight FTP服务器会自动使用UPnP在路由器上打开虚拟服务器的FTP端口.

当FTP服务器在宽带路由器后,UPnP是一个快速的设置方法, 但注意它也有局限. UPnP可能会有兼容问题并且有些路由器上的UPnP功能可能是有缺陷的. Xlight FTP服务器的UPnP功能和有些品牌的路由器可能不兼容. 另外许多宽带路由器在重新启动后, UPnP打开的端口会丢失. 因此如果你的宽带路由器在Xlight FTP服务器打开后重新启动, 你可能需要重新打开Xlight FTP服务器. 如果你想在宽带路由器上永久打开端口, 你需要手工设置端口映射. 因为UPnP对企业来说是安全问题, 企业内使用的高端的路由器和防火墙都不可能支持UPnP. 在这些设备后企图使用UPnP不可能成功.

如果UPnP对你不工作,或者你需要在路由器或防火墙上永久打开端口. 你可以参考下面链接 手工设置端口映射设置


设置Xlight FTP服务器使用SSL/TLS功能

Xlight FTP服务器可以和标准FTP协议一起使用SSL/TLS功能加密控制和数据通道. Xlight FTP服务器支持在SSL之上的两种工作方式: "显式SSL"以及"隐式SSL".

显式SSL 是一种机制, 其中当FTP客户端希望使用安全的加密控制连接时, 它需要显式的发出AUTH命令例如 "AUTH TLS" 或 "AUTH SSL" 以初始化SSL握手过程并和FTP服务器之间建立安全的加密控制连接. AUTH命令必须在FTP客户登录之前发出. 如果FTP客户端没有发出AUTH命令,它和FTP服务器之间的控制连接将保持未加密状态.

隐式SSL 是另一种机制, 其中FTP服务器要求FTP客户必须初始化SSL握手过程并和FTP服务器之间建立安全的加密控制连接, 加密控制连接建立之后FTP命令才能够被送到FTP服务器. 如果FTP客户不支持SSL功能,或它和服务器之间没有建立安全的加密控制连接,FTP服务器将不对来自FTP客户的命令做出任何反应.

在这个例子里,我们将演示如何在Xlight FTP服务器里使用SSL/TLS功能. 注意: 30-天试用期后,这个功能只被标准版和专业版的Xlight FTP服务器支持.

创建和选择有效的服务器证书

使用SSL/TLS功能, 你需要做的第一件事是创建或选择一个已有的X.509证书作为服务器证书. 这个证书可以是由有效CA签发的实际证书,或者是自签名证书.

Xlight FTP服务器使用的X.509服务期证书必须放在"本地计算机"的"个人"证书商店中. 这个证书位置和微软IIS服务期使用的SSL证书在相同位置. 因此如果你有一个为IIS服务器使用的有效证书, 你可以很方便的将它同时用在Xlight FTP服务器上.

1. 到 [全局选项] -> [高级] -> [服务器SSL证书] 创建或选择一个服务器证书. 在这个例子里我们已经创建了一个自签名证书,它的CN是 "test-cert", 我们选择这个证书作为服务器证书,如下图所示.

2. 到 [虚拟服务器设置] -> [通用] -> [启用虚拟服务器SSL功能] 选择需要使用的SSL方式. 在这个例子里,我们选择隐式SSL,如下图所示.

经过上面步骤后, 你就完成了SSL/TLS功能的设置,可以使用服务器证书加密FTP服务器和FTP客户端之间的控制和数据通道.

使用SSL客户端认证(SSL client authentication)

Xlight FTP服务器支持SSL客户端认证. SSL客户端认证是另一种在FTP服务器端验证客户端身份的方式. 使用SSL客户端认证后, 在SSL握手的过程中, FTP客户端必须发送有效的X.509客户端证书给FTP服务器. 客户端证书包含用户的信息, 它向FTP服务器证明客户的身份.

1. 客户端证书必须由受信任的CA颁发, 你不能使用自签名证书作为客户端证书. 颁发客户端证书的CA必须存在于服务器的证书商店"本地计算机"中的 受信任的根证书颁发机构(Trusted Root Certificate Authorities)里. 否则客户证书无法通过服务器端的认证. 如下图微软的mmc工具的证书快照所示.

2. SSL客户端认证为隐式SSL模式支持. 到 [虚拟服务器设置] -> [通用] -> [启用虚拟服务器SSL功能], 选择"要求客户端证书" 如下图所示.

经过上面步骤后, 你就可以使用SSL客户端认证功能.


设置Xlight FTP服务器使用SSH2/SFTP协议

Xlight FTP服务器现在支持基于SSH2的安全文件传输协议(SFTP). SFTP不是基于SSH2的FTP协议, 而是一个由IETF SECSH工作组设计的新协议. SFTP本身不提供认证和安全性, 它依赖下层的SSH2协议提供安全的连接. 注意: SSH2/SFTP是Xlight FTP服务器标准版或专业版的可选功能. 在30-天试用期后, SSH2/SFTP是可选的附加功能，你需要一个单独的SSH2/SFTP升级License. 只有标准版本或专业版本的Xlight FTP 服务器用户可以升级到SSH2/SFTP附加功能.

创建SSH2/SFTP虚拟服务器的步骤很直接. 当你创建一个新的虚拟服务器时, 选择SSH2作为协议, 象下图显示的那样: (注意: 如果服务器没有SSH2/SFTP license, 你将不能在协议的选项里看到SSH2.)

就像FTP的默认端口是21, SSH2/SFTP的默认端口是22. 当你创建了SSh2/SFTP虚拟服务器后, 你能在其中添加用户并象管理FTP虚拟服务器那样管理它.

管理SSH2服务器主机密钥

SSH2主机密钥是一个独特的密钥用于标示服务器. 当你创建了一个新的SSh2/SFTP虚拟服务器后, SSH2主机密钥将会自动产生. 然而如果你希望导入已经有的SSH2主机密钥，或者备份现有的SSH2主机密钥, 你可以管理它从 [虚拟服务器设置] -> [通用] -> [SSH2主机密钥] ， 如下图所示:

SSH公共密钥认证

本地SFTP用户可以使用公共密钥认证替代默认的密码认证. 公共密钥认证是基于用户的. 从用户设置, 你需要为这个用户启用公共密钥认证并选择公共密钥文件, 如下图所示:


将文件传输日志通过ODBC写入数据库

1.

Xlight FTP服务器可以将文件传输日志通过ODBC写入数据库, 文件传输日志记录在数据库内,可以使管理员快速方便的查找和统计用户下载情况.

这里我们通过MySQL数据库演示如何设置将文件传输日志通过ODBC写入数据库. 注意: 30-天试用期后, 只有专业版本的Xlight FTP服务器支持这个功能.

使用这个功能之前, 你首先需要设置ODBC数据源.

1. MySQL ODBC数据源可以在网址http://www.mysql.com/downloads/api-myodbc.html下载,将它安装在Xlight FTP服务器运行的机器上.

2. 安装完mysql ODBC数据源后你需要到Windows"控制面板-管理工具"中在"系统DSN"标签内添加MySQL数据源.

3. 选择"系统DSN"内的"添加(D)..."按键，选择"MySQL ODBC Driver"，按"完成"按键.

4. 在这个例子里, 我们使用"File Transfer Log"作为数据源名字. 文件传输日志可以使用和Xlight FTP服务器ODBC用户认证不同的数据库或数据源. 我们建议你使用与ODBC用户数据库不同的数据库,这样可以有更好的性能.

5. 你需要在[全局选项]->[日志]->[文件传输日志 - 记录到数据库]下,启用"将文件传输写到数据库"的选项, 如下图所示

6. 你需要点击[设置...]键,在对话框中,填入数据源,数据库用户和密码,如下图所示. 然后你可以点击"创建"键,让Xlight FTP服务器替你在数据库里创建需要的数据库表用于记录文件传输日志. 你也可以点击"测试"键,检查你是否已正确创建数据表.

通过上面设置, 你就能够将文件传输日志写入数据库.

transfer_log_table 的结构

数据库列名字 | 数据类型 | 描述
finish_time | varchar(24) | 文件传输结束时间.
direction | integer | 文件传输的方向, 0 - 文件下载, 1 - 文件上传.
file_name | varchar(255) | 文件名.
file_path | varchar(255) | 文件所在路径.
transfer_bytes | double | 实际传输的文件比特数.
starting_offset | double | 文件传输开始的偏移位置.
transfer_time | float | 文件传输使用的时间,以秒计数.
transfer_status | integer | 文件传输的状态, 0 - 成功, 1 -失败
username | varchar(65) | 文件传输的用户名.
client_ip | varchar(65) | 用户的IP地址
server_ip | varchar(65) | 虚拟服务器的IP地址
server_port | integer | 虚拟服务器的端口


如何使用ODBC用户数据库

Xlight FTP服务器可以使用外部的用户数据库获得用户参数.注意: 只有专业版本的Xlight FTP服务器有这个功能, 用户在30-天试用期也可以试用这个功能.使用外部用户数据库方便系统管理员管理大量用户.

使用外部用户数据库需要配置ODBC数据源. 下面以MySQL数据库为例. 对于其他数据库,设置方法很类似.

使用这个功能之前, 你首先需要设置ODBC数据源.

1. MySQL ODBC数据源可以在网址http://www.mysql.com/downloads/api-myodbc.html下载.在运行Xlight FTP服务器的机器上安装MySQL ODBC数据源.

2. 安装完mysql ODBC数据源后你需要到Windows"控制面板-管理工具"中在"系统DSN"标签内添加MySQL数据源.

3. 选择"系统DSN"内的"添加(D)..."按键，选择"MySQL ODBC Driver"，按"完成"按键.

4. 在这个例子里, 我们使用 "Xlight FTP Server" 作为数据源名字. 你可以使用任何数据源名字. 这里假定MySQL数据库在远端192.168.11.2的LINUX服务器上. 我们现要在其中创建一个名字是"ftp_user_db"的空数据库. 这里你可以使用任何数据库名字. 在机器192.168.11.2上, 在MySQL命令提示符 mysql>, 键入命令"create database ftpd_user_db;" 创建一个名字是 "ftpd_user_db" 的数据库.

5. 你需要在Xlight FTP服务器的 [全局选项]->[高级]->[ODBC 数据库设置] 中配置外部数据库". 你需要填入数据库用户和密码,以及ODBC数据源. 如果你想手工创建数据库表, 你可以跳到步骤 7. 在这个例子里,我们假定数据库用户"test"对数据库"ftpd_user_db"有完全的访问权限. 你可以点击"创建"键,让Xlight FTP服务器替你在数据库里创建需要的数据库.你也可以点击"测试"键,检查你是否已正确创建数据表.
注意: 对于64bit系统, 你需要用32bit ODBC管理程序设置DNS. 32bit ODBC管理程序在C:\Windows\sysWOW64\odbcad32.exe. 具体原因可以查看 http://support.microsoft.com/kb/942976.

6. 通过ODBC使用外部用户数据库认证, 你需要到 [虚拟服务器设置]->[通用]->[虚拟服务器], 选择选项"启用外部用户鉴权" . 单击"设置..."键, 在虚拟服务器的"鉴权类型" 中必须选择ODBC, 如下图所示:

7. 这个步骤只是用于手工创建数据库表. 如果你已经在第5步完成数据库表的创建,你可以忽略这个步骤. 手工创建数据库表,在数据库中需要两个表: acct_table and acct_param_table. 你可以在Xlight FTP服务器的安装目录中的odbc目录下找到文件 "odbc_tables.sql". 你可以用这个文件手工创建数据库表.

8. 为了安全的数据库访问, 创建上面两个表之后, 你可以在数据库中创建一个只读用户,他对"ftp_user_db"的数据库只有SELECT的权限,如下所示:

在MySQL命令提示符 mysql>, 键入命令 grant select on ftpd_user_db.* anon@'192.168.11.%' Identified by "ftpd"; 这里你创建了一个新的数据库用户"anon",他的密码是"ftpd",他对数据库"ftpd_user_db"只有SELECT的访问权限. 这个命令也限制用来查询数据库的访问只能来自网段"192.168.11.0". 然后你可以将Xlight FTP服务器的外部ODBC数据库配置中的用户和密码改成这个只读用户.

现在你完成了ODBC设置步骤. ODBC功能是在每个虚拟服务器中单独启用的. 在同一个Xlight FTP服务器,你可以有一些虚拟服务器使用ODBC外部用户数据库, 而一些不使用. 如果你选择选项 "忽略 host_id 列" 或 "忽略 host_port 列", 在数据库查询时, Xlight FTP服务器将会忽略 "host_id" 或 "host_port" 列. 因为 "host_id" 列可以用来表示不同的机器, 而 "host_port" 列可以用来表示在同一台机器上的不同的虚拟服务器. 这两个选项可以用来在不同运行Xlight FTP服务器的机器间共享用户数据库,也可以在同一个机器的不同虚拟服务器间共享用户数据库. 如果你只用数据库鉴权用户, 你可以选择选项 "只检查用户名和密码", 使用这个选项你需要在本地FTP服务器创建同名的用户. 数据库只是用来检查用户存在数据库中的密码. 当这个选项启用, 所有的用户设置都是从本地服务器中同名的用户设置里获得.

在数据库中创建用户

你可以使用外部的数据库工具连接到数据库并创建用户. 这只是用于测试目的.

在实际的生产环境里, 你可以使用 PHP 或 其他 CGI 脚本创建基于网页的界面,用于添加,删除或允许用户通过网页更改密码等等.这种方式便于管理大量的用户.你也可以和你现有的数据库应用结合. 因为Xlight FTP服务器只需要读取用户数据库, 但不写入用户数据库, 你不需要担心和你其他数据库应用冲突.

在数据库创建用户之前, 你最好先阅读 Xlight 帮助文档中, "ODBC 数据库表结构" 这一节.

用户的密码可以是以 MD5/SHA1 Hash或明码的形式存放在数据库. 默认是使用MD5 hash. 你可以在虚拟服务器的外部用户认证,ODBC设置中更改密码类型. 如果使用 MD5 hash, 你可以通过搜索"MD5 calculator" 很容易在Google找到MD5计算的工具. 在我们的例子里用户名是 "test" 他的密码也是 "test" , 密码的MD5 hash值是"098f6bcd4621d373cade4e832627b4f6". 如下图所示:

注意: 如果用户的主目录不存在, 当他第一次登录时, Xlight FTP服务器会自动在本地创建目录. 例如, 当用户名是"test" 的主目录"c:\wutemp"不存在. 当这个名字是"test"的用户登录时, Xlight FTP服务器会自动为他创建这个目录.

如果你想使用更多的用户参数, 你可以在数据表 "acct_param_table" 中创建 "param_index" 列. 在这一行中填入你想使用的参数, 并且将这个参数放到这个用户在"acct_table"表中的"param_index"列. 列"param_index"的值可以在不同用户间共享, 因此如果你有很多用户有同样的参数, 在数据表 "acct_param_table" 中你不需要创建很多不同的"param_index"行.

对于你不使用的数据库表中的那些列, 你可以让它们的值为空. 但列 "host_id", "host_port", "username" 是必须的值, 你必须填写. 另外如果使用"home_path"列,"home_perm"列也必须填写.

"virtual_path_table" 被用来设置用户的虚拟目录. 一个用户在数据库中可以有多个虚拟目录. 这些虚拟目录在"virtual_path_table"表中有不同或相同的"virtual_path_index". 在"acct_table"中的"virtual_path_indexes"列通过"virtual_path_index"列链接到"virtual_path_table"的一个或多个行. 如果他包含多个"virtual_path_index", 它们之间必须通过","(逗号)分隔.

参数%username%可以用于"virtual_path_table"里的real path. %username%将会被替换成实际登录的用户名. 如果用户登录时real path不存在, Xlight FTP服务器将会自动创建目录.

查找并解决数据库认证问题

通过选中选项"在错误日志显示调试跟踪信息"，可以帮助你查找并解决数据库认证的问题，这个选项可以在[虚拟服务器设置]->[启用外部用户鉴权]找到. 启用这个选项后, 你可以在错误日志看到Xlight FTP服务器数据库查询过程.

使用其他数据库

当用户登录Xlight服务器时，服务器会通过ODBC连接，用SQL语句分两次查询数据库。

第一个数据库的SQL查询用于在数据库中找到与用户登录时输入的用户名，密码相匹配的纪录，并且获得关于这个用户的一些基本配置参数，如"home_path", "home_perm" 等等. 在这次查询中返回的"param_index"值将会同时用在第二次数据库查询。

第二次数据库的SQL查询将会用第一次查询返回的"param_index"值，查询数据库的"acct_param_table"，以得到更多的用户参 数设置。

Xlight服务器使用的"acct_table"和"acct_param_table"数据库表可以不实际存在与数据库里. Xlight服务器并不知道"acct_table"和"acct_param_table"是否存在于数据库中. 它只是通过察看两个SQL查询的返回结果. 如果第一条SQL查询替换语句从数据库中返回一行, Xlight服务器就认为用户登录验证成功，同时它会从返回的行中，获得用户的基本配置参数. 如果数据库没有返回结果，它认为用户登录验证失败。 所以数据库如果不想让用户访问服务器，就不要返回SQL查询结果. 在第一条查询返回的"param_index"值,将会用在第二条SQL查询语句中.

Xlight服务器允许管理员替换上面两个SQL查询语句，以支持高级的数据库应用，如数据库的"存储过程"(Stored Procedure), 你可以看这个例子如何使用数据库存储过程

替换第一条内部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, 经过替换最后送到数据库的SQL语句是 "EXEC proc_getuser 'test', 'hello', 21, 0".

替换第二条内部SQL查询语句 - 在第二条SQL替换语句中，可以使用下面的变量:

$INDEX - 这个变量将会替换为第一条SQL替换查询语句返回的"param_index"值.
$PORT - 这个变量将以虚拟服务器的端口替换
$SERVERIP - 这个变量将以虚拟服务器的IP地址替换


如何在Xlight FTP服务器使用数据库存储过程

Xlight FTP服务器可以配置使用数据库存储过程认证ftp用户. 它提供了灵活性以集成Xlight FTP服务器到其他类型数据库应.

在我们开始存储过程指南之前, 我们需要解释一些关于ODBC功能如何在Xlight FTP服务器内部运作.

Xlight FTP服务器使用2个数据库表存储用户设置. Xlight FTP服务器ODBC功能最主要的表是"acct_table", 它存储一个用户基本的设置, 例如host_id, host_port, 用户名, 口令和他的组, 主目录和主目录权限等. 第二个表是"acct_param_table", 由在"acct_table"查询返回的"param_index"列做索引. 它存储用户的其他设置, 这些设置可以作为所有用户的参数模板.

当用户登录到FTP服务器, Xlight FTP服务器里将发送二次SQL查询到这个数据库, 验证他的口令和获得他的设置. 第一次SQL查询用这个用户名和口令, 在数据库查找符合记录, 并且获得基本的参数, 例如"home_path", "home_perm"等. 第一次SQL查询返回的"param_index"值为索引将用于第二次SQL查询. 如果第一次SQL查询不返回"param_index", Xlight FTP服务器将不会发送第二次SQL查询. 第二次SQL查询将查询数据库表“acct_param_table”获得此用户的更多参数.

在Xlight FTP服务器使用数据库存储过程

许多数据库系统支持存储过程. 我们使用MySQL数据库作为例子. 使用MySQL之前, 你必须下载最新的 MySQL ODBC Driver - 3.51.16 或者更高版本. 否则,因为MySQL的Bug #27544, 第二次SQL查询将会失败. 其他类型的数据库,你也最好升级数据库相应的ODBC Driver到最新版本.

在使用存储过程之前必须设置数据库ODBC数据源. 你可以参考这里的设置步骤.

在本例中, 我们有一个表"account_info"在这个数据库里. 此表是其他数据库应用程序所使用, 它存储用户名, 口令和用户发表的文章数目(posts). 我们也创建了另一个表"acct_param_table", 它是Xlight FTP服务器中的一张数据库表, 用于存储用户参数. 我们没有创建Xlight FTP服务器的主要数据库表"acct_table ", 因为我们将使用存储过程模拟其功能.

account_info
Account | Password | Posts
test1 | test1_password | 20
test2 | test2_password | 120
test3 | test3_password | 300
 acct_param_table
param_index | max_down_speed
0 | 10
1 | 50
2 | 100

.

下面代码是范例MySQL存储过程test () ，它接受2个参数, username_in和password_in.

DELIMITER $$
DROP PROCEDURE IF EXISTS test $$
CREATE PROCEDURE test(username_in VARCHAR(65), password_in VARCHAR(65))
main: BEGIN
  DECLARE user_name VARCHAR(65);
  DECLARE home_path VARCHAR(255);
  DECLARE home_perm VARCHAR(10);
  DECLARE num_posts, param_index INT(10);

  SELECT `account`, `Posts`
    INTO user_name, num_posts
    FROM account_info
    WHERE account = username_in AND password = password_in;

  IF user_name != username_in THEN
    LEAVE main;
  END IF;

  SET home_perm = 'LRS';

  IF num_posts > 100 THEN
    SET param_index = 1;
    SET home_path = 'c:\\folder_1';
  ELSEIF num_posts > 200 THEN
    SET param_index = 2;
    SET home_path = 'c:\\folder_2';
  ELSE
    SET param_index = 0;
    SET home_path = 'c:\\folder_0';
  END IF;

  SELECT home_path,home_perm,param_index;

END $$
DELIMITER ;

存储过程test()接受明码文本口令的password_in参数. 你必须为虚拟服务器配置ODBC使用明码文本口令, 如下图所示

上面的存储过程test()将检查数据库account_info验证用户, 如果用户名或口令不符合, 将没有结果集返回Xlight FTP服务器，这个用户的验证将失败.

在成功的用户认证以后, 这个程序将根据用户在"account_info"表里发表的文章数目(posts), 返回不同的param_index, home_path值. 最终test()程序将用语句"SELECT home_path,home_perm,param_index;"返回结果集到Xlight FTP服务器.

因为test()程序替换"acct_table"的功能, 您应该放置"call test('$USER','$PASS');"在选项"替换第一条内部SQL查询语句"中,如下图所示.

$USER和$PASS是预定义参数, Xlight FTP服务期将用登录用户实际的用户名和密码自动替换它们. 如果需要查询支持的预定义参数, 请查阅帮助手册的[全局选项]->[高级]这一节.

如果您想要解决数据库查询的问题，你可以选择这个选项"记录SQL查询错误到系统错误日志"，你将能在系统错误日志中看到SQL查询错误.


在Xlight FTP服务器中设置电子邮件通知

1.

Xlight FTP服务器中, 系统管理员可以设置电子邮件通知, 这样当某些事件如, "文件上传" 或 "硬盘空间不足" 发生时, 他可以收到电子邮件通知.

在这个教学里, 我们将教你如何设置电子邮件通知. 注意: 只有专业版本的Xlight FTP服务器有这个功能, 用户在30-天试用期也可以试用这个功能.

1. 你必须到虚拟服务器的设置里,启用电子邮件通知功能, 如下图所示.

2. 然后你需要设置 SMTP 服务器用于发送通知的电子邮件. 我们这里用Gmail为例. 因为Gmail的SMTP服务器需要TLS 加密连接, 你需要选择选项"使用SSL/TLS连接"并使用端口465. 对于大部分公司内部的邮件服务器，标准的SMTP端口25总是被支持，SSL/TLS的端口465不一定被支持。 所以对公司内部的邮件服务器来说，SSL/TLS连接不是必须的，甚至不能使用。

3.你还需要设置SMTP用户认证以及默认的电子邮件设置. 此外你必须选择电子邮件通知配置文件. 这个文件用来配置那些事件能够触发FTP服务器发送电子邮件通知.

4. 电子邮件通知配置文件是文本文件, 它存放关于你能够接受电子邮件通知的事件. 你可以用记事本编辑这个文件.

Xlight FTP服务器的邮件通知支持6个事件. 下面的表格是支持事件的列表.

电子邮件通知支持的事件

事件名字 | 事件描述
OnFileUpload | 事件在用户上传文件后被触发.
OnFileDownload | 事件在用户下载文件后被触发.
OnFileDelete | 事件在用户删除文件后被触发.
OnDiskSpaceLow | 事件在硬盘空间不足时被触发.
OnLogin | 事件在用户成功登录后被触发.
OnLogout | 事件在用户登出后被触发.

如果你想要接受到电子邮件通知, 你需要将事件类型放在电子邮件通知配置文件中. 你可以使用参数进一步限制电子邮件通知被发送的条件. 下图是一个电子邮件通知配置文件的例子,其中包含了5个事件.

在虚拟服务器当一个用户上传,下载,删除一个文件或硬盘空间被定期检查后,这些动作都会导致FTP服务器检查,预先加载到内存里的邮件通知配置文件. 服务器使用当前的动作对照并检查在电子邮件通知配置文件中的每一行事件和条件. 如果其中一行能够通过这个检查, 一封电子邮件将被发出. 当找到匹配的一行以后, Xlight FTP服务器将不会继续检查下面的行. 配置文件中行的顺序会影响电子邮件通知. 你最好将比较特别的条件放在靠近上面的行,比较同样的条件放在靠近下面的行.

配置文件中的每一行是从左到右检查. 在上面的图里, OnFileUpload是第一行里的事件. 参数 $file 设置文件的类型. $file 有两个值 *.exe 和 *.bat. 当用户上传文件的后缀是 *.exe 或 *.bat, 它将既满足 OnFileUpload事件和文件类型的条件. 用户的上传行为然后检查参数$dir. $dir参数限制了上传目录是虚拟路径 /public 或是它的子目录.

如果上面所有的条件都满足, 一封电子邮件将被发出通知一个文件后缀是*.exe 或 *.bat 被上传到虚拟路径 /public 或是它的子目录中.

第一行中的 $email_file 参数不是条件. 它用来指定一个文件,这个文件用于定制电子邮件的内容. 如果你不使用 $email_file 参数, Xlight FTP服务器会生成默认的电子邮件内容. 在 $email_file 指定的文件中, 你可以为将要受到邮件的人使用其他 TO, CC 和 BCC 地址. 这将替代电子邮件设置里默认的TO地址.

邮件通知配置文件事例.

例子 1. 当硬盘C的剩余空间少于100 MB, 或硬盘D的剩余空间少于200 MB时发送电子邮件通知.

OnDiskSpaceLow $disk_space=C(100),D(200)

Example 2. 当被上传的文件大小超过2000 MB时发送电子邮件通知.

OnFileUpload $file_size>2000

Example 3. 当用户名是test的用户上传后缀是 gif, jpg, 或 png的文件后电子邮件通知.

OnFileUpload $file=*.gif,*.jpg,*.png; $user=test

Example 4. 当用户上传文件名包含被禁止关键字如sex, porn的文件后发送电子邮件通知.

OnFileUpload $file=*sex*,*porn*;

Example 5. 当用户登出时,发送电子邮件通知的条件时他至少需要上传一个文件.

OnLogout $up_files>0;

Example 6. 当用户"tester"登录时发送电子邮件通知.

OnLogin $user=tester;

Example 7. 除了匿名用户"anonymous"之外，其他用户登录时会发送电子邮件通知.

OnLogin $user=×; $exclude_user=anonymous;

下面是邮件通知配置文件支持的参数.

邮件通知配置文件支持的参数

参数名 | 允许多值 | UNIX shell 类型的通配符 | 值描述
$file | 是 | 是 | 文件名.
$dir | 是 | 是 | 事件发生的目录. 目录可以是FTP虚拟目录的形式如"/public"或DOS目录的形式如"C:\test". 使用通配符来包含子目录. 例如, 包含"C:\test"的子目录, 你可以写成"C:\test\*".
$user | 是 | 是 | 用户名.
$group | 是 | 是 | 用户组名.
$exclude_file | 是 | 是 | 不触发事件的文件名.
$exclude_dir | 是 | 是 | 不触发事件的目录名.
$exclude_user | 是 | 是 | 不触发事件的用户名.
$exclude_group | 是 | 是 | 不触发事件的组名.
$file_size | 否 | 否 | 以MB计算最少的文件大小. 例如如果你希望OnFileUpload事件在上传文件大小超过1000M时被触发, 你可以写成$file_size>1000. 这个参数不支持多值.
$down_files | No | No | 用户已下载的文件数目. 例如,如果你想在用户登出时,当他下载超过10个文件触发OnLogout事件,你可以写成$down_files>=10. 这个参数不支持多值.
$up_files | No | No | 用户已下载的文件数目. 例如,如果你想在用户登出时,当他上传超过1个文件触发OnLogout事件,你可以写成$up_files>=1. 这个参数不支持多值.
$disk_space | 是 | 否 | 触发硬盘空间不足警告的条件. 它以硬盘盘符开始,括号内包含以MB计算的最低剩余磁盘空间. 例如, 当你想在硬盘E的空间低于500MB时接收到邮件通知,你可以写成E(500). 当设置这个参数后, Xlight FTP服务器将会每隔30分钟检查设置的磁盘的剩余空间. 因此如果你当前的剩余磁盘空间在设置的门限之上, 但不明原因你收到了磁盘空间低的警告邮件. 请检查你是否运行计划任务(例如备份), 并导致临时降低剩余磁盘空间低于设置的门限.
$email_file | 否 | 否 | 这个文件用来定制当事件被触发时的电子邮件内容. 你可以放很多TO, CC 和 BCC 地址在这个文件内. 它们将替代电子邮件设置里默认的TO地址. 这个文件内TO, CC 和 BCC的地址数目没有限制. 但是你使用的SMTP服务器可能有这方面限制. 另外电子邮件内容的文件大小被限制为16K. 另外一个有用的技巧是这个文件只是在发送邮件之前被Xlight FTP服务器读取. 如果你动态生成邮件内容,这个特性会很有用. 例如,如果你有一个晚上运行的代码编译工作,这个编译会生成日志. 当编译完成后,在上传日志文件到FTP服务器之前, 你可以用脚本写入一个电子邮件文件,包括编译的结果, 邮件接受者的地址. 在上传编译日志之前上传这个文件到FTP服务器. 这样人们在早晨就会接受到电子邮件,通知他们晚上编译的结果,以及日志的位置.

某些参数允许多个值. 多个值之间用逗号","分割. 对于有多个值的参数,值之间的关系是或者. 例如$user = a*, c* 的意思是用户的登录名以字符a 或者 b 开始. 如果一行包含多个参数,所有条件必须满足才能触发事件. 对于这行里没有出现的参数,它们的条件自动满足.

下图是$email_file指定的一个电子邮件文件的内容示例. 以字符%开始的字符串是变量, 它们将在电子邮件发送前被替换为实际的内容.

注意: 在电子邮件头内不能有任何空行. 电子邮件头和邮件内容之间只用一个空行分开. 在电子邮件内容中, 允许空行数没有限制,如下图所示.

下面是电子邮件文件支持的变量. 请注意区别: 电子邮件文件的变量以字符%开始, 但是邮件通知配置文件的参数以字符$开始.

电子邮件文件支持的变量

变量名 | 值描述
%filename | 将被替换为被上传,下载或删除的文件名.
%file_size | 将被替换为被上传,下载或删除的文件大小(比特).
%file_size_mb | 将被替换为被上传,下载或删除的文件大小(MB).
%downfiles | 将被替换为被用户已下载的文件数目.
%upfiles | 将被替换为被用户已上传的文件数目.
%totaldown | 将被替换为被用户已下载流量.
%totalup | 将被替换为被用户已上传流量.
%username | 将被替换为上传,下载或删除文件的用户名.
%password | 将被替换为上传,下载或删除文件的用户的密码.
%groupname | 将被替换为上传,下载或删除文件的用户组名.
%virtual_path | 将被替换为文件被上传,下载或删除所在位置的虚拟路径.
%real_path | 将被替换为文件被上传,下载或删除所在位置的DOS路径.
%client_ip | 将被替换为上传,下载或删除文件的用户IP地址.
%server_ip | 将被替换为上传,下载或删除文件的虚拟服务器的IP地址.
%server_port | 将被替换为上传,下载或删除文件的虚拟服务器的端口地址.
%weekday | 将被替换为当前星期.
%date | 将被替换为当前日期.
%time | 将被替换为当前时间.
%rfc822_date | 将被替换为RFC 822日期的格式. 它用来支持电子邮件的DATE邮件头.
%diskfree<> | 将被替换为剩余磁盘空间. 例如, %diskfree<C> 将显示 C:\ 盘剩余磁盘空间. 它只在OnDiskSpaceLow事件触发时工作.


将Xlight FTP服务器与微软的活动目录(Active Directory)整合使用

1.

Xlight FTP服务器可以和微软的活动目录(Active Directory)整合,用来鉴权用户. 用户可以用相同的用户名,密码访问FTP服务器,电子邮件服务器等等. 注意: 30-天试用期后, 只有专业版本的Xlight FTP服务器支持这个功能.

如果使用活动目录(Active Directory)为外部用户鉴权, 你需要到 [虚拟服务器设置]->[通用]->[虚拟服务器], 选择选项"启用外部用户鉴权" . 单击"设置..."键, 在虚拟服务器的"鉴权类型"中活动目录必须被选择,如下图所示:

当你在服务器上打开活动目录设置对话框时, 如果你的服务器已经加入活动目录域, Xlight FTP服务器将会自动检测你的登录域和搜索用户的起始DN. 如果你没有看到这些信息, 你必须手工配置登录域和搜索用户的起始DN.

如果你想只用活动目录检查用户名和密码, 你可以选择选项"只检查用户名和密码". 如果你不选择这个选项, 活动目录里的user object class的另一个属性 homeDirectory 也会被检查和使用.

设置默认的用户设置

如果你不想使用AD的属性homeDirectory作为用户的FTP主目录, 或者有太多AD用户，你不想为他们每个单独设置主目录. 你可以使用默认的用户设置来设置用户主目录. 这个链接有关于设置用户默认设置的详细说明.

在活动目录中设置用户的主目录

你可以使用微软的Active Directory用户和计算机控制台界面来设置用户的主目录, 如下图所示. 活动目录属性homeDirectory 将会被用做FTP用户的主目录.

注意: 如果用户的主目录在登录时不存在, 用户第一次登录时, Xlight FTP将自动创建这个目录.

在用户主目录使用NTFS权限

当选项"在用户主目录使用NTFS权限"被选中后, Xlight FTP服务器将模拟登录FTP用户的活动目录账户. 他的主目录访问将受到这个用户NTFS权限的限制. 如果这个选项没有被选中,Xlight FTP服务器的系统账户或当前登录账户将被用来访问所有用户的主目录.

当选项"在用户主目录使用NTFS权限"被选中, 但是用户不能访问他的主目录, 关于NTFS权限你需要检查两件事情:

1. 如果用户能够成功通过活动目录认证, 但在FTP日志, 你看到日志如 "450 不能改变目录到 /.". 这非常可能是NTFS权限的问题. 你需要检查帐户是否有访问这个目录的权限. 如果主目录是位于另一台机器上的UNC路径, 从这台机器的主控桌面, 你应该能够通过按"Alt+Ctl+Del"键用这个帐户登录. 从主控桌面, 检查是否他有足够的权限访问设置的主目录.

2. 你不应该将用户的主目录放在域控制器. 微软的域安全策略不允许普通用户访问在域服务器上的资源. 尽管这个用户能够成功登录到AD域, 他将不能访问位于域服务器上的主目录. 只有具有系统管理员权限的只有帐户才能访问域控制器上的主目录.

兼容IIS FTP活动目录用户隔离模式

Xlight FTP服务器提供了一个和IIS FTP服务器 6.0引入的活动目录用户隔离模式兼容的方式. 你可以选择选项"兼容IIS FTP活动目录用户隔离模式". 当这个选项被选中后, Xlight FTP服务器将会读取并使用IIS FTP 活动目录的属性 msIIS-FTPRoot和msIIS-FTPDir, 用它作为用户的主目录. 如果这两个IIS FTP的属性在活动目录里没有被设置或不存在, 活动目录属性homeDirectory 将会自动被用做主目录.

设置虚拟服务器的公共目录

你可以设置虚拟服务器的公共目录. 用户鉴权后, 所有用户都能够看到并从公共目录下载, 如下图所示:

因为用户在AD里的主目录隐含使用"/"作为用户的虚拟目录, 你不应该使用"/"作为公共虚拟目录. 否则因为"/"是重复的, 当AD用户登录后, 他只能看到公共目录里的内容, 而不是他的主目录. 在上面的图里, 我们使用"/public"作为公共虚拟目录.

在公共目录使用NTFS权限

当选项"在公共目录使用NTFS权限"被选中, Xlight FTP服务器将模拟用户的AD(活动目录)账户. 公共目录访问将检查每个AD用户的NTFS权限. 基于NTFS权限给予公共目录更多的权限控制灵活性，它将取代公共目录的本地FTP权限. 然而模拟用户的AD(活动目录)账户在某些罕见的情况下可能会失败. 如果模拟用户失败, 公共目录的本地FTP权限将被使用. 因此如果你使用NTFS权限控制公共目录的访问, 你依然需要为公共目录设置恰当的(最少的)本地FTP权限用于模拟AD用户失败的情况.

在用户组使用NTFS权限

当选项"在组目录使用NTFS权限"被选中, Xlight FTP服务器将模拟用户的AD(活动目录)账户. 组目录访问将检查每个AD用户的NTFS权限. 当用户登录到活动目录, 列在这个用户memberOf属性里(memberOf属性列出用户是成员的组)的和本地FTP组相匹配的第一个组将成为这个用户的FTP组. 在本地Xlight FTP服务器, 用户组被创建后, 你可以设置组目录.

创建并允许匿名用户访问FTP服务器

当用户使用活动目录鉴权时, 你可能希望允许使用任意密码的匿名用户访问FTP服务器. 因为在活动目录内的用户必须使用密码, 匿名用户不能创建在活动目录内.

不过你可以在本地创建一个用户名是"anonymous"的匿名用户,并在他的设置([用户设置]->[账号]->[外部鉴权选项])中选择选项"忽略外部用户鉴权", 如下图所示. 这个本地的FTP用户将会忽略外部用户鉴权,而使用本地FTP鉴权. 他的设置也将来自本地FTP服务器.

查找活动目录的问题

如果你在Xlight FTP服务器与微软的活动目录整合时遇到问题, 你可以选择外部用户认证的选项"在错误日志显示调试跟踪信息". 这个选项被选中后, Xlight FTP服务器的活动目录信息将会被写到错误日志.

这里有两个和活动目录相关的常见设置错误.

1. 普通用户的主目录被设置到位于域控制器的机器上的目录. 因为微软的域安全策略不允许普通用户登录域控制器并访问在域控制器上的资源. 尽管这个用户能够成功登录AD, 登录后他不能访问他的主目录. 如果你想在域控制器上访问用户目录, 链接http://technet.microsoft.com/zh-cn/library/cc785165(WS.10).aspx 提供了步骤更改微软默认的域安全策略.

2. 当在较旧的Windows系统上运行Xlight FTP服务器, 例如Windows 2000, 运行Xlight程序的账户必须有"Act As Part Of The Operating System" (SE_TCB_NAME) 权限. 否则活动目录的用户将不能访问他的主目录. (SE_TCB_NAME) 权限能够在Local Security Policy的mmc snap-in界面在LocalPolicies/User Righs Assignments下设置. 这个问题是Windows XP之前的操作系统限制导致的. 因此对于和包括Windows XP之后的操作系统, 不需要为运行Xlight FTP服务器的账户分配这个权限.

如何在活动目录内安装扩展模版xlightFTPdUser

这里还有另外一个选项"使用扩展Schema "xlightFTPdUser"". 它通过扩展schema xlightFTPdUser, 提供了很多和Xlight FTP服务器相关的FTP用户控制参数.

当这个选项被选择后, 活动目录里user object class的属性 homeDirectory将不再被使用. 相应的来自扩展模版xlightFTPdUser的属性ftpHomeDirectory将被用来设置这个用户的主目录.

在使用这个选项之前, 扩展模版xlightFTPdUser必须在活动目录内被安装. 这个安装步骤在下面.

安装扩展模版xlightFTPdUser, 你首先需要打开文件AD-xlightFTPdUser.ldif替换用你的域替换所有DC=X如下图所示. 文件AD-xlightFTPdUser.ldif可以在Xlight FTP服务器安装目录下的ldap目录内找到.

保存文件AD-xlightFTPdUser.ldif. 你可以使用工具ldifde.exe导入模版xlightFTPdUser到活动目录,如下图所示. 你必需作为域管理员登录才能有权限执行下面命令.

如果上面的导入命令执行成功, 你可以用MMC来检查模版xlightFTPdUser是否被成功导入如下图所示:

在MMC Snap-in, 选择Active Directory Schema,点击"Add"键后再点击"Close"键,如下图所示:

在下面的窗口如果你能够看到类型是Auxiliary的object class xlightFTPdUser, 模版xlightFTPdUser 就已经被成功导入.

你可以使用ADSI Edit在活动目录内修改和Xlight FTP服务器相关的用户属性. ADSI Edit可以在Windows Support Tools 的产品CD中找到,也可以从微软的网站下载. 从 MMC Snap-in 窗口, 添加 ADSI Edit 如下图所示:

用ADSI Edit连接到你的活动目录. 选择CN=Users, 你可以在右面的窗口发现你的用户. 选择你准备设置Xlight FTP 服务器相关参数的用户,如下图所示:

按鼠标右键; 点击右键菜单选项"Properties". 从对话框里, 选择并编辑Xlight FTP 服务器相关属性如下图所示. 这些属性以"ftp"开头. 你只需要修改你需要使用的属性. 然而如果你使用属性ftpHomeDirectory, 当"在用户主目录使用NTFS权限的选项"没有被选择时, 你需要同时修改属性ftpHomePerm用来控制ftpHomeDirectory的用户权限.

到这一步你应该能够使用扩展模版xlightFTPdUser来为用户设置Xlight FTP服务器相关的选项.

设置FTP用户的虚拟目录

从Xlight FTP服务器版本3.5开始, 你可以通过使用扩展模版xlightFTPdUser的属性ftpVirtualPaths来为用户设置多个虚拟目录. ftpVirtualPaths字符串是"|"分割的虚拟目录，实际目录和权限的结合. 它的格式是: "虚拟目录 | 实际目录 | 权限". 例如,一个虚拟目录可以是 "/files/ | C:\Downloads\ | RLS----", 其中 "/files/" 是虚拟目录, "C:\Downloads\" 是映射到"/files/"的实际目录, "R--L--S"是"/files/"的权限标记. 虚拟目录, 实际目录和权限用"|"符号分割. 对于权限标记的含义，你可以参考"ftpHomePerm"的描述. 注意: 虚拟目录必须是UNIX形式的目录，实际目录必须是Windows形式的目录.
参数%username%可以用于real path. %username%将会被替换成实际登录的用户名. 如果用户登录时real path不存在, Xlight FTP服务器将会自动创建目录.


将Xlight FTP服务器与LDAP服务器整合使用

Xlight FTP服务器可以和LDAP服务器整合,用来鉴权用户. 用户可以用相同的用户名,密码访问FTP服务器,电子邮件服务器等等. 注意: 30-天试用期后, 只有专业版本的Xlight FTP服务器支持这个功能.

在这个示例里, 我们使用Novell公司的eDirectory LDAP服务器演示将Xlight FTP服务器与LDAP服务器整合的步骤. 对于其他LDAP服务器, 设置步骤很类似.

如果使用LDAP为外部用户鉴权, 你需要到 [虚拟服务器设置]->[通用]->[虚拟服务器], 选择选项"启用外部用户鉴权" . 单击"设置..."键, 在虚拟服务器的"鉴权类型"中LDAP必须被选择,如下图所示:

你需要设置LDAP服务器的IP地址或者域名. 因为Novell公司的eDirectory LDAP服务器默认强制使用TLS连接, 你需要启用选项 "使用TLS/SSL 连接". 如果LDAP服务器不强制使用TLS/SSL连接,你可以不需要启用这个选项.

大部分LDAP服务器默认支持匿名绑定(Anonymous Bind), 因此你可以使用选项"匿名绑定". 如果你的LDAP服务器不支持匿名绑定, 你需要设置"绑定DN"和"绑定密码".

你最好设置"搜索用户的起始DN". 或者你可以点击"获取DN"键获取DN. 如果你不设置,Xlight FTP服务器将从根DN开始搜索用户, 但也可能找不到用户数据.

Xlight FTP服务器搜索LDAP服务器,用存储在object Class inetOrgPerson的属性uid匹配用户登录名.

如果你想只用LDAP服务器检查用户名和密码, 你可以选择选项"只检查用户名和密码". 如果你不选择这个选项, LDAP里的属性 homeDirectory(POSIX 属性) 也会被检查和使用.

设置默认的用户设置

如果你不想使用LDAP的属性homeDirectory作为用户的FTP主目录, 或者有太多LDAP用户，你不想为他们每个单独设置主目录. 你可以使用默认的用户设置来设置用户主目录. 这个链接有关于设置用户默认设置的详细说明.

使用微软的ADAM作为LDAP服务器

微软的ADAM可以用作LDAP服务器. 但它的默认设置和其他LDAP服务器有些不同. 例如,微软的ADAM中属性uid默认属于类user, 但大多数LDAP服务器使用inetOrgPerson作为属性uid的类. 因此如果你使用微软的ADAM作为LDAP服务器, 你需要选择选项 "使用微软的ADAM作为LDAP服务器". 你还需要将和"绑定DN (Bind DN)"相关联的用户放到ADAM的"Reader Role"中, 因为ADAM默认的访问规则不允许用户搜索LDAP目录.

使用用户身份模拟访问他主目录里的UNC路径

当用户主目录是UNC路径时, 默认Xlight FTP服务器会使用运行服务器的账户访问这个UNC路径. 例如,如果Xlight FTP服务器作为系统服务运行,通常这个账户时本地系统账户. 但如果选项"使用用户身份模拟访问他主目录里的UNC路径"被选中, 将会使用登录用户访问UNC路径. 因此,登录用户必须有访问UNC路径的NTFS权限.

为FTP服务器设置公共目录

你可以设置虚拟服务器的公共目录. 用户鉴权后, 所有用户都能够看到并从公共目录下载, 如下图所示:

创建并允许匿名用户访问FTP服务器

当用户使用LDAP鉴权时, 你可能希望允许使用任意密码的匿名用户访问FTP服务器. 因为在LDAP服务器内的用户必须使用密码, 匿名用户不能创建在LDAP服务器内.

不过你可以在本地创建一个用户名是"anonymous"的匿名用户,并在他的设置([用户设置]->[账号])中选择选项"忽略外部用户鉴权", 如下图所示. 这个本地的FTP用户将会忽略外部用户鉴权,而使用本地FTP鉴权. 他的设置也将来自本地FTP服务器.

如何在eDirectory LDAP服务器内安装扩展模版xlightFTPd

这里还有另外一个选项"使用扩展Schema "xlightFTPdUser"". 它通过扩展schema xlightFTPdUser, 提供了很多和Xlight FTP服务器相关的FTP用户控制参数.

当这个选项被选择后, LDAP服务器里POSIX object class的属性 homeDirectory将不再被使用.相应的来自扩展模版xlightFTPdUser的属性ftpHomeDirectory将被用来设置这个用户的主目录.

注意: 如果用户的主目录在登录时不存在, 用户第一次登录时, Xlight FTP将自动创建这个目录.

在使用这个选项之前, 扩展模版xlightFTPdUser必须在LDAP服务器内被安装. 我们使用Novell公司的eDirectory LDAP服务器来演示安装扩展模版xlightFTPdUser的步骤

安装扩展模版xlightFTPdUser, 你需要打开Novell公司的ConsoleOne程序,在NDS Import/Export Wizard中选择import LDIF file如下图所示:

选择文件eDirectory-xlightFTPdUser.ldif, 这个文件是用于eDirectory的LDIF文件, 它可以在Xlight FTP服务器安装目录下的ldap目录内找到. 导入扩展模版xlightFTPdUser后, 你应该能够在Schema Manager窗口内看到它, xlightFTPdUser 显示在最后一个Object Class如下图所示:

使用扩展模版xlightFTPdUser, 你可以选择一个用户,然后选择菜单选项"Extensions of this object", 如下图所示:

点击按键"Add Extensions...". 在对话框内, 选择xlightFTPdUser然后点击OK键,如下图所示:

在下面显示的对话框内, 填入"FTP properties"作为名字并点击OK键. 你也可以使用其他名字.

模版xlightFTPdUser将出现在"current auxiliary class extensions"内,如下图所示:

选择用户的属性(properties). 在Other Edit标签, 你可以点击"Add..."键添加Xlight FTP服务器用户相关的属性. 这些属性以"ftp"开头. 你只需要添加你需要使用的属性. 然而如果你添加了属性ftpHomeDirectory, 你必须同时添加属性ftpHomePerm用来控制ftpHomeDirectory的用户权限.. 你可以更改这些属性的值,如下图所示:

到这一步你应该能够使用扩展模版xlightFTPdUser来为用户设置Xlight FTP服务器相关的选项.

设置FTP用户的虚拟目录

从Xlight FTP服务器版本3.5开始, 你可以通过使用扩展模版xlightFTPdUser的属性ftpVirtualPaths来为用户设置多个虚拟目录. ftpVirtualPaths字符串是"|"分割的虚拟目录，实际目录和权限的结合. 它的格式是: "虚拟目录 | 实际目录 | 权限". 例如,一个虚拟目录可以是 "/files/ | C:\Downloads\ | RLS----", 其中 "/files/" 是虚拟目录, "C:\Downloads\" 是映射到"/files/"的实际目录, "R--L--S"是"/files/"的权限标记. 虚拟目录, 实际目录和权限用"|"符号分割. 对于权限标记的含义，你可以参考"ftpHomePerm"的描述. 注意: 虚拟目录必须是UNIX形式的目录，实际目录必须是Windows形式的目录.
参数%username%可以用于real path. %username%将会被替换成实际登录的用户名. 如果用户登录时real path不存在, Xlight FTP服务器将会自动创建目录.


反盗链保护

什么是反盗链保护?

作为系统管理员在你的网站提供文件下载和链接，你可能希望用户从你的主页上点击下载链接，因为这样他们能够在下载前，看到你主页上的广告。但是你会经常面对这样的情况，一些人复制了你的下载链接，并放到他们自己的网页上。这样导致了很多不是直接来自你的主页的下载请求，偷走了你的网站的大量带宽。在反盗链保护的帮助下，你可以阻止这种情况发生。

在Xlight FTP 服务器，反盗链保护如何工作?

Xlight FTP 服务器提供了一个新的机制用于反盗链保护，FTP服务器会自动在所有FTP下载链接前加一段随机的路径. 例如，如果你原始的FTP下载链接是 "/public/download/test.txt", 经过反盗链保护后，FTP下载链接自动变为 "/xxxx/public/download/test.txt", 其中 "xxxx" 是FTP服务器自动生成的随机路径. Xlight FTP 服务器能够被配置成经过一段时间自动更改 "xxxx" 部分, 因此FTP下载链接 "/xxxx/public/download/test.txt" 也会自动变化. 偷盗的链接无法及时更新最顶端路径的 "xxxx" 部分, 盗链者就不能从FTP 服务器下载.

Xlight FTP 服务器的xferlog里面, 随机路径的部分被自动移除, 因此反盗链保护不会影响服务器的下载统计结果.

当反盗链随机路径改变后，如何更新网站的下载链接?

每当反盗链随机路径改变时，Xlight FTP 服务器能够被配置输出改变的随机路径部分到一个文件，或执行一个外部的程序，将随机路径 "xxxx" 作为第一个参数传递给这个外部程序. 在这两个方法的帮助下, 你可以使用你自己的cgi脚本或其他程序更新网站的下载链接.

如何保护从反盗链随机路径改变到网站下载链接更新之间的这段转换时间的链接有效?

因为从反盗链随机路径改变到网站最终更新它的下载链接可能有一些延迟，如果某个用户恰好在这段时间点击网站的下载链接，他可能会去到旧的下载链接，而这个链接在FTP服务器已经失效。 Xlight FTP服务器有一个选项，你可以设置一段保护时间。在这段保护时间内，旧的下载链接和新的链接同时有效，这样在这段转换时间中，点击下载链接的用户就不会遇到失效链接的情况。


UNC路径账号身份模拟

什么是UNC路径账号身份模拟?

UNC 是通用命名约定的简写. 它是一种用于确定保存在网络服务器上的共享目录位置的格式. UNC使用下面的格式: \\server-name\shared-resource-pathname. 所以举例来说, 访问在共享服务器mcp0064的共享目录public, 你应该写成: \\mcp0064\public\test.txt.

通常当Xlight FTP服务器访问UNC路径时, 它会使用当前登录用户的账号访问. 但是当前登录用户的账号可能没有权限访问另一个服务器上的UNC路径. UNC路径账号身份模拟是用来解决这个问题. 你可以设置一个身份模拟账号，这个账号可以是另一个服务器上的用户账号，并且有足够的权限访问UNC路径. 在公共, 用户和组目录设置窗口里, 点击图标 [image] 设置UNC路径账号身份模拟. 当你设置好UNC路径账号身份模拟后, Xlight FTP服务器会使用身份模拟来访问这个UNC路径. 注意: 30-天试用期后,这个功能只被标准版和专业版的Xlight FTP服务器支持.

如何加速UNC路径账号身份模拟?

有时候，当你在使用UNC路径，你会发现更换目录或列目录非常慢. 这可能是NETBIOS名字解析引起的, 尤其当共享服务器使用不同的DNS服务器或在另一个域里. 尽可能直接使用共享服务器的TCP/IP地址. 例如, 不用 '\\computer\network share', 使用: '\\192.168.0.1\share'. 在Xlight FTP服务器运行的机器里禁止NETBIOS可以加速UNC路径的访问 - 鼠标右击桌面上[网络邻居] ->[属性] ->[本地连接] ->[属性]，打开“本地连接属性”对话框。选择[Internet协议(TCP/IP)]->[属性]->[高级]->[WINS]，选中下侧的“禁用 TCP/IP上的NetBIOS”一项即可解除TCP/IP上的NetBIOS, 象下图显示那样. 如果你有超过一个网卡(本地连接)，在每个网卡上都用同样方法禁止NetBIOS.


Xlight 程序注册

Xlight FTP服务器中文有三个版本: 个人版本，标准版和专业版本.

下面是Xlight FTP服务器三个版本的功能比较:

功能 | 个人版本 (免费) | 标准版本 | 专业版本
同时在线用户 | 5 | 50 | 没有限制
支持远程管理客户端 | 否 | 否 | 是
支持ODBC数据库 | 否 | 否 | 是
记录文件传输日志到ODBC数据库 | 否 | 否 | 是
电子邮件事件通知 | 否 | 否 | 是
支持活动目录(Active Directory) | 否 | 否 | 是
支持LDAP | 否 | 否 | 是
支持UNC路径账号身份模拟 | 否 | 是 | 是
支持128比特SSL加密 | 否 | 是 | 是
支持SSL客户证书认证 | 否 | 是 | 是
支持反盗链保护 | 否 | 是 | 是
支持UPnP | 是 | 是 | 是
多个虚拟服务器 | 是 | 是 | 是
高级的配置管理功能 | 是 | 是 | 是
分级的虚拟目录系统 | 是 | 是 | 是
高级的访问控制 | 是 | 是 | 是
高级的带宽管理 | 是 | 是 | 是
支持MODE Z | 是 | 是 | 是
支持xferlog日志 | 是 | 是 | 是
支持IPv6 | 是 | 是 | 是
其他功能 | 是 | 是 | 是

Xlight FTP服务器的注册网址在http://www.xlightftpd.com/cn/purchase.htm

这里有链接到网路共享软件注册中心代理的链接，选择你需要的版本，并单击相应购买链接，完成网路共享软件注册中心的购买流程，在48小时内就会收到注册码。


常见问题

如何升级正在运行的服务器

升级前需要先停止运行的服务器.如果服务器作为Windows系统服务运行,需要到"控制面板-管理工具-服务",在服务窗口中找到 Xlight FTP Server,点鼠标右键,在弹出菜单中选停止.然后关闭服务窗口.

方法1. 卸载旧版本,旧的配置文件会被保留.重新安装新版本到以前的安装目录.(如果以前FTP服务器作为系统服务运行,需要重新安装服务器成为Windows系 统服务).

方法2. 最简单的方法是从http://www.xlightftpd.com/cn/download/xlight.rar下载服务器运行文件,直接用这个运 行文件覆盖旧的运行文件(默认安装在在c:\program files\xlight\目录). Xlight服务器只有一个运行文件xlight.exe, 其他是服务器配置文件和服务器帮助文件.这种方法不需重新安装服务器的Windows系统服务。

如何备份服务器的设置文件

在xlight服务器的安置目录里，有"ftpd.hosts","ftpd.option","ftpd.password", "ftpd.rules"."ftpd.users"这5个文件，里面是服务器的设置，你只要备份这5个文件即可。如果服务器使用配额功能，你还需要备份 ".quota"文件。

如何设置IP地址范围

xlight服务器的很多设置需要IP地址范围. 你可以有三种方法设置IP地址范围. 1. 通配符*, 通配符只能用来表示完整的地址段,如192.168.0.1 - 192.168.0.255, 你可以用通配符192.168.0.*表示. 2. 直接设置IP地址范围, 如192.168.1.15 - 192.168.1.45. 3. 子网掩码. 如192.168.0.1/24, 或192.168.0.1/255.255.255.0

如何提高服务器的下载上传速度

Socket缓存大小 - 提高Socket缓存大小可以显著提高速度。提高发送数据的缓存可以提高用户下载速度，提高接受数据的缓存可以提高用户上传速度。 具体多大的Socket缓存适合你的服务器，可能你需要自己试验。

如何使用上传文件SFV检查功能

1. 首先要在虚拟服务器里启用 -"上传文件SFV检查"- 这个选项

2. 对你要上传的文件生成".sfv"为后缀的校验文件。可以用flashsfv工具生成校验文件。flashsfv可以免费从FlashFXP的网站获得。

3. 首先上传".sfv"为后缀的校验文件，然后上传其他文件。 Xlight FTP服务器会自动对上传的文件根据校验文件里的CRC32值，进行检查，如果上传文件的CRC32值和校验文件里的CRC32值不符合，Xlight FTP服务器会将上传文件自动更名为".bad"后缀的文件. 当CRC32正确文件被再次上传后，相应的".bad"文件会被自动删除。

如何提高大量小文件的下载速度

登录后命令速度 - 对于每个用户, 它可以控制这个用户登录后每秒可以运行的FTP命令总数. 系统默认是20条FTP命令。 因为这个限制，默认每秒最多能连续下载10-20个小文件。当你有大量小文件需要下载获上传时，你可以暂时提高这个用户的命令速度，这样可以大大加速小文 件的下载上传速度。登录后命令速度无论大小都不会影响用户 的文件下载速度。

但是平时出于安全考虑，不要将用户命令速度值设的太高. 因为高的命令执行速度会给恶意的用户实行DOS(拒绝服务)攻击的机会. 通常来说，对普通用户每秒能够执行10-20条FTP命令已经足够了. 降低用户命令执行的速度也有助于提高服务器的性能,同时能够减弱FTP搜索引擎和FTPLIST等软件，以及用户大量的FTP搜索行为对服务器性能的影 响。

如何使用非系统管理员帐户运行Xlight FTP服务器

通常你应该使用属于系统管理员组的帐户运行Xlight FTP服务器. 但从Xlight FTP服务器 2.82 和更高的版本, 你可以使用非系统管理员帐户运行Xlight FTP服务器. 你需要完成下面的设置:

1. 非系统管理员帐户必须对XlightFTP服务器程序安装所在目录有写入权限.

2. 如果你想在XlightFTP服务器使用隐式或显示SSL, 你需要从微软的网站下载工具WinHttpCertCfg.exe, 使用这个工具赋予非管理员帐户访问证书私有密钥的权限. 例如, 如果你想给TESTUSER帐户权限使他能够访问位于证书存储区"My"内的证书"MyCertificate"的私有密钥, 你需要使用这个命令 winhttpcertcfg -g -c LOCAL_MACHINE\My -s MyCertificate -a TESTUSER. 用于XlightFTP服务器的SSL证书保存在本地机器(LOCAL_MACHINE)的证书存储区"My"内.

3. 如果你想在XlightFTP服务器使用SSH2/SFTP, 你需要到目录"C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto". 对于 RSA SSH 主机密钥, 进入子目录"RSA\MachineKeys"; 对于DSS SSH主机密钥, 进入子目录"DSS\MachineKeys". 你可以看到几个文件, 每个文件对应于一个主机密钥. 你需要找到Xlight的SSH 主机密钥文件，并给非系统管理员帐户对这个文件的只读权限. 因为目录里的文件名都是UUID格式, 你不能直接发现Xlight的SSH 主机密钥文件. 但是你可以用下面三种方法之一赋予非系统管理员帐户对Xlight的SSH 主机密钥文件的只读权限。

  • 给非系统管理员帐户对"MachineKeys"目录和里面所有文件的只读权限.
  • 如果你知道Xlight SSH主机密钥创建的时间, 你可以用文件修改的时间找到Xlight使用的SSH 主机密钥.
  • 你也可以从网站"http://www.jensign.com/KeyPal/"下载工具 "KeyPal.exe". 从KeyPal运行的窗口, 按字母"M"用于显示机器密钥仓库里的密钥. 从返回机器密钥列表中, 找到名字以"ssh-"开头的密钥, 这就是Xlight的SSH主机密钥. 然后按字母"U", 输入前面机器密钥列表里找到的密钥容器的号码. 一个uniquecontainer名字将会被显示. 这就是Xlight的SSH主机密钥在"MachineKeys"目录里的文件名.

选择这个密钥文件, 单击鼠标右键. 从菜单里, 选择"属性", 然后是"安全"的标签. 赋予非系统管理员帐户对这个文件只读的权限.


外部认证的默认用户设置

外部认证的默认用户设置

默认用户设置用于给外部认证用户默认的设置. 这些设置将会应用于所有通过外部认证的用户. 如果相同的用户设置存在于外部源，如数据库或LDAP服务器，它们将取代默认用户设置.

默认用户设置用于某些情况，当公司政策不允许保存用户的FTP设置于外部源或需要给所有外部FTP用户快速的设置. 例如，某些公司不允许在活动目录里使用扩展模板. 因此, FTP的用户磁盘配额不能保存在活动目录里. 在这种情况下, 默认用户设置可以用来给活动目录的用户分配默认的FTP磁盘配额.

默认设置里的用户主目录

当外部用户认证只用于认证目的时，默认设置里的用户主目录可以用来给外部认证用户分配FTP主目录. 用户主目录支持参数 %username%， %username%在用户登录后将被替换成实际的用户名. 例如，如果你需要所有的用户主目录在"C:\ftp"目录下, 你可以设置默认的用户主目录为"C:\ftp\%username%"，如下图所示. 当用户登录时如果他的主目录不存在，它将会被自动创建.

默认设置里的用户主目录将被存储在外部源的相同值所取代. 例如, 如果同一个用户在活动目录里的homeDirectory属性也被设置, 它将取代默认设置里的用户主目录. 如果你不想这种取代发生, 你可以选择Xlight FTP服务器的活动目录选项 "只检查用户名和密码". 当这个选项被选中, Xlight FTP服务器将只认证活动目录用户, 但不从活动目录读任何属性值b. 因此取代默认设置里的值不会发生.


如何在ADSL路由器/防火墙后设置FTP服务器端口映射

1. 确认你是否需要设置Xlight广域网IP接口地址。如果服务器IP地址是在范围192.168.*.* 或 10.*.*.* ,或 172.13.* .*- 172.32.*.* 内的私有IP地址，说明服务器在NAT设备后面（ADSL路由器通常是NAT设备），用户从公网是不能直接命令访问这个FTP服务器。如果希望服务器被公网访问，就需要设置Xlight广域网接口IP地址（或域名）。如果 你的服务器IP地址不在上面范围内，你的服务器是使用公共IP，可能服务器只是在防火墙后，你只需要打开为PASV命令使用的端口范围。

2. 确认是否需要为ADSL路由器/防火墙配置端口映射，如果服务器在ADSL路由器后，服务器IP地址是上面提到的私有IP地址，通常需要在ADSL路由器 内配置端口映射。你需要参考ADSL路由器的手册如何设置端口映射（端口影射，在路由器手册里通常叫"虚拟服务器"，也有叫"转发规则→虚拟服 务器"，或其他名称的）。路由器映射的端口范围包括FTP标准端口21，和PASV命令使用的端口范围。路由器内映射的端口范围必须和你在Xlight的 全局选项→通用→防火墙→PASV端口范围内设置的范围一致，只有FTP标准端口21不需要设置在Xlight全局选项 的端口范围内。如果你在防火墙后，而且使用公共IP，你通常只要在防火墙上打开一段端口范围。

3. 在Xlight的全局选项→通用→防火墙→启用被动模式(PASV)端口范围，填入上面所设置的端口范围。如果服务器使用私有IP,你还需要在这里填入广域网IP地址，或域名。

4. 如果用户从公网还是不能工作，到主窗口的日志内，检查服务器的会话日志。如果不能看到客户公网连接的任何日志, 说明ADSL路由器/防火墙设置不对，没有打开FTP标准端口21。如果你能看到客户公网连接的日志，但客户不能获得目录列表，说明PASV命令使用的端 口范围映射不对，找到在客户发出PASV命令后，Xlight 服务器象下面的响应：
227 Entering Passive Mode (192,168,0,100,m,n)

其中 m，n是定义了PASV端口的值，计算方式是m*256+n。例如m=10而
n=20，那么PASV端口就是10*256+20=2580。

检查这个范围是否在你设置的PASV范围内，如果不在，更改Xlight的全局选项→通用→防火墙→PASV端口范围到你希望的端口范围。

5. 确认你的广域网接口IP是公共IP地址。确认227 Entering Passive Mode
(x,x,x,x,m,n) m，n 内的IP地址是公共IP地址 = 你配置的广域网接口IP，如果不是，可能Xlight的全局选项→通用→防火墙→广域网IP使用固定IP，这一项没有被填写，或广域网IP使用域名，这一项没有填写。

6. 确认端口20外出的方向在防火墙上被打开，如果端口20外出的方向没有打开，ftp的PORT命令将无法工作. 如果你使用软件防火墙，这种类型的防火墙默认可能会屏蔽外出端20．