不能将 SSH 用户限制在其主文件夹之外的任何文件夹中

不能将 SSH 用户限制在其主文件夹之外的任何文件夹中

我需要一些帮助。

我试图将 SSH 用户限制在他们自己的文件夹中,以便他们可以通过 SFTP 访问服务器,而无需查看文件系统

我按照网上的简单指南操作,成功将用户禁锢在其默认主文件夹 (/home/user) 中。但是,如果我尝试更改其主文件夹,用户将无法登录。

我有 2 个用户:kevin 和 default

cat /etc/passwd揭示

kevin:x:500:500::/home/kevin:/bin/false
default:x:501:500::/var/www/vhosts/default:/bin/false

我的 sshd_config 文件如下所示

Subsystem sftp internal-sftp

Match Group sftponly
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

cat /etc/group揭示

sftponly:x:500:default,kevin
kevin:x:501:
default:x:502:

有谁知道为什么用户kevin可以按预期工作,但用户默认却无法登录。

谢谢。

编辑

我已经编辑了我的密码文件并将其更改default:x:501:500::/var/www/vhosts/default:/bin/falsedefault:x:501:500::/home/default:/bin/false,并且默认用户现在可以登录。

仅当我想将用户主目录更改为 /var/www/vhosts/user 时,才会发生此问题

答案1

我猜是 SELinux 阻止了它。

要暂时禁用它以查看是否是问题所在,请将setenforce 0其设置为宽容模式。重新启动或将标志切换回 1 后,它将重新打开。

要将其永久设置为宽容模式,请编辑/etc/selinux/config并设置SELINUX=permissive。如果这是面向最终用户的目标机器,我建议将其保持打开状态。安装一个名为 setroubleshoot 的套件,并找到一些有关如何使用与其捆绑在一起的 sealert 命令的指南。它会尝试智能地为您提供有关如何处理被 SELinux 阻止的项目的建议。它还会为您编写和编译策略,因此对初学者来说非常友好。

答案2

不仅用户的主目录,其所有组件都应归 root 所有。就您而言,这包括以下所有目录:{/var, /var/www, /var/www/vhosts/default, /var/www/vhosts/default}。此外,任何其他用户或组都不能写入这些目录。

最后,如果您selinux在强制模式下运行,请确保用户的主目录具有正确的上下文设置。最简单的方法是使用chcon工具(非持久性更改)或使用semanage(持久性更改)。

答案3

用户主目录应由 root 拥有

相关内容