我已经设置了一个 vsftpd 服务器,并使用 chroot 将用户锁定在其主目录中,效果很好。此后,我尝试编辑 passwd 文件以将默认 shell 设置为/bin/false
,甚至/user/sbin/nologin
为了阻止用户使用 SSH 登录并查看我的文件夹结构(即使他们缺乏rwx
权限)。
虽然我对第二个选项不起作用并不感到惊讶,但我想知道为什么如果我将默认 shell 设置为/bin/sh
或以外的任何内容,我也无法使用 FTP 客户端登录该帐户/bin/bash
。
我该如何让该帐户成为 FTP 的有效登录帐户,但没有 SSH 访问权限?
答案1
对于无需 shell 或其他访问的 ftp 访问,vsftp 支持虚拟用户。该解决方案基本上相当于使用 PAM 在不同的用户列表上进行操作,并调整 vsftpd 配置以遵循该列表。这里有一篇详细的文章:
文章提到需要“db_util”;在 Jessie 上你可以找到几个版本,如下所示:
apt-cache search '^db.*-util$'
答案2
通过 OpenSSH 配置,可以禁用以下位置的访问sshd_config
:
DenyUsers joe bob
尽管列出允许 SSH 的人员列表,然后拒绝其他人可能更明智:
AllowGroups wheel staff
或者将所有 ftp 用户归为一个特定组(例如,nossh
),然后否认这一点。更改组成员身份比始终进行编辑更容易sshd_config
。
DenyGroup nossh
对此进行切片的另一种方法(在 Linux 上)是调整 PAM 配置,例如用于pam_access.so
(/etc/pam.d/ssh
加上适当的access.conf(5)
配置)但不用于 FTP。