一、安装
有两种安装方式:YUM安装和源码安装,最终实现效果一样,一般使用YUM安装
yum -y install vsftpd*
安装完成之后查看配置文件路径,并启动服务及查看进程是否启动
rpm -ql vsftpd | more
systemctl start vsftpd
ps -ef | grep vsftpd

二、配置文件
vsftpd的配置文件:

/etc/vsftpd/vsftpd.conf:配置文件
/usr/sbin/vsftpd:Vsftpd的主程序
/etc/rc.d/init.d/vsftpd :启动脚本
/etc/pam.d/vsftpd :PAM认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户)

/etc/vsftpd/ftpusers :禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。(注意:linux-4中此文件在/etc/目录下)

/etc/vsftpd/user_list :禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下也不能访问FTP服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问FTP服务器。(注意:linux-4中此文件在/etc/目录下)

/var/ftp :匿名用户主目录;本地用户主目录为:/home/用户主目录,即登录后进入自己家目录
/var/ftp/pub 匿名用户的下载目录,此目录需赋权根chmod 1777 pub(1为特殊权限,使上载后无法删除)

/etc/logrotate.d/vsftpd.log :Vsftpd的日志文件

三、vsftpd.conf配置内容
anonymous_enable=YES:开启匿名访问权限
no_anon_password=YES   #匿名用户login时不询问口令
下面这四个主要语句控制匿名用户文件和文件夹的上传、下载、创建、删除和重命名。
anon_upload_enable=(yes/no); #控制匿名用户对文件(非目录)上传权限。
anon_world_readable_only=(yes/no); #控制匿名用户对文件的下载权限
anon_mkdir_write_enable=(yes/no); #控制匿名用户对文件夹的创建权限
anon_other_write_enable=(yes/no); #控制匿名用户对文件和文件夹的删除和重命名
注:匿名用户下载是使用的是nobody这个用户,所以相应的O这个位置要有R权限才能被下载。若想让匿名用户能上传和删除权限,必需设置
local_enable=YES:启用本地系统用户访问
write_enable=YES:本地系统用户写入权限
local_umask=022:本地用户创建文件及目录默认权限掩码
dirmessage_enable=YES:打印目录显示信息,通常用于用户第一次访问目录时,信息提示。
xferlog_enable=YES:启用上传/下载日志记录
connect_from_port_20=YES:使用20端口进行数据传输
xferlog_std_format=YES:日志将根据xferlog的标准格式写入
listen=NO:vsftpd不以独立的服务启动,通过Xinetd服务管理,建议改成YES
listen_ipv6=YES:启动ipv6监听
pam_service_name=vsftpd:登录ftp服务器,依据/etc/pam.d/vsftpd中的内容进行认证
userlist_enable=YES:vsftpd.user_list和ftpusers配置文件中的用户禁止访问ftp
tcp_wrappers=YES:

四、主动/被动模式更改
ftp服务器默认为主动模式,设置为被动模式方法如下:
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60100

五、系统用户登录配置
需要将匿名用户登录设置为NO,并把local_enable=YES,其他配置不变

六、虚拟用户配置
vsftpd基于用户访问服务器,系统用户越多对系统而言月不安全,所以采用虚拟用户进行登录。原理是虚拟用户没有实际的系统用户,而只是映射到一个真实用户以及设置相应的权限来实现访问,虚拟用户不能登录linux。
1.安装vsftpd虚拟用户需要用到的软件以及认证模块
yum -y install pam* libdb-utils libsb* --skip-broken
2.创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,新建虚拟用户以及密码,chuanchuan和gaogao为用户名,123456为密码
vim /etc/vsftpd/ftpusers.txt
chuanchuan
123456
gaogao
123456
3.生成vsftpd虚拟用户数据库认证文件,设置权限为700
db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db
chmod 700 /etc/vsftpd/vsftpd_logon.db
4.配置PAM认证文件,/etc/pam.d/vsftpd行首加入如下两行代码
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login.db
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login.db
5.vsftpd虚拟用户需要映射到一个真实系统用户,该系统用户不需要密码,也不需要能登陆,主要用户虚拟用户映射
useradd -s /sbin/nologin ftpuser
6.vsftpd.conf配置文件代码:

基础配置

anonymous_enable=YES:开启匿名访问权限
no_anon_password=YES   #匿名用户login时不询问口令
local_enable=YES:启用本地系统用户访问
write_enable=YES:本地系统用户写入权限
local_umask=022:本地用户创建文件及目录默认权限掩码
dirmessage_enable=YES:打印目录显示信息,通常用于用户第一次访问目录时,信息提示。
xferlog_enable=YES:启用上传/下载日志记录
connect_from_port_20=YES:使用20端口进行数据传输
xferlog_std_format=YES:日志将根据xferlog的标准格式写入
listen=NO:vsftpd不以独立的服务启动,通过Xinetd服务管理,建议改成YES
listen_ipv6=YES:启动ipv6监听
pam_service_name=vsftpd:登录ftp服务器,依据/etc/pam.d/vsftpd中的内容进行认证
userlist_enable=YES:vsftpd.user_list和ftpusers配置文件中的用户禁止访问ftp
tcp_wrappers=YES:

ftp虚拟用户配置

pam.service_name=vsftpd:启用虚拟用户认证
guest_enable=YES:启用虚拟用户
guest_username=ftpuser:虚拟用户映射至系统用户ftpuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf:设置虚拟用户配置文件所在目录
virtual_use_local_privs=YES:虚拟用户使用与本地用户相同的权限
7.创建虚拟用户配置文件目录
mkdir -p /etc/vsftpd/vsftpd_user_conf/
8.分别为虚拟用户创建配置文件
vim /etc/vsftpd/vsftpd_user_conf/chuanchuan
local_root=/home/ftpuser/chuanchuan:虚拟用户主目录文件路径
write_enable=YES:允许登录用户有写权限
anon_world_readable_onle=YES:允许匿名用户下载并读取文件
anon_upload_enable=YES:允许匿名用户上传文件权限,只有在write_enable=YES时该参数生效
anon_mkdir_enable=YES:允许匿名用户创建目录权限,只有在write_enable=YES时该参数生效
anon_other_write_enable=YES:允许匿名用户其他权限,例如删除,重命名等;

vim /etc/vsftpd/vsftpd_user_conf/gaogao
local_root=/home/ftpuser/gaogao:虚拟用户主目录文件路径
write_enable=YES:允许登录用户有写权限
anon_world_readable_onle=YES:允许匿名用户下载并读取文件
anon_upload_enable=YES:允许匿名用户上传文件权限,只有在write_enable=YES时该参数生效
anon_mkdir_enable=YES:允许匿名用户创建目录权限,只有在write_enable=YES时该参数生效
anon_other_write_enable=YES:允许匿名用户其他权限,例如删除,重命名等;

9.创建虚拟用户各自虚拟目录,并改所有人和所有组为ftpuser
mkdir -p /home/ftpuser/{chuanchuan,gaogao}
chown -R ftpuser.ftpuser/home/ftpuser