三、让FTP服务器运转起来
一般来说,只要正确地编译安装了wu-ftpd,该服务器就可以正常运行。用户可以通过FT
P命令从各种系统上连接该服务器。
四、配置文件的设置
1./etc/ftpaccess的设置
这个配置文件是FTP服务器最重要的配置文件,这个文件的设置决定了FTP是否可以正常
工作及许多访问权限的设置。如下面的例子所示:
class all real,guest,anonymous *
limit all 10 Any /etc/msgs/msg.dead
readme README* login
readme README* cwd=*
message /welcome.msg login
message .message cwd=*
compress yes all
tar yes all
log commands real
log transfers anonymous,real inbound,outbound
shutdown /etc/shutmsg
email user@hostname
下面是设置文件各个指示(directive)的详细说明:
指示: loginfails n
密码输入n次就自动断开连接
指示:autogroup 组名 类别 [<类别> ...]
若一个匿名用户属于任何一个参数类别的类,则FTP服务器将实施setegid()调用使其属
于这个组名定义的组,这样做是为了实现某些特定类别的匿名用户可以访问一些只允许
本组及拥有者可以访问的文件。组名必须是/etc/group内定义的有效组。
指示: class 类名 类别(real、guest、anonumous) IP地址
这个指示是设定FTP服务器用户的类别。
FTP服务器的用户可以分为以下三种类别:
real 在该FTP服务器上拥有合法帐户的用户;
guest 另外定义某些特定组的用户;
anonymous 匿名用户;
举例说明:
class outworld real,guest,anonymous *
定义一个名为outworld的类,该类包含三种类型的用户:real,guest,anonymous。该类
在后面的指示中使用。其中"*"是类定义中的IP地址部分,表示网络上的所用主机。也就
是说明允许任何主机连接FTP服务器。若希望对访问FTP的主机进行一定的权限设置,可
以这样做:
class friend real,guest,anonymous *.linuxaid.com.cn 202.102.13.*
指定义一个friend类,该类从*.linuxaid.com.cn 及202.102.13.*访问FTP服务器时有特
定的权限设定。
指示: limit 类别 人数 时间 文件名
该指示设定在某个类在某个时间内允许连接FTP服务器的人数的限制,并指定当连接人数
超过限制,后面的用户连接时显示给用户的消息信息。
举例说明:
limit local 20 Any /tmp/message/msg.toomany
上面的例子限定local这个类中的拥护同一时间只能有20人同时上网连接这台FTP服务器
,若超过20人则显示/tmp/message/msg.toomany的文件的内容
limit outworld 100 MoTu|Any 2200-0800 /tmp/message/msg.limit
这个例子限制outworld这个类的用户只能在周一周二或每天的晚上10点到第二天早上的8
点之间访问该FTP服务器,而且同时连线的人数不可以超过100人,若超过100人,则显示
/tmp/message/msg.limit的文件的内容
/tmp/message/msg.limit的内容为:
对不起!本服务器只允许匿名用户在周一周二全天及其他每天晚上10点到第二天早上的8
点之间访问,当前时间为%T;而且只允许同时有%M个匿名用户访问,当前有%N个用户在
访问该服务器。请在合适的时间访问本FTP服务器,谢谢!
这里的%M是一个变量,代表同时允许连接的人数的上限,FTP服务器可以用前面设置的值
自动替代该变量,其他允许的变量包括:
%T 本地当前时间;
%F CWD所在分区剩余空间,以KB为单位。但该变量不是所有系统都支持。
%C 当前工作目录;
%E 定义在/etc/ftpaccess文件中的系统管理员的E-mail地址;
%R 远端主机名;
%L 本地主机名;
%U 登录时所给的用户名;
%N 这个类别当前连接的用户数目;
利用这些参数,可以编辑一个详细的说明文件,这样可以让用户清楚当前服务器资源使
用情况。
指示: readme 说明文件 指令
当用户执行指定的"指令"时,系统就会自动显示所设置的说明文件;
举例说明:
readme README* login
当用户执行登录动作时,只要以README开头的文件内容就会显示给用户。
readme README* cwd=*
表示用户切换目录时(cwd),只要以README开头的文件内容就会显示给用户。
通常README*应该是该目录下文件的说明,让登录的用户可以清楚地知道目录中存放了那
些文件;
指示: message 文件名 指令
使当用户执行特定的"指令"时,系统就将指定的文件内容显示给用户;
举例说明:
message /msg.welcome login
指定当用户登录时,将自动显示/tmp/message/msg.welcome的内容给用户,注意这里的/
msg.welcome指ftp根目录下的msg.welcome文件,即/home/ftp/msg.welcome。
message /welcome cwd=*
指定当用户切换另一个目录时,只要目录中有msg.welcome文件,就显示给用户
指示: compress (yes/no) 类别
设置哪个类别的用户可以使用压缩功能;
举例: compress yes local outworld
允许local 和outworld两个类别的 用户使用压缩功能
指示: tar (yes/no) 类别
指定哪个类别的用户可以使用tar功能;
指示: passwd-check (none/trivial/rfc822) (enforce/warn)
设定当用户以匿名方式登录服务器时密码的方式:
none 表示不对密码进行验证,任何密码都可以登录;
trival 表示只要密码中包含@就可以登录;
rfc822 表示密码一定要符合rfc822中规定的E-mail格式才能登录。如:webmaster@linux
aid.com.cn
enforce 表示输入的密码不符合指定格式就不允许登录;
warn 表示输入的密码不符合指定格式显示警告信息,但仍然允许登录;
指示: log commands 类别(read/guest/anonumous)
设定那些用户登录时,所使用的操作会被记录在文件/usr/adm/xferlog中。
指示: log transfer 类别(read/guest/anonumous) (inbound/outbound)
设定指定的用户类别在上载还是下载时的相关信息被记录到/usr/adm/xferlog中。
举例说明:
log transfer anonymous,real inbound,outbound
当anonymous或real用户登录后,上载和下载的操作会被记录在文件/usr/adm/xferlog中
。
指示: shutdown 文件名
FTP服务器关闭的时间可以后面的文件名中指定的文件中指定,设定的时间一到,便无法
登录FTP服务器了,只有将这个文件删除才能恢复FTP服务器。文件的格式可以由命令ftp
shut来建立。
指示: delete (yes/no) 类别(real/anonymous/guest)
设定是否允许指定用户使用delete命令。
举例说明:
delete no guest,anonymous
设定大概内登录的用户为guest或anonymous上不允许执行delete命令。
指示: overwrite (yes/no) 类别(real/anonymous/guest)
设定是否允许指定用户使用overwrite指令。
指示: reame (yes/no) 类别(real/anonymous/guest)
设定是否允许指定用户使用readme指令。
指示: chmod (yes/no) 类别(real/anonymous/guest)
设定是否允许指定用户使用chmod指令。
指示: umask (yes/no) 类别(real/anonymous/guest)
设定是否允许指定用户使用umask指令。
指示: upload [absolute|relative] [class=]... [-]
["dirs"|"nodirs"] []
定义允许用来上载的目录。若允许上载,所有新上载的文件的所有者及组由和定义 ,访
问权限将为。对于覆盖老文件的上载文件将保持原来的所有者及访问权限信息。文件上
载的权限信息由最大匹配目录项定义,如:
upload /var/ftp * no
upload /var/ftp /incoming yes ftp daemon 0666
upload /var/ftp /incoming/gifs yes jlc guest 0600 nodirs
would only allow uploads into /incoming and /incom-
:
将只允许/incoming和/incom-ing/gifs目录上载。上载到/incoming目录下的文件将属于
ftp/daemon,访问权限为0666;而上载到/incoming/gifs下的文件将属于jlc/guest,访
问权限为0600。应该注意的是 必须匹配"ftp"用户的passwd文件中的主目录。
"dirs"和"nodirs"选项用来设定是否允许在该目录下创建新的子目录。但是缺省是允许
创建子目录的。
设定新创建的目录的访问权限,缺省为0777。
上载指示只能施用于用户主目录(chroot()的参数)等同于的用户,可以为*来表示匹配任
何主目录。
和也可能指定为*,在这种情况下,任何上载的文件或创建的目录的所有者都等于起父目
录的所有者。
选项[absolute|relative]指定是是绝对路径还是相对于chroot()参数指定的目录的相对
路径。缺省是绝对路径。也可以指定任意多个class=来进行进一步限定。若指定了任何
目录,则该上载指示只影响这些组的用户。