cents7安装vsftp后登陆一片空白无法传文件和创建目录

第1种方案:

作者说这个问题在 Centos 上才会出现,Redhat 就没有,难怪我在公司都没见过这问题。

解决办法:

①、查看 ftp 的 Selinux 状态:sestatus -b | grep ftp

②、在结果中可以看到: ftp_home_dir  off

③、将状态改为 on:setsebool -P  ftp_home_dir  on

④、重启 vsftp 服务:service vsftpd restart

有点纳闷的是,他的服务器根本就没开 selinux,所以第②步根本没结果,理论上,这个解决办法应该没效果才对,可实际上,全部执行完成之后,发现可以上传文件和新建文件夹了。我去,还真是诡异,总之解决了问题就好。


如③的方案无法执行,请注意sestatus -b | grep ftp出来的信息是:tftp_home_dir --> off,那语句应该是:

setsebool -P tftp_home_dir 1


第2种方案,粗暴:

setsebool -P ftpd_full_access 1   

setsebool -P tftp_home_dir 1


第1种方案里:

在centOs(linux)上用vsftp配置的ftp服务,用户权限等设置完成之后,发现从客户端无法上传文件及创建文件夹。尝试着关闭防火墙,也没能解决。通过搜索,觉得是selinux这个服务造成的影响,关闭selinux服务之后,问题解决,vsftp的ftp服务使用正常了。

关闭selinux方法:修改/etc/selinux/config文件,修改为SELINUX=disabled。重启linux系统。

 SELinux 的工作模式

SELinux 有三种工作模式,分别是:

1. enforcing:强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中。

2. permissive:宽容模式。违反 SELinux 规则的行为只会记录到日志中。一般为调试用。

3. disabled:关闭 SELinux。

SELinux 工作模式可以在 /etc/selinux/config 中设定。

如果想从 disabled 切换到 enforcing 或者 permissive 的话,需要重启系统。反过来也一样。

enforcing 和 permissive 模式可以通过 setenforce 1|0 命令快速切换。

需要注意的是,如果系统已经在关闭 SELinux 的状态下运行了一段时间,在打开 SELinux 之后的第一次重启速度可能会比较慢。因为系统必须为磁盘中的文件创建安全上下文(我表示我重启了大约 10 分钟,还以为是死机了……)。

SELinux 日志的记录需要借助 auditd.service 这个服务,请不要禁用它。


发现还不行,终极大招:

从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。


 要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项:


allow_writeable_chroot=YES

2020/5/1 20:34:00 技术杂谈