Linux下有很多可用的FTP服务器,其中比较流行的有WU-FTP(Washington UniversityFTP)和VSFTP。Red Hat 8.0中自带了WU-FTP和VSFTP两个软件。WU-FTP是一个著名的FTP服务器软件,它功能强大,能够很好地运行于众多Unix操作系统中。不过作为后起之秀的VSFTP越来越流行,在Red Hat 9.0发行版中就只带有VSFTP。
VSFTP中VS的意思是“Very Secure”。从名称可以看出,从一开始,软件的编写者就非常注重其安全性。除与生俱来的安全性外,VSFTP还具有高速、稳定的性能特点。在稳定性方面,VSFTP可以在单机(非集群)上支持4000个以上的并发用户同时连接。据ftp://ftp.redhat.com/的数据,VSFTP最多可以支持15000个并发用户。
快速构建FTP服务器
FTP服务器实现的基本功能是上传下载,下面就分几个步骤来搭建一个可以实现下载功能的简易FTP服务器。
1.安装FTP服务器
如果在安装系统时没有选择安装FTP服务器,可以通过Red Hat 9.0中的“添加/删除应用程序”工具进行安装。具体方法是,选择“主选单”→“系统设置”→“添加/删除应用程序”,在弹出的界面中选中FTP服务器,单击“更新”即可。
如果无法确认是否安装了该软件,可以使用以下命令查看:
#rpm -qa|grep vsftpd
vsftpd-1.1.3-8
2.启动FTP服务器
套用Red Hat 9.0的预设范例直接启动VSFTP。
# /sbin/service vsftpd start
为vsftpd启动vsftpd: [确定]
3.在/var/ftp/pub目录下创建一个名为test.txt的文件,文件内容为“This is a test
file”。
4.测试
使用FTP客户端登录到本地服务器,然后以匿名身份(anonymous)登录:
# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 1.1.3)
Name (127.0.0.1:root): anonymous
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
这样就成功地登录到FTP服务器。可以显示服务器目录列表如下:
ftp> ls
227 Entering Passive Mode (127,0,0,1,63,15)
drwxr-xr-x 2 0 0 4096 Dec 04 01:35 pub
226 Directory send OK.
切换到pub目录下,并显示目录内容,可以找到刚才创建的文件test.txt:
ftp> cd pub
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (127,0,0,1,232,34)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 21 Dec 04 01:35 test.txt
226 Directory send OK.
下载test.txt文件:
ftp> mget test.txt
mget test.txt y
227 Entering Passive Mode (127,0,0,1,186,210)
150 Opening BINARY mode data connection for test.txt (21 bytes).
226 File send OK.
21 bytes received in 0.0108 secs (1.9 Kbytes/sec)
查看本机目录内容,可以看到test.txt已成功下载到本机。
ftp> ls
a EIO_Binders initrd mnt proc tftpboot lpf.txt
bin etc lib mymnt root tmp
boot home lost+found myshare sbin usr
dev id_dsas.pub misc opt test.txt var
尝试上传名为lpf.txt的文件,可以看到请求被拒绝了。
ftp> put lpf.txt
local: lpf.txt remote: lpf.txt
227 Entering Passive Mode (127,0,0,1,243,10)
550 Permission denied.
退出登录:
ftp> bye
221 Goodbye.
由测试可以看出,已经可以下载文件,但不能上传文件(也不能在服务器上创建目录和文件)。实际上这是一个专门提供下载服务的匿名FTP服务器。
从上面的步骤可以看出,并不需要做什么配置就可以完成一个简易FTP服务器的架设。这是因为Red Hat已经配置好一个缺省的FTP服务器。不过在实际应用中,大部分情况下这个简易的服务器并不能满足需求。
1.创建欢迎语。
如果希望使用者在进入目录时,能够看到欢迎语或对本目录的介绍,可以通过以下方法来实现。
确定/etc/vsftpd/vsftpd.conf文件中dirmessage_enable=YES,默认情况下,Red Hat
9.0有此设置。接着,在目录中新增名为.message的文件。本例在/home/lpf目录下创建一个.message文件,其内容为“欢迎来到我的FTP站点”。
8.以虚拟用户gou(Linux中并无该账号)进行测试: # ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 Welcom to my FTP server.
Name (127.0.0.1:root): gou
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
测试下载服务器目录中的一个文件mytest:
ftp> get mytest
local: mytest remote: mytest
227 Entering Passive Mode (127,0,0,1,159,19)
150 Opening BINARY mode data connection for mytest (21 bytes).
226 File send OK.
21 bytes received in 0.00038 secs (54 Kbytes/sec)
测试上传本机目录中的文件vsftpd.conf:
ftp> ls
account.db chroot_list k mytest userconf vsftpd.conf
ftp> put vsftpd.conf
local: vsftpd.conf remote: vsftpd.conf
227 Entering Passive Mode (127,0,0,1,117,203)
150 Ok to send data.
226 File receive OK.
4229 bytes sent in 0.00195 secs (2.1e+03 Kbytes/sec)
可以看到,使用没有系统账号的虚拟用户可以成功完成上传、下载的工作。但该FTP虚拟服务器只允许虚拟用户登录,其它系统用户无法登录,如系统用户user1不是虚拟用户,则不能登录该虚拟服务器。
# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 Welcom to my FTP server.
Name (127.0.0.1:root): user1
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
在虚拟FTP服务器中,也可以对各个用户的权限进行设置。方法是在/etc/vsftpd.conf文件中添加如下一行:
user_config_dir=用户配置文件目录
然后在用户配置文件目录下创建相应的用户配置文件,比如为上述名为gou的用户创建一个配置文件(假设配置文件目录为/etc/user_config_dir):
#vi /etc/user_config_dir/gou
write_enable=NO
anono_upload_enable=NO
重启FTP服务器,这时再使用账号gou来登录,就已经没有上传的权限了。