一、准备环境
1.软件准备
- OS版本:centos-release-7-8.2003.0.el7.centos.x86_64
- 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
方式三:离线
- 下载地址:https://pkgs.org/download/vsftpd
- 下载:vsftpd-3.0.2-28.el7.x86_64.rpm
- 安装: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.软件准备
- OS版本:centos-release-7-8.2003.0.el7.centos.x86_64
- 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
方式三:离线
- 下载地址:https://pkgs.org/download/vsftpd
- 下载:vsftpd-3.0.2-28.el7.x86_64.rpm
- 安装: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