一.配置前的准备:

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客户端,它可以报错进行调试。