Xlight FTP 服务器 帮助文档

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

目录列表选项

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

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

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

NLST在空目录返回"226 文件传送完毕"- 通常当一个目录为空,NLST 命令将会返回"550 没有文件" 以和 FTP RFC-959 标准要求兼容。 然而有些在自动运行程序里的FTP客户,在这种情况下端期望得到"226 文件传送完毕"。 这个选项就是用于兼容这种客户端。

LIST 命令目录列表格式

FTP 服务器标准格式 - 这个选项以服务器标准格式输出LIST命令目录列表.

Netware FTP服务器格式 - 这个选项以Netware FTP服务器的列表格式输出LIST命令目录列表.

IIS FTP 服务器格式 - 这个选项以IIS FTP服务器的列表格式输出LIST命令目录列表.

MS-DOS DIR 命令格式 - 这个选项以MS-DOS DIR 命令格式输出LIST命令目录列表.

文件传输选项

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

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

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

ASCII模式选项

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

转换UNIX换行到Windows换行格式 - 当FTP客户端发送"TYPE A"命令,为文本文件设置ASCII传输模式后,默认情况下,文本文件里的换行符会被转换成UNIX下的换行符。但是如果这个选项被启用,换行符会被转换成Windows下的换行符。

保留FTP TYPE命令设置的传输类型 - Xlight FTP服务器使用Binary模式作为默认的文件传输模式。如果需要使用不是Binary模式的其他传输模式,客户端需要在每次文件传输前发送TYPE命令设置传输模式。当启用这个选项后,FTP服务器将保持用户最后一次设置的模式,用它作为随后文件传输的模式。

其他选项

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

$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服务器实际传入的参数值

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

删除文件和目录到Windows回收站 - 这个选项被选择后, 当FTP服务器删除文件或目录时, 它将被送到Windows回收站,而不是永久删除.

转换FTP路径中的Windows反斜杠为UNIX正斜杠 - 这个选项是为了和某些使用Windows反斜杠为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公共目录*.exeUpload任意任意任意任意

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

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