总目录
前 言
第一章 在Debian上配置Apache+MySQL+PHP4
第二章 在Debian上用Wu-ftpd配置FTP服务器
第三章 在Debian上用Exim配置邮件服务器
第四章 在Debian上配置Samba服务器
第五章 在Debian上用Bind配置DNS服务器
《Debian服务器设置入门》系列教程之第二章:FTP服务器
第二章 在Debian上用Wu-ftpd配置FTP服务器
本章目录
1 开场白
2 选择wu-ftpd
3 安装
4 配置
5 测试
6 TODO
7 结束语
8 参考文献
1 开场白
在五年之前,我还觉得Ftp这个东西很神秘。那时候,我身边的大部分人,甚至以为http就是互联网的全部。我们从网站下载文件,用的大多也是http连接。但是,事实上,ftp(File
Transfer Protocol,文件传输协议)这个服务已经存在很长时间了,如果要提供文件下载,除了使用http的方式连接外,我们完全可以提供ftp服务,这样可以节省一些服务器资源,比如连接数什么的。ftp是专门设计用来在两台电脑之间传输数据的,可以避免太多的远端执行。尤其是,当传输的文件比较大时,ftp会比http节省资源。另外,ftp可非常方便地上传文件,而http则没有那么方便快捷。
2 选择wu-ftpd
用apt-cache search
命令看一下,都有什么ftp服务器可以选择:
你会发现,Debian为我们制作了很多个ftpd服务器软件包,包括atftpd、bsd-ftpd、ftpd、oftpd、muddleftpd、proftpd、twoftpd、vsftpd、wu-ftpd等等。其中应用最广泛的,应该是wu-ftpd了,这是目前最流行的一种免费FTP服务器软件,目前绝大多数的FTP站点都是由wu-ftpd来架设的,它是当初由华盛顿大学wuarchive.wustl.edu开发出来的,是一个以效率以及稳定性为考量的程序。wu-ftp如此流行,一个重要的原因是因为它强大的功能,例如:
◆ 可控制不同网域的机器对 FTP服务器的存取权限和访问时段。
◆ 使用者在下载文件时,可自动对文件进行压缩或解压缩工作。
◆ 可以记录文件上传或下载的过程。
◆ 可以限制最高访问人数,以维持系统的最佳运行效率。
◆ 可显示相关的信息,以便用户了解当前的接收状态。
◆ 可暂时关闭FTP服务器,以便系统维护。
目前Debian提供的wu-ftpd版本是2.6.2。好,我们就选择这个wu-ftpd了!
3 安装
安装很简单,用下面的命令安装:
它会问你,你想设置一个匿名ftp账号吗?输入y,回车。
接着让你输入ftp根目录,默认是/home/ftp,我们就用默认的吧。
然后它问你,你想创建一个目录,用来让用户上传文件吗?输入y,创建一个。
安装程序会创建一个新的用户ftp,并把这个用户加入到一个新创建的组ftp中去。
然后它会说:
(它说由于无法判断所需的版本,libnss_files.so没有安装,要手工安装的话,到/home/ftp/lib去找。这块我还没捣鼓明白,还请高手赐教)。这里需要对初学者说明一下,系统从/etc/passwd这个文件里面读取资料,得到UID和GID,来决定用户对文件的存取权限。一会儿我们会讲到,在ftpaccess这个配置文件里,可以为某些UID的用户或者某些GID的组设置权限。
4 配置
其实,在安装完之后,不需要做任何配置,我们的ftp服务器已经可以使用了。如果你跟我一样是个急性子,在进行配置之前你就可以尝试登录了。这时,Debian上的普通用户,还有匿名用户都可以访问它,也可以向incoming目录上传文件,只不过看不到已经上传的文件。但是我们仍然需要做一些配置,因为我们需要定制自己的安全性。
为了确保提供FTP服务不会给我们的系统带来安全隐患,我们首先要采取以下措施:
4.1 配置文件介绍
wu-ftpd的配置文件放在/etc/wu-ftpd下面,主要有:
ftpaccess —— 这个是wu-ftpd的主配置文件,控制存取权限
ftpconvertions —— 这个文件定义了文件压缩/解压缩转换方案
ftpservers —— 用来设置多个IP地址和域名,以对应到不同的虚拟主机
ftpusers —— 凡是写入这个文件里面的用户,都不能连接ftp服务器
msg.denu —— 拒绝访问时,显示给用户的信息
msg.nodns —— 当DNS查询失败时,显示给用户的信息
msg.toomany —— 当连接数过多时,显示给用户的信息
pathmsg ——
当用户使用了非法路径/文件名时,显示给用户的信息
welcome.msg ——
当用户建立连接时,显示给用户的欢迎信息
在/usr/share/doc/wu-ftpd/examples下面,有一些配置文件的样本,大家可以参照一下。
4.2 修改/etc/wu-ftpd/ftpaccess配置
这个文件是wu-ftpd的主配置文件,许多重要的选项都包含在这里面,比如,要想让Debian上的用户可以访问,就必须在这个文件里面的Class段落里面做出定义。
下面我们按照ftpaccess文件的顺序,一段一段地介绍。平常不大用的,或者我不懂的,就不介绍了:-),要不然篇幅会非常大。
4.2.1 管理员的email地址
4.2.2 UID/GID设置
# 设置哪些UID/GID可以、不可以使用FTP服务。这里的%-99我没搞明白,请高手指教!4.2.3 登录失败数
# 下面设置登录5次失败后,断开连接4.2.4 目录限制
# 除了用户自己的根目录,让用户看不到别的东西。这个很关键!4.2.5 不可执行SITE GROUP/SITE GPASS
# private决定了用户是否可以执行SITE GROUP/SITE GPASS命令4.2.6 定义用户类别——class
由class定义的用户和IP地址才能够登录进来。FTP服务器上有三种类型的使用者,分别是“real”——表示在该FTP服务器上有合法帐号的用户;“guest”——表示另行定义的某些使用组的使用者;“anonymous”——权限最低的匿名用户。有了这三种使用者以后,在ftpaccess文件中就可以根据不同的使用者设置不同的存取权限。但是,只有三种定义一般是不够的,我们可以根据class的语法定义更多的控制命令。
语法是:
其中:<class 名称>则可自行设定,<种类>就是上面说的三种,<用户地址>是指ftp上来的用户会用到的IP地址。
以下是一些例子:
4.2.7 为各个类别的用户设置最大连接数
# 可以为每一个类别定义最大连接数,并显示不同的错误信息。下面允许30个连接。4.2.8 设置readme文件
# readme命令:指定用户登录或进行其它操作(如更换目录)时FTP服务器提示用户阅读的文件。4.2.9 是否使用压缩
# 下面定义的允许从local和remote登录的机器在传输文件时,4.2.10 记录日志
# 如果去掉前边的注释符号,它就会记录相应的信息。4.2.11 超时设置
# 下面设置:如果超过30秒没有动作,就断开anonymous的连接4.2.12 一些命令的权限
rename no anonymous # rename 权限?4.2.13 匿名用户上传权限
# 全给他们加上井号,不让匿名用户上传文件 由于ftpd是被inetd调用的,所以,我们修改了配置文件后,不需要重新启动wu-ftpd。
对于普通ftp应用,修改一下上面这个文件就足够了。如果你还有更高的要求,就继续往下看。
4.3 修改/etc/wu-ftpd/ftpusers
我们已经说过了,只要写进这个文件里面的用户,是不能登录我们的ftp服务器的。
限制这些用户使用FTP服务器主要是基于系统安全的考虑,避免权利过大的用户(如root、ftpadm)登录FTP服务器和避免使用系统命令作为帐号(如shutdown、sync),以避免系统管理上的困惑。我们可以根据自己使用的需要,向该文件中增加或删除用户。
注意这个文件是/etc/ftpusers的快捷方式。下面是默认的ftpusers的内容:
4.4
修改/etc/wu-ftpd/ftpconversions文件
ftpconversions文件主要定义用户从FTP服务器中下载文件时对文件进行格式转换的规则。例如压缩、解压缩、打包和开包等操作,这样用户就不必为.tar.gz、.tgz、.Z、.z之类的文件伤脑筋了。ftpconversions文件的格式初看上去很复杂,不过不用担心,我们基本上不用动它,debian为我们准备的这个配置,已经能够满足我们的使用需要了。下面让我们来看看ftpconversions文件的内容:
你可能想我一样看花了眼,不过好在我们不用深究,反正这个文件基本上把常用的压缩,打包命令都包括在内了,只要它存在,FTP服务程序就会根据用户的需要执行压缩或打包的命令。
例如,用户想下载目录Howto中所有的文件,那么他不必使用mget命令,而只要使用get
Howto.tar.gz,这时wu-ftpd就会将该目录打包压缩并发送到用户的机器上了。所以使用该文件可以完成压缩传递的数据量,减少传输时间等作用。
这里有一点需要注意,这个文件中定义的可执行文件的位置/bin指的都是/home/ftp/bin而不是Linux的/目录下的bin,所以请检查/home/ftp/bin目录中有无上述命令,如果没有还需要将这些程序复制到该目录中。我看了一下,由于我仅仅安装了Debian的基本系统,所以bzip2这个命令是没有的,我们可以用at-get
install bzip2命令来下载和安装它,然后把bzip2命令复制到/home/ftp/bin就可以了。
5 测试
到这里,匿名FTP服务器的配置工作基本上就完成了,我们可以用ftp命令连接自己的服务器,检查合法用户和匿名用户的连接情况以及各个目录的权限是否正确。之后就可以准备FTP服务的开张了。
6 TODO
在下一个版本里面,我将描述如何用ftpmirror建立ftp服务器镜像。
7 结束语
本文是《Debian服务器设置入门》系列教程之第二章》,建议您按照顺序阅读,有问题可以和作者kanaka联系。
8 参考文献
本章参考了下面的文章:
《用wu-ftpd架设FTP服务器》一文,地址是http://www.lslnet.com/linux/docs/linux-3300.htm
《架设FTP服务器》一文,地址是http://www.linuxsir.com/bbs/showthread.php?s=&threadid=8455&highlight=wuftpd
很抱歉我没找到这两篇文章作者的名字,但是我们仍然应该心存感激。