一、准备环境

1.软件准备

  1. OS版本:centos-release-7-8.2003.0.el7.centos.x86_64
  2. vsftp版本:vsftpd-3.0.2-28.el7.x86_64.rpm

rpm -q centos-release #查看OS版本

2.检查是否已安装

rpm -qa | grep vsftpd

二、下载及安装

方式一:yum下载及安装

yum -y install vsftp

方式二:yumdownloade下载及安装

# 1.安装yumdownloade插件
yum install yum-utils -y
# 2.列出能联网系统的所有可安装的vsftpd软件
yum list | grep vsftpd
# 3.下载到指定目录
下载软件包vsftpd.x86_64及依赖到指定目录(当前目录)
yumdownloader vsftpd.x86_64   --resolve --destdir=.
yumdownloader vsftpd-sysvinit.x86_64    --resolve --destdir=.
# 4. 安装:
rpm -ivh --replacefiles /root/vsftpd*.rpm

方式三:离线

  1. 下载地址:https://pkgs.org/download/vsftpd
  2. 下载:vsftpd-3.0.2-28.el7.x86_64.rpm
  3. 安装:rpm -ivh --replacefiles /root/vsftpd*.rpm

三、配置

1.配置开机启动

(1)查看vsftp服务状态
# 查看状态
service vsftpd status
#开启
service vsftpd start
#停止
service vsftpd stop
#重启
service vsftpd restart
(2)设置开机启动
# 查看是否开机启动:
systemctl is-enabled vsftpd.service
# 设置开机自启动:
systemctl enable vsftpd.service

# 查看开机启动服务列表:
systemctl list-unit-files|grep enabled
# 查看启动失败的服务列表:
systemctl --failed

2.防火墙设置

方式一:关闭防火墙

# 1.查看防火墙状态
systemctl status firewalld.service
# 2.关闭防火墙
systemctl stop firewalld.service

方式二:防火墙开放端口

# 暂时开放
firewall-cmd --add-service=ftp
# 永久开放
firewall-cmd --add-service=ftp --permanent
# 使配置生效
firewall-cmd --reload
# 查看服务
firewall-cmd --list-service

3.vsftp.conf配置

查看原始配置:cat /etc/vsftpd/vsftpd.conf |grep -v ^#

# vsftp.conf原始配置
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
# 1.配置前先备份:
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
# 2.编辑内容
vi /etc/vsftpd/vsftpd.conf

vsftpd.conf内容修改为如下:

#设定不允许匿名访问
anonymous_enable=NO
#设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
#记录上传下载文件的日志
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=ftp
#日志记录文件位置
xferlog_file=/var/log/vsftpd.log
#格式化日志
xferlog_std_format=YES
#设定支持ASCII模式的上传和下载功能
ascii_upload_enable=YES
ascii_download_enable=YES

#使用户不能离开主目录
chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list

ls_recurse_enable=YES
#监听IPv4,sockets
listen=YES
#注释IPv6,sockets监听
#listen_ipv6=YES

#PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
pam_service_name=vsftpd

userlist_enable=YES
userlist_deny=YES
#/etc/vsftpd/user_list中的用户禁止登录ftp
#如果只配置userlist_enable=YES,有可能出现错误“530 Permission denied”,因此加上如下配置
userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES

#设定启用虚拟用户功能
guest_enable=YES
#指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了
guest_username=ftp
#设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS,FTP服务文件(配置文件名=虚拟用户名)
user_config_dir=/etc/vsftpd/vuser_conf

pasv_min_port=61001
pasv_max_port=62000

#文件上传下载权限设置
allow_writeable_chroot=YES
anon_umask=022
file_open_mode=777

#虚拟用户和本地用户有相同的权限
virtual_use_local_privs=YES

4.配置vsftpd文件

(1)备份vsftpd文件

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup

(2)编辑vsftpd文件

vi /etc/pam.d/vsftpd

(3)修改内容为如下:

##1. 查看系统版本号    
getconf LONG_BIT

#系统为32位的
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
#系统为64位的
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

(4)重启服务

systemctl restart vsftpd.service

5.创建虚拟用户

(1)创建虚拟用户

# 1.创建chroot list
touch /etc/vsftpd/chroot_list
# 2.将vftpd.conf配置文件中的guest_username
echo ftp >> /etc/vsftpd/chroot_list
# 3.创建用户密码文件,并写入内容
touch /etc/vsftpd/vuser_passwd.txt
##注意奇行是用户名,偶行是密码
ftp1
1qaz@WSX

# 4.生成虚拟用户认证的db文件
# 如果没有db4需要先进行安装。安装Berkeley DB工具:
yum install db4 db4-utils
# 5.生成虚拟用户认证的db文件,每次新加用户重新执行
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

(2)虚拟用户配置权限及目录

# 1.创建虚拟用户配置
mkdir /etc/vsftpd/vuser_conf/
# 2.文件名等于vuser_passwd.txt里面的账户名,否则下面设置无效
vi /etc/vsftpd/vuser_conf/ftp1
# 3.创建虚拟用户目录
mkdir -p /data/ftp1/upload
# 4.目录授权
chmod -R 777 /data/ftp1/upload
ftp1内容如下
#虚拟用户根目录,根据实际情况修改(如果没有需要创建)。该目录必须要有读写权限 chmod -R 777 目录。
local_root=/data/ftp1/upload
#可写
write_enable=YES
#掩码 
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

