我需要一些帮助。
我试图将 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/false
为default: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 拥有