ioFTPD文档:各种配置文件详细说明

1. 目录结构
———————————————————————————————————

ioFTPD主目录包括以下文件:Changelog, TODO, README.1ST

更新记录文件包含了ioFTPD的最新更新内容,可使您及时了解软件的bug修正及新增特征等。
TODO文档列出了ioFTPD未来版本中要添加的内容。
README.1ST文件为一些必要的法律公告。

——————————————————————————–

ioFTPD下的目录包括:

/cache 包括缓存文件,您不能改动此目录下的任何文件。
/etc 目录内文件包括

UserIdTable -用户及其UID(用户ID)列表
GroupIdTable – 组及其GID(组ID)列表
default.vfs和admin.vfs – VFS示例文件
ioftpd.env – 定义环境变量

/groups 组数据文件。文件名即为GID(组ID)
/help 帮助文件。
/lib TCL库
/logs 服务器运行记录文件如Error.log及Sysop.log等.
/scripts ioFTPD的第三方脚本。
/site 您的site的缺省根目录。
/source 可能对脚本编写有用的源代码。
/system ioFTPD.exe, ioFTPD.ini, tcl84.dll
/text 用户登陆时显示的信息文件,以及运行命令时显示的状态信息等文件。
/users 用户数据文件。文件名为UID(用户ID)。

2. 安装指南

——————————————————————————————-

此文档可让您在几分钟内最快速成功配置ioFTPD!

1. 解压ioFTPD文件包。

2. 编辑 ..\etc\default.vfs. 注意根目录必须加载为:";/";.
如::
"d:\ftp" / <– 用已有的空目录作根目录。
"e:\mp3" /mp3 <– 在根目录加载为/mp3

注意组ioftpd(缺省用户ioFTPD所在的组)的虚拟目录文件缺省为admin.vfs。要让ioftpd组使用default.vfs,可用命令: site change ioftpd groupvfsfile ..\etc\default.vfs 或将..\groups目录下0文件内的VFSFILE行删除即可。

3. 打开..\system\ioFTPD.ini.

在ioFTPD.ini中,注释行用“#”,取消选项/设置用分号";"。
# Comment
;Disabled = True

3a. 设置DEVICES。.
在多数情况下可用缺省设置。
缺省device名为";Any";.
[Any]
Host = 0.0.0.0 <– 未定义IP,则允许在任何IP上连接。
Ports = 1024-2048 <– 数据传输端口。
Random = True <– 使用随机端口。

3b. 设置SERVICES(示例仅用于FTP_Service)

[FTP_Service]
Type = FTP
Device_Name = Any <– 使用的Device。缺省为";Any";
Port = 9999 <– 连接端口
Description = My FTP Service
User_Limit = 10 <– 最大连接用户数。
Allowed_Users = *
Messages = ..\text\ftp
Require_Encrypted_Auth = !* <– 无用户使用加密请求。
Require_Encrypted_Data = !*
;Certificate_Name = 192.168.1.11 <– SLL认证名(CN):若不使用认证,请注释此行,否则你的ftpd不会运行!
Explicit_Encryption = True
Encryption_Protocol = SSL3
Min_Cipher_Strength = 128
Max_Cipher_Strength = 384
;Get_External_Ident = False <– True/False. 保护支持
;Data_Devices = <– 流量平衡设备
;Random_Devices = False <– True/False. Data_Devices使用随机次序。

需要更高级的devices及services,如NAT及流量平衡等设置样例文件,请参见ioFTPD-Advanced.ini。

4. 用缺省的管理员(Master)帐号登陆,注意在ioFTPD下,用户名、密码、组名、标识名及其他名称均区分大小写!
用户名:ioFTPD
密码:ioFTPD

5. 使用SITE PASSWD <新密码> 更改缺省的ioFTPD密码。

6. 打开并编辑 ..\etc\Hosts.Rules,使其可由外部IP连接。 在最新的未注册版本中,缺省规则为禁止(DENY). 注释此缺省行,并去掉POLICY ACCEPT 2行的注释。若ioFTPD.exe正在运行,则需重启(修改Hosts.Rules需要完全重启)。

