在以前的时代(就像之前的Debian Wheezy一样),你可以将FTP安装为ftpd。 这是一个整洁的小工具,没有额外的软件,并允许这种情况:
以一个本地用户,允许他chrooted FTP访问一个目录(指定为他的主目录),而不允许他SSH /命令行访问。 这是通过将用户添加到/etc/ftpchroot文件,然后在/etc/passwd (从/bin/bash更改为/bin/false )中取出他的命令行解释程序来完成的。
但是,现在Debian提供了一个新的FTP守护进程,它安装了一个没有其他服务使用的不必要的复杂超级服务器(openbsd-inetd)。 configuration已经改变,我正在寻找一种方法来恢复旧的行为。
到目前为止,我已经设置了VSFTPD,但是当本地用户的交互式shell是/bin/false ,由于守护进程拒绝让用户login,所以无法使FTP访问工作。当/bin/bash是shell解释器,但是这有问题,用户理论上可以使用SSH连接到系统,这是我当然不希望的。
有没有办法得到任何其他软件的旧configuration(本地用户,FTP是的,SSH没有,CHROOT)?
检查文件/etc/pam.d/vsftpd,vsftpd的pam服务使用pam_shells.so
pam_shells.so
pam_shells is a PAM module that only allows access to the system if the users shell is listed in /etc/shells. It also checks if /etc/shells is a plain file and not world writable.
您只需要将/ bin / false添加到/ etc / shells文件
您可以使用vsftpd的“虚拟用户” ,虚拟用户数据库中的用户只有ftp访问权限,没有别的。