Linux环境下wu-ftp服务的配置
作者:
FTP:文件传输协议,客户/服务器模式
一、安装WU-FTPD
#rpm -ivh wu-ftpd*.rpm |
如果没有指定安装目录,那么其执行文件默认会分别安装在/usr/bin和/usr/sbin 中。
二、启动WU-FTPD
cd 到/etc/xinetd.d/目录 |
打开wu-ftpd文件,将其中的disable = yes 改为disable = no。
然后重新启动xinetd服务:
#/etc/rc.d/init.d/xinetd restart |
#telnet localhost 21 |
^] //按ctrl+]号中断。
telnet>q //按Q键退出。
四、匿名FTP的设置与组织
/etc/ftpaccess //WU-FTPD 最重要的设定文件 |
/usr/bin/ftpcount //查询目前各类的上线用户人数。 |
/var/ftp |
为了增加系统的安全性,可以使用adduser添加FTP服务器资源的管理者,如:ftpadm,并将ftpadm加入到adm组,这样当别人对FTP有所建议时,可以发email给ftpadm,而不必凡事都要root出马。
修改 /etc/group内容应该如下:
adm:x4:root,adm,daemon,ftpadm |
#adduser ftpadm |
/var/ftp/bin目录
因为匿名用户看不到除/var/ftp以外的东西,所以必须提供足够的文件供匿名FTP使用,默认/var/ftp是FTP用户的根目录,/var/ftp/bin目录
放置一些常用的FTP命令,如:ls,tar,gzip,compress等执行文件,此目录权限应该是111。
/var/ftp/etc目录
这个目录放置一些匿名FTP用户需要的设置文件,如passwd,group。当匿名用户执行ls -l时,FTP服务器的文件、目录才会显示拥有者的名称和组而不是出现数字。此目录的权限是111。
/var/ftp/pub目录
放置下载文件的起点,通常在pub目录下,会将文件资源特性分类,再建立子目录,由管理员自行规划。
/var/ftp/upload目录
上传目录。系统默认不提供上传目录,如果需要做文件上传,要自己建立此目录,以提供匿名FTP用户上传文件,为了避免病毒,一个好的管理员会筛选upload里的文件和目录,一切都没有问题后,才将上传的文件移至下载区。一般设置upload目录的权限是:chmod 733
/var/ftp/upload/ |
五、限制登入的用户和主机
将可登入的用户分为3类,分别是real,anonymous,guest。
real:
在此服务器拥有帐号的用户,并以他的帐号登陆,此类帐户默认的登入的目录是其专属目录,但只要他拥有某目录的读取权限,即使该目录不在其专属目录中,也能切换到哪个目录。
anonymous:
指的是在此服务器上没有帐户的用户,可以用anonymous及电子邮件地址当作帐号名称和密码,以匿名方式登入服务器,登入后的根是/var/ftp,此类用户不能切换到除/var/ftp以外的目录。
guest:
来宾帐号。在某些情况下,管理员可能只希望某些拥有帐号的用户登入后,只能存取专属目录下的文件,而不得存取专属目录以外的文件,因此管理员可以利用ftpaccess设定文件中的 guestuser或guestgroup参数指定属于这类的用户有哪些。
设定不可以登入的用户
/etc/ftpusers设定文件用来设定不允许哪些用户登入,方法是每个用户占一行。
修改/etc/ftphosts设定文件
该文件是用来设定允许或拒绝用户从不同的地址登入,有allow和deny两种设定格式。
1允许特定用户从指定地址登入 allow
格式如下:
allow <帐号名称> <主机地址> ...例如,允许test用户从*.china.com网域登陆, |
2拒绝特定用户从指定地址登入 deny
格式如下:
deny <帐号名称> <主机名称> ...例如,不允许test用户从202.198.16.8地址登陆, |
六、服务器环境设定(/etc/ftpaccess文件)
指令
class
class 用来定义用户工作组,并指定属于这工作组的是哪些类别的用户,或来自哪个阻击地址,同时我们可以在一个ftpaccess文件中定义多个工作组,格式如下:
class <工作组名称><用户类别><用户所在的主机地址> |
工作组名称:此工作组名称,由管理员定义
用户类别: 可以使用的类别是real,anonymous,guest。
主机地址:登入用户所在的主机的IP或域名,此处可明确指明主机地址,或采用通配符*也可以。
下例为缺省值:
class all real,guest,anonymous * |
class group2 real,guest,anonymous *.china.com 203.84.200.* |
设定FTP服务器管理员的E-mail地址,当WU-FTPD要显示管理者email地址时,即会显示此处的设定格式:
email ylei@163.com |
练习:
1启动FTP
2建立用户帐户aaa和bbb,设置不允许bbb登陆
3建立工作组group1,定义此工作组成员是从192.168.9.0网络登陆的real,和anonymous类别的用户
guestuser
指定属于guest类别的用户
例如(格式):
guestuser aaa bbb |
guestgroup
用来指定属于guest 类别的工作组有哪些,下例将指定属于guestgp工作组的用户,都属于guest类别:guestgroup guestgp //guestgp工作组要先建立才行。
loginfails
设定允许用户最多登入失败的次数,格式如下:
loginfails <登入次数> //登入次数指当用户输入了错误的帐号和密码超过了设定的登入次数之后,即不再允许用户再尝试登入。
例如:
loginfails 3 |
readme
用来设定当用户登入FTP后,或第一次切换某目录时,会出现提示信息提醒用户自行读取说明文件,其格式如下:
readme <说明文件路径><时机><工作组名称> |
说明文件路径:
设定说明文件的位置,此处设定值可以使用通配符*
时机:
设定要显示提示信息的时机,使用login选项,表示用户登入后;使用cwd=<路径>选项,表示用户第一次切换到该目录时。
工作组名称:
只针对指定的工作组,才显示提示信息。
练习:
设定:
readme README* login //当用户登入FTP时,系统会提示用户读取同一目录下的README*文件在user的专属目录下建立以README文件,或建立以README名称开头的文件,并输入些内容。
重新启动xinetd服务
/etc/rc.d/init.d/xinetd restart |
在shell状态以user身份连接ftp server。会有提示你读取README文件
例二
设定readme README* cwd=* //表示当用户地一次切换到任一目录时,系统会提示用户读取同一目录下的README*文件。
例三
设定readme README* CWD=/LIB GROUP1 //表示当group1工作组的用户第一次切换到/lib目录时,系统才会提示该用户读取README*文件。
message
是用来设定当用户登入后,或第一次切换到某目录时,系统所要显示的欢迎信息,其格式如下:
message <信息文件路径><时机><类别> |
信息文件路径:
设定欢迎信息文件存放的位置,此位置的路径是相对于/var/ftp目录的。
时机:
设定要显示提示信息的时机。使用login选项,表示用户登入后,cwd=< 路径>则表示用户第一次切换到该目录时,只有当用户地一次切换到该目录时,才显示此提示信息,若再次切换回到同一目录则不再显示信息。
工作组名称:
只针对指定的工作组,才显示欢迎信息。
可使用的变量
%T |
message /welcome.msg login //表示当匿名用户登入时, |
欢迎来自%R的朋友! |
tar
设定文件压缩功能。tar可以设定是否允许某些工作组利用tar方式在线压缩文件,格式:
tar <设定值><工作组名称> |
设定值:可使用的选项有yes,no;分别表示启动和关闭使用tar功能。
工作组名称:利用class定义的工作组名称。
例如(默认为允许all工作组使用tar在线压缩文件)
tar yes all |
指令的执行权限
此类可用来设定允许哪些类别的用户执行chmod等命令,格式:
chmod <设定值><用户类别> |
设定值:可使用的选项有yes,no。分别表示是否允许执行此指令,默认所有人都能执行用户类别:可使用的类别为real,anonymous,guest。
例如(不允许guest,anonymous身份登入的用户执行chmod,delete,overwrite,rename指令)
chmod no guest,anonymous |
compress
可设定是否允许某些工作组利用compress方式进行在线压缩文件,格式:
compress <设定值><工作组名称> |
compress yes all |
log commands
可用来指定要记录哪些用户所执行的命令,其格式如下:
log commands <用户类别> |
用户类别:可使用的用户类别是real,anonymous,guest
例如:
log commmands real |
log transfers
可用来指定要记录哪些用户传输文件的动作,格式:
log transfers <用户类别><传输动作> |
用户类别:可使用的类别是real,anonymous,guest。
传输动作:可使用的选项有两种:inbound(用来记录上传到服务器的动作);outbound(表示记录从服务器端下载文件的动作)
例如(记录anonymous用户所有上传和下载文件的动作):
log transfers anonymous inbound,outbound |
shutdown
设定何时关闭FTP服务器,格式:
shutdown <设定文件的路径> |
设定文件的路径:
此设定文件的内容是有关shutdown指令的设定,默认值是/etc/shutmsg文件。
此文件格式如下:
<年><月><日><时><分><不能FTP登入的时间><用户被踢出的时间> |
2003 12 7 0 30 20 5 |
//表示FTP服务器在2003年12月7日0时30分关闭,0时10分钟后禁止用户FTP登入,0时25分时所有用户会被系统踢出。
若要启动FTP,将/etc/shutmsg文件删除即可
七、设置上传目录
按下面步骤完成:
按下面步骤完成:
1 #cd /var/ftp //切换到匿名FTP根目录
2 #mkdir upload //建立用来上传的目录upload
3 #chmod 733 upload //设置此目录权限为733,即任何人都具备写入和执行的权限。或333。
4 在/etc/ftpaccess文件内加入如下内容:
upload /var/ftp /upload yes root ftp 0600 nodir |
chmod no guest,anonymous |
详细说明
语法:
upload
[dirs/nodirs]> |
#chmod a+w /var/ftp/upload |
upload /var/ftp * no |
/*当权限设为0600 时,匿名用户所上传的文件不能立刻下载,需要等FTP管理者将文件权限改为0644才可提供下载,如果想把upload上传的文件立即可供下载,只要将文件属性改为0744即可,如下: upload /var/ftp /upload yes root ftp 0744 nodirs */
设置过滤功能
语法:
path-filter <用户类别> <信息文件> <上传文件名规则> |
存取控制
此处的设定可用来定义工作组,允许或拒绝哪些用户,或从哪里登陆
deny
用来设定此FTP服务器拒绝用户从哪些网址登入,并决定此时要显示提示文字,格式:
deny <主机地址><提示文字文件路径> |
主机地址:
IP地址或域名,此处可明确指明主机地址,或采用通配符*也可以。
提示文字文件路径:
当拒绝用户登入时,所要出现提示文字文件的位置。
例如(拒绝用户从china.com网址登入,同时显示 /etc/msgs/reject.msg文件的信息)
deny *.china.com /etc/msgs/reject.msg |
deny 192.168.1.* /etc/msgs/reject.msg |
limit
设定某一工作组在某段时间同时最多上线人数,格式:
limit <工作组名称><人数><时间><提示文字文件路径> |
工作组名称:
利用class定义的工作组名称
人数:
允许登入的用户数目
时间:指定要限制的时间,其时间格式可采用24小时制,如0800-1800表示从上午8点到下午6点,其他默认格式有以下几种:
Any 任何日期 |
//在时间项目中要想表示多个区段的时间,则时间跟时间之间可用“|”相串联。
提示文字文件路径:
当拒绝用户登入时,所要显示提示文字文件的位置。
举例:
/*限制在任何时间内,同一时间最多只能有20个group1工作组的用户登入,当超过此人数时,则拒绝同一工作组的用户再次登入,并显示
/etc/msgs/msg.toomany文件的信息*/ |
举例2:
/*设定在星期六,星期日,和周一到周五的18点到23点,同一时间最多允许30个group1组的用户登入,当拒绝登入时,显示
/etc/msgs/msg.toomany文件的信息*/ |