在 Debian Wheezy 64 位上,我为客户创建了一个新用户,以便将文件放入目录中。创建用户后,我通过在 中替换/bin/bash
来删除他的交互式登录。然后我将他添加到,以便他的会话将被 chroot 到他的主目录。/bin/false
/etc/passwd
/etc/ftpchroot
但是,一旦我将用户添加到/etc/ftpchroot
,当用户登录时,他就看不到任何文件。用户被 chrooted,他无法向上遍历。他可以上传存储在正确目录中的文件,并且具有 640 个权限和 thatuser:thatusersgroup 所有权。
我目前的想法是:
/etc/ftpchroot
显然正在做一些事情,并且做它应该做的事情。- 在该机器上创建的任何用户都有此问题(与其他新用户尝试过两次)
- 它与目录无关。更改他的主目录并切换到那里会出现同样的问题。
这对我来说很奇怪,因为我以前做过好几次,但从未遇到过这种情况。遗憾的是,由于问题描述有问题,很难在 Google 上找到答案。
编辑 1:我现在看到了一些东西。在 ftpchroot 下登录时,登录成功完成后不会显示任何消息。但是,在没有 ftpchroot 的情况下登录,/etc/motd
在完成身份验证后会显示。
编辑 2:我通过安装 解决了这个问题inetutils-ftpd
。它带来了 PAM 身份验证,配置完成后,它会以同一个用户身份登录,而不会出现上述问题,他可以毫无问题地上传和查看他的文件。
答案1
当您使用 chroot 时,您想要在 chroot 中使用的任何二进制文件都必须存在于该 chroot 中。对于 ftpchroot,这通常意味着 ftpd 需要ls
在其自己的二进制文件中具有功能,而不是依赖于/bin/ls
系统的,否则每个用户都必须拥有自己的$HOME/bin/ls
。
因此,解决方案是使用具有ls
内置功能的 ftp 守护进程(或使用 --ls-included 重新编译它,或使用适合此特定 ftp 守护进程的任何适当选项)。