打开vsftpd.conf看到如下关键几行: 注释大意就是,如果chroot_local_user=yes,那么chroot_list_file(默认保存具有改变根目录权限的用户)作用取反,显然 不够清晰 。于是man了一下帮助,就很明确 了。
个人对man下的帮助进行了翻译解读与测试,成功通过。最后总结出以下
if(chroot_local_user==yes)
所有用户被限制家目录
if(chroot_list_enable==yes)
chroot_list_file生效(chroot_list_file只与chroot_list_enable关联).且存放限制家目录访问的用户(为空会报错)
if(chroot_local_user==yes&&chroot_list_enable==yes)
chroot_list_file 作用取反
打开SELinux后,SELinux会阻止ftp daemon读取用户home目录。所以FTP会甩出一句 “500 OOPS: cannot change directory”。无法进入目录,出错退出。
问题解决:
setsebool ftp_home_dir on
总结,最简单解法:
chroot_local_user==yes //所有用户限制跨越根目录
chmod u-w /home/xxx //待登陆用户家目录去掉w权限,否则会报错提示,不允许写权限
setsebool ftp_home_dir on //设置SELINUX