完成!现在请阅读此文档其余部分,提高您的配置技巧。

问:什么是Master帐号?

答:Master权限帐号登陆后可做几乎任何事。可浏览所有目录,传输任何文件,即使其被别的用户限制。可以更改别的用户或组(但不能更改别的Master帐号)的设置。Master的旗标是"M"。

注意,组ID1保留给NoGroup组,不可删除/更改此组!

其他FAQ,请见ioFTPD主页的知识基地.

———————————————————————–
提示#1: 好的脚本、sfv校验、sitebot、已知bug及其他ioFTPD信息,请查看论坛.
提示 #2: 在登陆服务器时出现错误,请检查..\logs\Error.log文件。
提示 #3: 要学会如何用site命令控制ioFTPD。
提示#4: 请阅读此文档的其他部分,更多了解ioFTPD。
———————————————————————–
3. 虚拟文件系统(VFS)
————————————————————————————-

VFS文件用来创建服务器的文件目录结构,用户登陆后即可见。示例的VFS文件为default.vfs和admin.vfs,均位于..\etc目录下。

基本VFS设置
子目录加载
用于存档的Raid目录加载
不同用户和/或不同组的VFS文件
私有目录
符号链接
目录权限设置

——————————————————————————–

基本VFS设置

最快的VFS文件设置法是将一空目录设置为根目录,这样必须在你的VFS文件中将此目录加载为:";/"; 如下:
"c:\ioFTPD\site" /
在..\site目录下有些示例目录,你可以删除它们。

然后你可指定VFS根目录下要显示的目录。
如:
"c:\ioFTPD\site" /
"d:\games" /games
"e:\mp3" /mp3

也支持驱动器盘符的直接加载,但不推荐此设置,因为不能隐藏象系统卷标信息之类的系统目录。
如:
"f:\" /f-drive
"g:\" /g-drive

要设置这些目录的权限(这样用户就可上传等),请用SITE CHMOD.

这些是ioftpd新手需要了解的基本设置,高级VFS设置请参见下面内容……

——————————————————————————–

加载子目录

ioFTPD’s VFS十分灵活,你可指定某些目录作为子目录。
但要确保你的上级目录存在(此处为/mnt)。
如:
"c:\ioFTPD\site" /
"c:\ioFTPD\mnt" /mnt
"c:\" /mnt/c-drive
"d:\" /mnt/d-drive
"e:\" /mnt/cdrom

——————————————————————————–

用于文件存储目的的Raid目录加载

可合并两个或更多目录内容,如下:
注意:对于只读目的!尽管可写,但上传的文件(在Raided VFS目录下)会被存储在最后一个指定的设备下,此处为e:\dir2。

如:
"d:\目录1" /存档文件
"e:\目录2" /存档文件

——————————————————————————–

不用用户和/或组的VFS文件

要为用户指定不同的VFS文件,仅需新建一VFS文件,并使用此命令来更改用户的VFS文件
site change <用户> vfsfile ..\etc\custom.vfs

你也可改变某个组的VFS,该组下所有用户均自动使用此组VFS文件
如:
site change <组> groupvfsfile ..\etc\group1.vfs

重要!用户VFS文件会覆盖组VFS文件。你已用一指定的组VFS文件更改了组内某用户的VFS文件,且你想让此用户使用此组VFS文件,可清除..\users目录下的用户 user文件中的VFSFILE行,或者用命令更改此用户的VFS文件至此组VFS文件:site change vfsfile ..\etc\group1.vfs
记住若将用户的VFS文件改变为与组VFS文件的文件,且然后又将此组VFS文件改变为另一个文件,你需要再一次改变用户的VFS文件。

——————————————————————————–

私有目录

另一种不同目录的权限设置(包括不同的VFS)方法为私有路径。私有路径对其他用户隐藏,即使这些目录也存在于他们的VFS中。这样便很容易地设置VFS,而不必设置多重VFS文件(使某些用户使用某些目录)。除了Master,其他用户无权进入私有目录。私有目录不对Master隐藏。

SITE命令"site chattr"用于设置私有目录,此命令也可将目录转换为符号链接。

