vsftpd无法登录,请问应该如何配置?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vsftpd无法登录,请问应该如何配置?相关的知识,希望对你有一定的参考价值。

/etc/vsftpd.conf 配置文件中
我必须设置非默认目录,就是local_root默认是/home/user,我改成了/home/user/software
然后我想禁止用户访问上一级目录,所以我设置了chroot_list_enable=YES
但这样的问题是我无法登录ftp,500 OOPS: vsftpd: refusing to run with writable root inside chroot()
我禁止用户访问上一级,不是增加了安全性么,怎么反而被拒绝登录了
我想实现的效果是,可以通过用户登录ftp,匿名不能登录,并且可以读写文件,禁止访问上一级目录,请问应该怎样配置

如果vsftpd没有办法正常登录,其实不需要重新配置,也不需要对vsftpd进行重新调试,只需要执行下面这些步骤就能正常登录。

    输入程序chroot_local_user=YES,这里一定不能输入错误,否则会导致登录时显示错误。

    登录状态下不能切换目,这时可以尝试在系统里打开打开chroot_list_enable=YES。

    部分用户不执行chroot,所以还要在系统里设置chroot_list_file,最后就尝试再次登录。

正常情况下,只要完成上面步骤就能登录vsftpd。

参考技术A 你不用修改其他的就配置
chroot_local_user=YES
登录的用户就不能切换目录了
你打开chroot_list_enable=YES
是设用户不执行chroot,
你还要设置chroot_list_file追问

如果我设置了
chroot_local_user=YES
#chroot_list_enable=YES
结果就是500 OOPS: vsftpd: refusing to run with writable root inside chroot()

追答

是你设置local_root为/home/user/software后目录的所有者和权限的问题
你将目录的所有者改为登陆的用户还要有查看的权限rwx

追问

/home/user/software 目录的权限为 drwxrwxr-x user,我也是用user 账号登陆ftp的,local_umask=022

追答

在vsftpd.conf 中添加allow_writeable_chroot=YES

本回答被提问者采纳

[积累] vsftpd 匿名用户登录显示空白页问题

问题:

本来内网 ftp 用的好好的, 突然某天匿名用户就无法通过浏览器访问 ftp 了.

尝试解决:

检查 vsftpd 配置:

出现这个问题首先肯定要查看 vsftpd 配置. 我使用 CentOS 6.5, 这个配置文件位置如下:

/etc/vsftpd/vsftpd.conf

重点检查如下两个参数设置是否正确:

anonymous_enable=YES
anon_root=/ftp_public

第一个参数为是否允许匿名用户登录 ftp;
第二个参数为匿名用户登入后显示的目录, 也是其可以浏览的根目录.

检查的结果是, 木有问题…

检查 selinux 配置:

然后怀疑 selinux 配置是否被人改了. 敲入如下命令:

$ getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> on
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> on
ftpd_connect_db --> off
ftpd_use_fusefs --> off
ftpd_use_passive_mode --> on
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_use_cifs --> off
tftp_use_nfs --> off

看起来也木有问题. 也尝试把某些参数打开, 但没有效果.

设置打开某项 selinux 配置命令: setsebool allow_ftpd_full_access on
ftp 出现疑似权限问题时, 可以查看并尝试打开某些 selinux 选项.

selinux 还有一个目录权限相关的配置. 尝试执行如下命令:

chcon -R -t public_content_t /ftp_public

chcon 用于修改某对象的安全上下文. 上面那句就是说, 设置要把某目录对匿名用户 (nobody) 开放.
但就这个问题来说, 这个方法也没能解决问题…

检查目录权限:

然后开始怀疑是 ftp_public 目录权限问题. ls -al 查看发现该目录权限为 777. 这个权限已经是最大了, 应该也没问题.

最终原因:

各种方法无果, 开始找谷歌帮忙. 浏览并尝试了各种解决方案, 最终在 这个帖子 里面找到了解决我问题的方案:

把 ftp_public 目录权限由 777 改为 755 , 问题解决.

这估计是哪位兄弟图省事, 为了达成某个功能, 而把这个目录直接赋予了最大权限. 没想到最大权限反而有问题.
看帖子中提到的原因, 是说 配置中匿名用户没有写权限, 因此匿名用户无法登录到有写权限的目录中.

另一个碰到过的类似的例子是, 给 git 配置的 ~/.ssh/id_rsa.pub 公钥文件不可以具有执行权限, 否则 git 会认为该公钥是无效的.

这两个故事教育我们, linux 文件权限绝不是大就可用, 除非明确知道自己要做什么, 否则不要给文件赋予 777 权限.

以上是关于vsftpd无法登录,请问应该如何配置?的主要内容,如果未能解决你的问题,请参考以下文章

如何配置vsftpd

vsftpd配置好防火墙后从网页登录ftp却无法访问此页面

linux:vsftpd登录报530 Login incorrect无法登录问题

Linux中的如何配置FTP(ProFTOD)用本地用户登录?

[积累] vsftpd 匿名用户登录显示空白页问题

[积累] vsftpd 匿名用户登录显示空白页问题