允许本地用户访问 FTP,但不允许 SSH/命令行访问

允许本地用户访问 FTP,但不允许 SSH/命令行访问

以前(比如 Debian Wheezy 之前),你可以将 FTP 安装为 ftpd。这是一个简洁的小工具,无需任何额外的软件,可以实现以下场景:

以本地用户为例,允许他以 chrooted FTP 方式访问目录(指定为他的主目录),但不允许他以 SSH/命令行方式访问。这是通过将用户添加到文件/etc/ftpchroot,然后删除他的命令行解释器/etc/passwd(从 更改/bin/bash/bin/false)来实现的。

但是,现在 Debian 附带了一个新的 FTP 守护程序,它安装了一个不必要的复杂超级服务器,其他服务都不会使用它 (openbsd-inetd)。配置不知何故发生了变化,我正在寻找一种方法来恢复旧的行为。

到目前为止,我已经设置了 VSFTPD,但是当本地用户的交互式 shell 为 时/bin/false,无法使 FTP 访问工作,因为守护进程拒绝让用户登录。当/bin/bash是 shell 解释器时,它工作正常,但这存在一个问题,即用户理论上可以使用 SSH 连接到系统,这是我肯定不希望看到的。

有没有什么办法可以用其他软件恢复旧配置(本地用户、FTP 是、SSH 否、CHROOT)?

答案1

检查文件 /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 文件

答案2

你可以使用 vsftpd 的“虚拟用户”,其中虚拟用户数据库中的用户只能访问 ftp,而没有其他权限。

相关内容