用法: site chattr +h "<目录>" "<权限列表>"
示例: site chattr +h "私有目录" "-用户2 -用户5 =组11"

若目录名包含空格,或你指定多个用户和/或组权限时,则需要用引号("; ";) 引用。旗标也可在权限列表中使用。

使用以下命令查看当前私有目录的权限:
site chattr +h "目录"

联想到+h是指";hidden";, 很容易便可记住+h是指私有目录,+l指目录链接。

——————————————————————————–

符号链接

符号链接是一个快捷目录,可指向你的虚拟文件系统中的任何指定位置。

使用SITE命令"site chattr"将目录转换成符号链接。

用法: site chattr +l "<目录>" ""
示例: site chattr +l "mp3-today" "/mp3/0525"

使用以下命令查看当前路径的链接指向:
site chattr +l "符号链接名"

符号链接也可设置为私有路径。

——————————————————————————–

目录权限的详细设置

如果你想禁止某些目录的上传,那么VFS的此部分设置是很有用的。权限前缀";!"; 表示禁止,如!-user !=group !F。也可指定多个用户和/或组,如!-user1 -user2 =group1,此处仅user1被禁止。

以下是ioFTPD.ini里的缺省设置:
[VFS]

###
# 目录权限的详细设置
#
# priviledge = <virtual path> <rights>
#
Upload = * *
Resume = * *
Download = * *
MakeDir = * *
RemoveDir = * *
RemoveOwnDir = * *
Rename = * 1VM
RenameOwn = * *
Overwrite = * VM
Delete = * 1VM
DeleteOwn = * *
NoStats = * !*

