在Debian Wheezy 64bit上,我为一个客户创build一个新用户,将文件放入一个目录中。 在创build用户之后,我通过在/etc/passwd中用/bin/falsereplace/bin/bash来取消他的交互式login。 然后我把他添加到/etc/ftpchroot ,这样他的会话将被/etc/ftpchroot到他的主目录。
但是,只要将用户添加到/etc/ftpchroot ,用户login时就看不到任何文件。 用户被chrooted,他不能往上走。 他可以上传文件,这些文件存储在正确的目录中,并具有640个权限,该用户:thatusersgroup所有权。
我的想法到目前为止:
/etc/ftpchroot显然是在做一些事情,在做什么,它应该做什么。 对我来说这很奇怪,因为我曾经这样做过很多次,而且我从来没有遇到过这个。 可悲的是,search答案是困难的问题描述。
编辑1:我现在看到的东西。 在ftpchroot下login时,login成功完成时不显示任何消息。 但是,完成身份validation后,将显示没有ftpchroot, /etc/motd的login。
编辑2:我有点解决了这个问题,安装inetutils-ftpd 。 它带来了PAMauthentication,configuration完成后,它login到同一个用户没有提到的问题,他可以上传和看到他的文件没有问题。
当你使用chroot时,你想在chroot中使用的任何二进制文件必须存在于chroot中。 在ftpchroot的情况下,这通常意味着ftpd需要在自己的二进制文件中具有ls能力,而不是依赖于系统的/bin/ls ,否则每个用户都必须拥有自己的$HOME/bin/ls 。
所以解决方法是使用一个内置ls的ftp守护进程(或者用–ls-included,或者对于这个特定的ftp守护进程来说适当的选项)重新编译它。