一、准备环境

1.软件准备

  1. OS版本:centos-release-7-8.2003.0.el7.centos.x86_64
  2. vsftp版本:vsftpd-3.0.2-28.el7.x86_64.rpm

rpm -q centos-release #查看OS版本

2.检查是否已安装

rpm -qa | grep vsftpd

二、下载及安装

方式一:yum下载及安装

yum -y install vsftp

方式二:yumdownloade下载及安装

# 1.安装yumdownloade插件
yum install yum-utils -y
# 2.列出能联网系统的所有可安装的vsftpd软件
yum list | grep vsftpd
# 3.下载到指定目录
下载软件包vsftpd.x86_64及依赖到指定目录(当前目录)
yumdownloader vsftpd.x86_64   --resolve --destdir=.
yumdownloader vsftpd-sysvinit.x86_64    --resolve --destdir=.
# 4. 安装:
rpm -ivh --replacefiles /root/vsftpd*.rpm

方式三:离线

  1. 下载地址:https://pkgs.org/download/vsftpd
  2. 下载:vsftpd-3.0.2-28.el7.x86_64.rpm
  3. 安装:rpm -ivh --replacefiles /root/vsftpd*.rpm

三、配置

1.配置开机启动

(1)查看vsftp服务状态
# 查看状态
service vsftpd status
#开启
service vsftpd start
#停止
service vsftpd stop
#重启
service vsftpd restart
(2)设置开机启动
# 查看是否开机启动:
systemctl is-enabled vsftpd.service
# 设置开机自启动:
systemctl enable vsftpd.service

# 查看开机启动服务列表:
systemctl list-unit-files|grep enabled
# 查看启动失败的服务列表:
systemctl --failed

2.防火墙设置

方式一:关闭防火墙

# 1.查看防火墙状态
systemctl status firewalld.service
# 2.关闭防火墙
systemctl stop firewalld.service

方式二:防火墙开放端口

# 暂时开放
firewall-cmd --add-service=ftp
# 永久开放
firewall-cmd --add-service=ftp --permanent
# 使配置生效
firewall-cmd --reload
# 查看服务
firewall-cmd --list-service

3.vsftp.conf配置

查看原始配置:cat /etc/vsftpd/vsftpd.conf |grep -v ^#

# vsftp.conf原始配置
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
# 1.配置前先备份:
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
# 2.编辑内容
vi /etc/vsftpd/vsftpd.conf

vsftpd.conf内容修改为如下:

#设定不允许匿名访问
anonymous_enable=NO
#设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
#记录上传下载文件的日志
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=ftp
#日志记录文件位置
xferlog_file=/var/log/vsftpd.log
#格式化日志
xferlog_std_format=YES
#设定支持ASCII模式的上传和下载功能
ascii_upload_enable=YES
ascii_download_enable=YES

#使用户不能离开主目录
chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list

ls_recurse_enable=YES
#监听IPv4,sockets
listen=YES
#注释IPv6,sockets监听
#listen_ipv6=YES

#PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
pam_service_name=vsftpd

userlist_enable=YES
userlist_deny=YES
#/etc/vsftpd/user_list中的用户禁止登录ftp
#如果只配置userlist_enable=YES,有可能出现错误“530 Permission denied”,因此加上如下配置
userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES

#设定启用虚拟用户功能
guest_enable=YES
#指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了
guest_username=ftp
#设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS,FTP服务文件(配置文件名=虚拟用户名)
user_config_dir=/etc/vsftpd/vuser_conf

pasv_min_port=61001
pasv_max_port=62000

#文件上传下载权限设置
allow_writeable_chroot=YES
anon_umask=022
file_open_mode=777

#虚拟用户和本地用户有相同的权限
virtual_use_local_privs=YES

4.配置vsftpd文件

(1)备份vsftpd文件

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup

(2)编辑vsftpd文件

vi /etc/pam.d/vsftpd

(3)修改内容为如下:

##1. 查看系统版本号    
getconf LONG_BIT

#系统为32位的
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
#系统为64位的
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

(4)重启服务

systemctl restart vsftpd.service

5.创建虚拟用户

(1)创建虚拟用户

# 1.创建chroot list
touch /etc/vsftpd/chroot_list
# 2.将vftpd.conf配置文件中的guest_username
echo ftp >> /etc/vsftpd/chroot_list
# 3.创建用户密码文件,并写入内容
touch /etc/vsftpd/vuser_passwd.txt
##注意奇行是用户名,偶行是密码
ftp1
1qaz@WSX

# 4.生成虚拟用户认证的db文件
# 如果没有db4需要先进行安装。安装Berkeley DB工具:
yum install db4 db4-utils
# 5.生成虚拟用户认证的db文件,每次新加用户重新执行
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

(2)虚拟用户配置权限及目录

# 1.创建虚拟用户配置
mkdir /etc/vsftpd/vuser_conf/
# 2.文件名等于vuser_passwd.txt里面的账户名,否则下面设置无效
vi /etc/vsftpd/vuser_conf/ftp1
# 3.创建虚拟用户目录
mkdir -p /data/ftp1/upload
# 4.目录授权
chmod -R 777 /data/ftp1/upload
ftp1内容如下
#虚拟用户根目录,根据实际情况修改(如果没有需要创建)。该目录必须要有读写权限 chmod -R 777 目录。
local_root=/data/ftp1/upload
#可写
write_enable=YES
#掩码 
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES