最近利用Linux搭建服务器
搭建FTP的时候决定使用VSFTP搭建,结果却出现了无法正常连接与无法上传文件等诸多问题
经过许久的努力,终于让VSFTP正常运行了
下面一一给出我的解决方案
1、关闭防火墙
使用yum安装好vsftp并配置完成启动后,我竟然发现本地连接FTP时完全收不到回应
就连欢迎信息也没有,这是非常不寻常的状况
经检查VSFTP配置文件正确,程序也正常运行
于是我怀疑到防火墙
1 |
service iptables stop |
运行上面的命令临时关闭防火墙后,可以正常收到系统发送的欢迎信息了
2、设置权限
我使用的是一个名叫SCKA的账户连接FTP,可是我却收到了下面的反馈信息
500 OOPS: cannot change directory:/home/SCKA从报错信息上看,应该是切换到主目录/home/SCKA时出现了错误,于是我尝试执行下面的命令
1 |
chmod 777 /home/SCKA/ |
如此操作后本应解决问题,可是仍旧收到报错信息
3、设置sebool
我突然想到我使用的Linux默认开启了sebool,会不会是被它阻止了连接?
于是运行下面的命令,获取sebool关于FTP的所有设定
1 |
getsebool -a|grep ftp |
果然发现了一些问题
根据回馈来看似乎关于FTP的很多设置都处于off状态,我特别注意了下其中的ftp_home_dir,似乎和我刚刚出现的问题有关
于是尝试运行下面的命令解决
1 |
setsebool ftp_home_dir 1 |
重新启动VSFTPD,然后再重新连接FTP,果然成功返回了主目录!
不过这样设定后重启就会失效,我们需要进行永久的设置
1 |
setsebool -P ftp_home_dir 1 |
4、进一步解决无法上传文件问题
连接上FTP后我再次尝试上传文件,可是再次接到报错信息,无权限
首先想到权限问题,运行chmod 777 目录名 后问题却依旧
突然想到刚刚sebool里面还有几个选项是off
1 2 3 |
setsebool allow_ftpd_full_access 1 setsebool allow_ftpd_use_cifs 1 setsebool allow_ftpd_use_nfs 1 |
用上面的命令把它们全部打开,然后重新连接了FTP,问题完美解决