一.配置前的准备:
1.安装vsftpd软件包
yum install vsftpd
2.查看vsftpd启动状态
chkconfig --list vsftpd
3.设置vsftpd 2345为启动状态
chkconfig --level 2345 vsftpd on
4.查看防火墙状态
/etc/init.d/iptables status
5.添加开放21号端口
iptables -I INPUT -p tcp --dport 21 -j ACCEPT
6.保存并重启防火墙
/etc/init.d/iptables save
/etc/init.d/iptables restart
开放21号端口只适用于服务器的主动模式,如果是被动模式则服务器需要开放其他端口,端口范围在配置文件中指定。大部分FTP客户端默认使用被动模式,此时需要指定FTP客户端的模式:
(1).IE:工具 -> Internet选项 -> 高级 -> “使用被动FTP”(需要IE6.0以上才支持),将前面的勾去掉即可。
(2).FlashFXP:选项 -> 参数选择 -> 代理/防火墙/标识 -> “使用主动模式” 或 站点管理 -> 对应站点 -> 选项 -> “使用主动模式”或快速连接 -> 切换 -> “使用主动模式”。
7.查看selinux状态
/usr/sbin/sestatus
8.关闭selinux
/usr/sbin/setenforce 0  立即关闭
vi /etc/sysconfig/selinux 修改配置文件,重启才生效
SELINUX=disabled
reboot
二.vsftpd三种登录方式配置
1.匿名登录方式
首先备份一下主配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
vi /etc/vsftpd/vsftpd.conf
write_enable=YES
#启用任何形式的写入权限(如上传、删除文件等)都需要开启此项,默认值为NO
anon_root=/var/ftp/
#设置匿名用户的根目录,默认为/var/ftp/
anon_upload_enable=YES
#是否允许匿名用户上传文件,YES允许,NO不允许,默认是不设值,即为NO
anon_mkdir_write_enable=YES
#是否允许匿名用户有创建目录的写入权限,YES允许,NO不允许,默认是不设值,即为NO
anon_other_write_enable=YES
#是否允许匿名用户有其他写入权限。如对文件改名、覆盖及删除文件,YES允许,NO不允许,默认是不设值,即为NO
anon_umask=022
#设置匿名用户所上传文件的权限掩码,默认为077,为022时新建目录权限是777-022=755,文件权限是666-022=644
anon_max_rate=500000
#限制匿名用户的最大传输速率(0为无限制),单位为Bytes/s,此处为500KBytes/s,默认为0
修改文件夹权限
chown ftp /var/ftp/pub
这样当匿名用户登录后就可以在pub文件夹下进行操作。
不要将/var/ftp的属主更改为ftp,或者将权限设置为777,默认权限755即可。否则那样会报错。
/etc/init.d/vsftpd restart
2.本地登录方式:
vi /etc/vsftpd/vsftpd.conf
write_enable=YES
#启用任何形式的写入权限(如上传、删除文件等)都需要开启此项,默认值为NO
local_enable=YES
#本地系统用户是否可以登录vsftpd,默认值为YES
local_umask=022
#本地用户所上传文件的权限掩码,默认为077,为022时新建目录权限是777-022=755,文件权限是666-022=644
#local_max_rate=500000
#限制本地用户的最大传输速率(0为无限制),单位为Bytes/s,此处为500KBytes/s,默认为0
userlist_enable=YES
#是否启用user_list用户列表文件,默认值为NO
userlist_deny=YES
#是否禁止user_list列表文件中的用户登录FTP服务器,默认为YES
当userlist_enable=YES,userlist_deny=YES时,禁止user_list列表文件中的用户登录FTP服务器;
当userlist_enable=YES,userlist_deny=NO时,只允许user_list列表文件中的用户登录FTP服务器
userlist_file=/etc/vsftpd/user_list
#用户列表文件的绝对路径,默认值是/etc/vsftpd.user_list
pam_service_name=vsftpd
#设置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件名),默认值是vsftpd,注意如果设置虚拟用户的话可能这里改名字了,一定要改回来。
chroot_list_enable=YES
#是否启动锁定在家目录的名单(黑名单),YES为启用,NO禁用,默认值为NO,若要启用则必须chroot_local_user=NO
chroot_list_file=/etc/vsftpd/chroot_list
#锁定在家目录名单(黑名单)的路径,文件格式为一行一用户,此选项默认不设置
#chroot_local_user=YES
#是否将本地用户锁定在家目录,YES为启用,NO禁用,默认值为NO,
#当此项被激活时,chroot_list_enable和chroot_local_users参数的作用将发生变化,
#chroot_list_file所指定文件中的用户将不被锁定在自家目录
#passwd_chroot_enable=YES
#如果与chroot_local_user一起开启,chroot()容器的位置可以在每个用户的基础上指定。
#每个用户的容器来源于/etc/passwd中每个用户的自家目录字段
#local_root=/var/ftp/
#设置本地用户的根目录,默认值为无,默认将位于自己的宿主目录,该选项适用于FTP根目录需要保持固定的情况
#user_config_dir=/etc/vsftpd/loginuser.dir
定义用户个人配置文件所在的目录,用户的个人配置文件为该目录下的同名文件
#guest_enable=YES
#设置是否支持虚拟用户帐号访问,若是启动这项功能,所有的非匿名登入者都视为guest。默认值为NO
#guest_username=virtual
#定义guest用户在系统中的用户名,默认值为ftp
上面的四条如果设置本地用户访问自己家目录的话一定要注释掉。
例如添加一个用户wss
useradd  wss -d /var/wss -s /sbin/nologin 指定特定的目录为他的家目录
passwd wss 设置密码
这样他就可以访问指定的目录了
如果没有指定特定的目录,可以按下面的方法修改
usermod -d /var/wss wss
chown wss:wss /var/wss
vi /etc/vsftpd/chroot_list
wss
将用户禁锢在家目录下
/etc/init.d/vsftpd restart
3.虚拟登录方式:
安装db_load工具
yum list | grep db4
yum -y install db4 db4-devel db4-utils
建立虚拟用户的用户名/密码数据库
vi /etc/vsftpd/loginuser.txt
wushuaishuai
passwd1!
第一行为账号,第二行为密码
然后用db_load工具将列表文件转化为DB数据库文件
cd /etc/vsftpd/
db_load -T -t hash -f loginuser.txt loginuser.db
-T:允许非Berkeley DB的应用程序使用从文本格式装换的DB数据文件
-t hash:指定读取数据文件的基本方法
-f:指定用户名/密码列表文件
file loginuser.db  查看一下文件类型
chmod 600 /etc/vsftpd/loginuser.* 降低文件权限以提高安全性
建立FTP访问的根目录及虚拟用户对应的系统账户
useradd virtual -d /home/ftp -s /sbin/nologin
chown virtual:virtual /home/ftp/
chmod 755 /home/ftp/
建立PAM认证文件
cd /etc/pam.d/
cp vsftpd vsftpd.vu
vi vsftpd.vu
auth       required  pam_userdb.so db=/etc/vsftpd/loginuser
account    required  pam_userdb.so db=/etc/vsftpd/loginuser
修改vsftp.conf配置文件,添加虚拟用户支持
pam_service_name=vsftpd.vu    
#设置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件名),默认值是vsftpd
write_enable=YES
#启用任何形式的写入权限(如上传、删除文件等)都需要开启此项,默认值为NO
user_config_dir=/etc/vsftpd/loginuser.dir
#定义用户个人配置文件所在的目录,用户的个人配置文件为该目录下的同名文件,个人配置文件的格式与vsftpd.conf格式相同,默认值为无
guest_enable=YES
#设置是否支持虚拟用户帐号访问,若是启动这项功能,所有的非匿名登入者都视为guest。默认值为NO                                                  
guest_username=virtual
#定义guest用户在系统中的用户名,默认值为ftp
为不同的虚拟用户建立独立的配置文件
mkdir /etc/vsftpd/loginuser.dir/
cd /etc/vsftpd/loginuser.dir/
配置虚拟用户个人权限
vi wushuaishuai
local_root=/home/ftp/wushuaishuai
#设置虚拟用户的根目录,这个设置比较特殊,不设置为anon_root
#anon_world_readable_only=NO
#控制是否只允许虚拟用户下载可阅读文档。YES,只允许虚拟用户下载可阅读的文件。
#NO,允许虚拟用户浏览整个服务器的文件系统。默认值为YES
anon_upload_enable=YES
#是否允许虚拟用户上传文件,YES允许,NO不允许,默认是不设值,即为NO
write_enable=YES
#启用任何形式的写入权限(如上传、删除文件等)都需要开启此项,默认值为NO
anon_mkdir_write_enable=YES
#是否允许虚拟用户有创建目录的写入权限,YES允许,NO不允许,默认是不设值,即为NO

anon_other_write_enable=YES
#是否允许虚拟用户有其他写入权限。如对文件改名、覆盖及删除文件,
#YES允许,NO不允许,默认是不设值,即为NO
anon_max_rate=500000
#限制虚拟用户的最大传输速率(0为无限制),单位为Bytes/s,此处为500KBytes/s,默认为0

anon_umask=022
#设置虚拟用户所上传文件的权限掩码,默认为077,为022时新建目录权限是777-022=755,文件权限是666-022=644
添加用户根目录
mkdir -p /home/ftp/wushuaishuai/
设置用户根目录的权限,属主设置为virtual即可
chown virtual /home/ftp/wushuaishuai/
重启FTP
/etc/init.d/vsftpd restart
如果要报类似的错误可能是因为配置文件某些行后面有空格造成的
500 OOPS: bad bool value in config file for: write_enable
建立用FlashFXP做FTP客户端,它可以报错进行调试。