虚拟路径用此格式:/目录/*

———————————————————————–
规则为首个匹配即生效。
在虚拟目录和权限间,仅可使用空格,不要用tab键空格。
最后的"*"是必须的,表示允许其他所有人。
———————————————————————–

示例:
# 所有GuestGroup组的用户不可创建目录
# 也不可在mp3目录内上传文件,但其他用户被允许此二项。
#
MakeDir = /mp3/* !=GuestGroup *
MakeDir = * *
Upload = /mp3/* !=GuestGroup *
Upload = * *

ioFTPD 4.9.0(包含RemoviOwnDir)后的版本有一个新功能"NoStats",NoStats取消指定用户和/或组的状态统计。NoStats是路径相关的。记住,在这些指定目录下,这些用户和/或组的活动不被计入统计。

总将NoStats = * !*放在最底部,否则活动统计对其他用户也会失效。可在此行上方加入你自己的NoStats行。

4. 设备
————————————————————————–

在设备区,你将指定ioFTPD使用哪些IP和数据端口。
会在配置ioFTPD的services区时使用设备名(Device Name).

配置相当简单:

[DeviceName]
Host = <IP>
Ports = <Data transfer ports>
Random = <True/False>
Bind = <IP>

# 以下摘自示例ioFTPD.ini
[Any]
Host = 0.0.0.0
Ports = 1024-2048
Random = True

[Any] –> 设备名(此处为Any)

Host –> 外部主机,此地址会显示给用户。
Host = 0.0.0.0使用sockets连接的那个IP,取决于你主机的IP及你的用户连接的IP。
表示允许在任何IP上连接,如127.0.0.1,你的内部LAN IP如192.168.0.1及你的外部IP等。

Ports –> 用于数据传输的端口,可包括逗号将端口范围列表分开。
如: Ports = 1024-2048, 3355, 5000-5999, 25001-26000, 31337

Random –> True/False. 数据传输使用随机次序端口

Bind –> 内部主机。若指定,则连接绑定于此地址,而不是HOST。若你在路由后方则使用BIND,BIND是你的内部IP。

#ioFTPD-Advanced.ini中使用绑定设置的例子
[Nat]
Host = 212.146.42.251 <– 奜晹IP/楬桼婍IP
Ports = 25001-26000
Random = True
Bind = 192.168.1.10 <– 你运行ioFTD所用电脑的网络IP

5. 服务
———————————————————————————————

无论是否使用加密,在上限范围之内的用户可以同时通过你所指定的服务端口登录。

ioFTPD的默认端口
服务规划
详细服务
禁用服务
自定义设备及服务
通过HTTP及TELNET连接

——————————————————————————–

ioFTPD的默认端口

FTP 9999
HTTP 10000
TELNET 10001

——————————————————————————–

服务框架

注意ioFTPD 4.9.0版本的ioFTPD.ini文件中一些名称作了改变,例如Listen_Device -> Device_Name、MaxUsers -> User_Limit、Req_Encrypted_Auth -> Require_Encrypted_Auth 等等

[FTP_Service]
Type = FTP
Device_Name = Any
Port = 9999
Description = My FTP Service
User_Limit = 10
Allowed_Users = *
;Messages = ..\text\ftp

### 加密 ###
#
Require_Encrypted_Auth = !*
Require_Encrypted_Data = !*
Certificate_Name = 192.168.1.11
Explicit_Encryption = True
Encryption_Protocol = SSL3
Min_Cipher_Strength = 128
Max_Cipher_Strength = 384

### IDNT 命令处理 ###
#
;Get_External_Ident = False

### 负载均衡 ###
#
;Data_Devices =
;Random_Devices = False

——————————————————————————–

服务细节

[FTP_Service] <– 服务名称
Type = FTP <– 键入FTP,HTTP或者TELNET
Device_Name = Any <– 所使用设备名称
Port = 9999 <– 连接端口!
Description = My FTP Service <– 描述
User_Limit = 10 <– 最大用户连接数
Allowed_Users = * <– 拥有这些标记的用户有登录权限. * = 所有人
;Messages = ..\text\ftp <– 使用其他信息替代默认信息?
Require_Encrypted_Auth = !* <– 强制这些用户使用安全登录.!* 表示无人
Require_Encrypted_Data = !* <– 强制安全数据传输。
Certificate_Name = 192.168.1.11 <– SSL 证书名(CN).
Explicit_Encryption = True
Encryption_Protocol = SSL3 <– TLS/SSL3/SSL2/SSL1/SSL
Min_Cipher_Strength = 128 <– 128-bit
Max_Cipher_Strength = 384 <– 384-bit
;Get_External_Ident = False <– True/False. IDN命令处理.保镖支持.(?)
;Data_Devices = <– 负载均衡设备
;Random_Devices = False <– True/False. 随机次序使用负载均衡设备.

Certificate_Name指";CN"以及当你开始SSL认证时所输入的 (hostname)(?) 例如:Example: Certificate_Name = myl33tioftpd.no-ip.com

记住ioFTPD不再采用OpenSLL认证,ioFTPD v4.9.0以后版本的使用了Microsoft的SChannel。旧的OpenSSL认证在4.9.0版本中无效,所以必须重新生成新的SChannel下的认证文件。更多信息请见:Generating.SSL.Key.For.ioFTPD.txt in ioFTPD\help.=

——————————————————————————–

取消服务

ioFTPD仅启动列在"Active_Services"中的服务项目。
[Network]
Active_Services = FTP_Service Telnet_Service HTTP_Service

要取消Telnet和HTTP:
[Network]
Active_Services = FTP_Service

更新"Active_Services"后需重启ioFTPD服务。

——————————————————————————–

定制设备和服务

可指定自己的设备(Device)名和服务(Service)名。但要确保服务名称已经列在ioFTPD.ini文件中,且服务使用了你指定的设备。

[Network]
Active_Services = MyFTP_Service Telnet_Service HTTP_Service

[我的设备]
Host = 192.168.0.1
Ports = 25000-26000

[我的FTP服务]
Type = FTP
..
Device_Name = 我的设备
..

——————————————————————————–

通过HTTP和TELNET连接

使用你的Internet浏览器连接HTTP服务 http://127.0.0.1:10000 nbsp;为常规http连接或者 https://127.0.0.1:10000 为SSL加密连接

如何用telnet.exe连接TELNET服务。
C:\> telnet.exe 127.0.0.1 10001

注意:如果你使用telnet.exe,你必须使用CTRL-ENTER来提交你的密码或者命令,而不是仅仅用ENTER键
如果你感到麻烦可以使用其它Telnet客户端(例如SecureCRT, PuTTY等)