环境:CentOS linux 5.4 32位
软件:vsftpd-1.2.01、下载vsftpd软件
#cd /root
[root@test root]# wget  ftp://vsftpd.beasts.org/users/cevans/vsftpd-1.2.0.tar.gz (软件放在/root目录下)
[root@test root]# tar zxvf  vsftpd-1.2.0.tar.gz
[root@test root]# #cd vsftpd-1.2.0
[root@test vsftpd-1.2.0]#make
[root@test vsftpd-1.2.0]#make install
[root@test vsftpd-1.2.0]#cp vsftpd.conf /etc
[root@test vsftpd-1.2.0]# cp RedHat/vsftpd.pam /etc/pam.d/vsftpd  将 PAM 身份认证模块给他放进去系统里面!

2、[root@test vsftpd-1.2.0]#  useradd -d /var/ftp –s /sbin/nologin  -M ftp
(注:G:用户所在的组 d:表示创建用户的自己目录的位置给予指定
M:不建立默认的自家目录,也就是说在/home下没有自己的目录  -s:设定他为不能登陆系统的用户)
[root@test vsftpd-1.2.0]# mkdir -p /var/ftp  (创建一个ftp目录,p的选项就是继承下去的意思)
[root@test vsftpd-1.2.0]# chown root:root /var/ftp
[root@test vsftpd-1.2.0]# chmod 755 /var/ftp
# 建立 vsftpd 需要的特殊目录
[root@test vsftpd-1.2.0]# mkdir -p /usr/share/empty(创建一个share目录,并创建share目录下的子目录empty,p的选项就是继承下去的意思)

3、[root@test root]# /etc/rc.d/init.d/xinetd restart
(靠出现这样的提示:[root@localhost init.d]# /etc/rc.d/init.d/xinetd restart
-bash: /etc/rc.d/init.d/xinetd: No such file or directory)
上网查了一下原来我没有安装xinetd,我就用yum install xinetd就OK了)

[root@localhost init.d]# ftp localhost(在这步又不行了,提示如下:
-bash: ftp: command not found,唉,为什么我一直都有问题,还是用yum install ftp回车,最后又OK了)
[root@localhost init.d]# ftp localhost
Connected to localhost (127.0.0.1).
220 (vsFTPd 1.2.0)
Name (localhost:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.
# 这样就表示 vsftpd 已经可以正确的启动了,不过因为我们还没有设定好
# /etc/vsftpd.conf ,所以会有无法登入的问题!没关系,
# 等一下设定好就 OK 了!

(其实匿名登陆只能下载,而且匿名登陆默认是/var/ftp 目录)
如果我们把ftp用户的主目录设置在/root/ftp,如useradd -d /root/ftp -M ftp,但没有创建/root/ftp这个目录就会出现如下错误:500 OOPS: cannot change directory:/root/ftp,如果再创建/root/ftp这个目录就可以登陆了,看来vsftpd服务器的匿名登陆时的目录是ftp用户的主目录,所以我们要一定设置一下FTP用户的主目录,如果不用匿名用户,应该不用设置,这个我没试过)
修改用户家目录的方法:
第一种方法:修改/etc/passwd文件相应用户的目录地址即可。
第二种方法:命令如下:usermod   -d   新的目录路径   zhen


接下来配置/etc/vsftpd.conf或/etc/vsftpd/vsftpd.conf

use_localtime=YES
dirmessage_enable=YES
message_file=.message
connect_from_port_20=YES
listen_port=21
listen=YES
pasv_enable=YES
connect_timeout=60
accept_timeout=60
data_connection_timeout=300
idle_session_timeout=300
max_clients=100
max_per_ip=5
pasv_max_port=9030
pasv_min_port=9020
ftpd_banner=220 wellpie FTP Server


(安全设置)
ascii_download_enable=NO
ascii_upload_enable=NO
async_abor_enable=NO
check_shell=NO
one_process_model=NO
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
nopriv_user=nobody
pam_service_name=vsftpd
#tcp_wrappers=YES

(实体用户登入设置)
local_enable=YES
write_enable=YES
local_umask=022
local_max_rate=100000 (100k byte
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.user_list       (拒绝某个用户登陆FTP服务器)
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list   (一行一个帐号,限制在家目录)

 


以下部份不在安装及设置内容,只作说明

如果需要移除时:
# 如果想要移除 vsftp 时,可以这样做
[root@test vsftpd-1.2.0]# rm /usr/local/sbin/vsftpd
[root@test vsftpd-1.2.0]# rm /usr/local/man/man5/vsftpd.conf.5
[root@test vsftpd-1.2.0]# rm /usr/local/man/man8/vsftpd.8
[root@test vsftpd-1.2.0]# rm /etc/xinetd.d/vsftpd
[root@test vsftpd-1.2.0]# rm /etc/vsftpd.conf
# 因为刚刚安装只有安装这几个档案而已说!所以啦, vsftpd 真的是挺安全的说

#注意,可以以 PAM 模块限制某些账号无法登入主机的设定,编辑vi /etc/vsftpd.ftpusers(主要看/etc/pam.d/vsftpd这个文件里面的内容)
#以 userlist_file 抵挡某些账号的登入
# 事实上,这个功能与上面的 PAM 功能相似啦!只是 PAM 是外挂的,而
# 这个设定是 vsftpd 预设提供的就是了!
[root@test root]# vi /etc/vsftpd.user_list
# 这个档案的设定与上面 /etc/vsftpd.ftpusers 相同即可!
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
#如何让 root 可以登入 vsftpd 主机呢?!呵呵!就是将 /etc/vsftpd.ftpusers 与 /etc/vsftpd.user_list 这两个档案里面的 root 拿掉就可以啦!不过,本人可是不建议这么搞的喔!

问题一:
1、启动vsftpd或客户端连接出现如下错误:
500 OOPS: could not bind listening IPv4 socket
解决:因为xinetd已经启动了vsftpd,而vsftpd设置成了stardalone模式,所以,先
停止xinetd服务, service xinetd stop ,然后 /usr/local/sbin/vsftpd &
启动ftp服务
2、启动vsftpd时出现如下错误:
500 OOPS: bad bool value in config file for: xferlog_enable
解决:原来在xferlog_enable=YES这行最后多一个空格,所以不行。(自己环境测试的问题)