1.安装
说明:如果有联网的,可直接用yum install -y vsftpd安装。如果不能联网的,需要利用能上网的机器下载或本地yum源安装。
下载软件包:
yum install -y --downloadonly --downloaddir=/opt/vsftpd_down/ vsftpd
安装vsftpd服务器:
rpm -Uvh vsftpd-3.0.2-22.el7.x86_64.rpm
安装ftp客户端 for 测试使用:
rpm -Uvh ftp-0.17-67.el7.x86_64.rpm
2.创建ftp用户(ftpuser01/123456,默认的ftp服务器根目录是:/var/ftp)
useradd ftpuser01 -s /sbin/nologin -d /var/ftp
passwd ftpuser01
3.配置
vim /etc/vsftpd/vsftpd.conf
#禁止匿名用户登录
anonymous_enable=no
#赋予写权限
write_enable=yes
local_enable=YES
local_root=/var/ftp
#是否将所有用户限制在主目录,如果为no则允许向上切换到目录之外
chroot_local_user=yes
#chroot_list列表中的用户可以访问主目录以外的目录
chroot_list_enable=no
chroot_list_file=/etc/vsftpd/chroot_list
pam_service_name=vsftpd
userlist_enable=yes
userlist_deny=no
在/etc/vsftpd/下的chroot_list、user_list里添加用户名称:ftpuser01
vim /etc/vsftpd/chroot_list
vim /etc/vsftpd/user_list
默认文件夹无法写入,/var/ftp目录下创建文件夹forwrite:
mkdir /var/ftp/forwrite
chmod 777 /var/ftp/forwrite/
注意:不能直接将/var/ftp设置为777,否则会有500错误。如果不小心设置了,改回755。
重启vsftpd服务:
systemctl restart vsftpd.service
设置开机自启动
systemctl enable vsftpd.service
查看状态:
systemctl status vsftpd
#关闭selinux防火墙
vim /etc/selinux/config
SELINUX=disabled
#firewalld防火墙开放端口
systemctl status firewalld
#查看开放的所有端口
firewall-cmd --list-all
添加端口开放:
firewall-cmd --zone=public --permanent --add-service=ftp
firewall-cmd --reload
本地测试:ftp 127.0.0.1
远程测试:ftp x.x.x.x
===>
注意:
不同版本的vsftpd配置有些微差异,有些版本的vsftpd(vsftpd-3.0.2-29.el7_9.x86_64.rpm)配置后,FTP客户端登录时如果报错:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
500 OOPS: 远程主机关闭连接。
三种解决方案:
方案1:
/etc/vsftpd/vsftpd.conf 的配置如下:
chroot_local_user=YES # YES:所有用户都被限制在其主目录下,即只能访问自己的主目录。
# NO: 所有用户都不被限制在其主目录下
chroot_list_enable=YES # YES:配置本参数可以使用chroot_list_file指定的用户列表,这些用户作为“例外”不受限制
# NO: 不使用chroot_list_file指定的用户列表、没有任何“例外”用户
注意:这里不添加 allow_writeable_chroot = YES 配置参数。而是配置例外用户列表。
例外用户列表chroot_list_file文件如果不存在则创建后编辑,如果已经存在则添加ftp用户:
vi /etc/vsftpd/chroot_list
ftpuser01
风险可控:所有用户都被限制在其主目录下,即只能访问自己的主目录,但允许例外用户,按需配置例外用户。
方案2:
/etc/vsftpd/vsftpd.conf 的配置如下:
chroot_local_user=YES # YES:所有用户都被限制在其主目录下,即只能访问自己的主目录。
# NO: 所有用户都不被限制在其主目录下
chroot_list_enable=NO # YES:配置本参数可以使用chroot_list_file指定的用户列表,这些用户作为“例外”不受限制
# NO: 不使用chroot_list_file指定的用户列表、没有任何“例外”用户
allow_writeable_chroot=YES # YES:配置用户拥有根目录写入权限,用户就可以在自己的根目录中创建、修改文件和目录
风险较高:虽然所有用户都被限制在其主目录下,即只能访问自己的主目录,也不使用chroot_list_file、没有任何例外用户。但 allow_writeable_chroot=YES 确放开了所有用户权限、都拥有了写权限。
方案3:
/etc/vsftpd/vsftpd.conf 的配置如下:
chroot_local_user=NO # YES:所有用户都被限制在其主目录下,即只能访问自己的主目录。
# NO: 所有用户都不被限制在其主目录下
chroot_list_enable=NO # YES:配置本参数可以使用chroot_list_file指定的用户列表,这些用户作为“例外”不受限制
# NO: 不使用chroot_list_file指定的用户列表、没有任何“例外”用户
风险较高:风险和方案2相同,所有用户都不被限制在其主目录下,都能chroot。
修改配置后,重启服务来生效配置: service vsftpd restart