用root 进入系统
使用命令 rpm -qa|grep vsftpd 查看系统是否安装了ftp,若安装了vsftp,使用这个命令会在屏幕上显示vsftpd的版本
使用命令rpm -e vsftpd 即可卸载ftp
再使用rpm -qa|grep vsftpd 查看系统是否已删除ftp,若删除成功,屏幕上显示vsftpd的版本
一:安装vsftpd
查看是否已经安装vsftpdrpm -qa | grep vsftpd
如果没有,就安装,并设置开机启动yum -y install vsftpd
chkconfig vsftpd on
安装时发现错误:Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"
Error: Cannot find a valid baseurl for repo: base
是因为缺少DNS,解决如下:到/etc目录下配置resolv.conf加入nameserver IP:[root@localhost ~]# vi /etc/resolv.conf#下面地址是福建电信DNS
nameserver 218.85.157.99
管理vsftpd相关命令:
启动vsftpd:service vsftpd start
停止vsftpd:service vsftpd stop
重启vsftpd:service vsftpd restart
二、配置防火墙
打开/etc/sysconfig/iptables文件vi /etc/sysconfig/iptables
在REJECT行之前添加如下代码,如果提示代码不正确无法启动iptables了,那就按照原来的配置文件前几行的ACCEPT命令搬运过来。-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
保存和关闭文件,重启防火墙service iptables start
三、配置vsftpd服务器
1.默认的配置文件是/etc/vsftpd/vsftpd.conf,你可以用文本编辑器打开。vi /etc/vsftpd/vsftpd.conf
2.添加ftp用户
下面是添加ftpuser用户,设置根目录为/home/wwwroot/ftpuser,禁止此用户登录SSH的权限,并限制其访问其它目录。#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
改为chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
网上有人四处抄文章抄错了,说这个chroot_list_enable=YES代表意思是,写到chroot_list指定文件里的用户名单是注入特权的,可以随便到主机里处瞧文件的,这弄反了。chroot_list_enable代表是否启用目录锁定的用户名单。
vsftpd.conf这个配置文件等号后边写着大写的YES就不要夹带空格或者其他小写字母,避免不能正确读取配置。
3.增加用户ftpuser和对应的用户组,指向目录/home/wwwroot/ftpuser,禁止登录SSH权限。groupadd 用户组名
这一步指定-s参数/sbin/nologin会在centos 8.0会引起问题,报530登录错误。但请不要用/usr/bin/bash这种方式放行,相见本篇尾部对应解决方案。useradd -d /home/wwwroot/ftpuser -g 用户组名 -s /sbin/nologin ftpuser
4.设置用户口令passwd ftpuser
5、编辑目录受限用户名单chroot_list:vi /etc/vsftpd/chroot_list
内容为ftp用户名,每个用户占一行,如:peter
john
6、修改ftp端口
在/etc/vsftpd/vsftpd.conf当中加入一项:listen_port=新端口号
7、重新启动vsftpdservice vsftpd restart
疑难错误解决
centos 8.0在客户端报错530 login incorrect
vim打开/etc/pam.d/vsftpd
发现有一行配置代码auth required pam_shells.so
OK,就是它的问题,注释掉。
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
vim打开/etc/vsftpd/vsftpd.conf,增加一段配置代码:
对于标准的vsftpd build (vsftpd):allow_writeable_chroot=YES
对于扩展的vsftpd build (vsftpd-ext):allow_writable_chroot=YES