用vsftp快速搭建ftp服务器(修订版)

作者:田逸(sery@163.com)
前面描述了一个vsftpd在linux下的快速部署方法,尽管它能完成一般的上传下载任务,但离实际的应用还是有差距,举例来说:比如ftp用户可以用cd命令到根目录等,为了更进一步满足实际要求,特对前文做进一步的增补。

1、下载源码到服务器,其下载地址是ftp://vsftpd.beasts.org/users/cevans/,当前的版本是vsftpd-2.0.6.tar.gz 。强烈建议使用源码安装,即可摆脱类似rpm包依赖的困惑,又可以实现在不同unix/linux下自如的工作。

2、解压安装:tar zxvf vsftpd-2.0.5.tar.gz ; make; make install

3、添加ftp的用户,如果用户数目不多,简单些,用系统用户吧。Useradd –d /home/sery sery ;passwd ******.

4、拷贝配置文件,这里有2个。Cp vsftpd.conf /etc/vsftpd.conf ;cp Redhat/vsftpd.pam  /etc/pam.d/ftp .不拷贝vsftpd.pam这个文件,将导致ftp用户不能登陆的问题。这个文件在debian下也是可以的。

5、修改配置文件/etc/vsftpd.conf。这个配置文件是vsftpd的关键所在,修改下列值,以实现不同的功能:

(1)修改的部分:把 local_enable=yes write_enable=yes和local_umask=022前面的注释取消。

(2)增加部分:listen=YES(ftp作为独立的守护进程)
chroot_local_user=yes(用户被定位在自己的主目录里,用cd / 并不能切换到根目录)
           
cmds_allowed=ABOR,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,
PORT,PWD,QUIT,RETR,RMD,RNFR,RNTO,SITE,SIZE,STOR,TYPE,USER,
ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST(只许上传文件和目录,但不许删除。注意:这些必须一行写完)

6、启动ftp服务。Vsftpd&
我安装完成后,却无法运行:

报错如下:
500 00PS: could not bind listening IPv4 socket

端口有冲突。查看下:
#netstat -utl |grep 21 是不是被占用

还真有耶。因为是redhat9所以想到了xinetd

因为xinetd已经启动了vsftpd,而vsftpd设置成了stardalone模式,所以,先停止xinetd服务,  service xinetd stop ,然后:/usr/local/sbin/vsftpd &

OK启动正常。

改端口:
在vsftpd.conf最后加:
listen_port=2121

取消anonymous 登入
anonymous_enable=NO

老大原文提到,让用户不能切换到别的目录,需要添加一个文件:
vim /etc/vsftpd/chroot_list 加入你所要限制的用户
vsftpd.conf也去掉相应的注释:chroot_list_file=/etc/vsftpd/chroot_list