在创建测试用户时,我 99% 确定用户路径将是其主目录,理论上无论如何连接时都看不到其他内容。
我错了,所以在尝试将用户的 SSH 限制到某个文件夹时,我阅读了一些指南和 SE 答案(例如这个)发现他们中的大多数人都指向类似的东西
Match User testuser
ChrootDirectory /home/testuser
ForceCommand internal-sftp
但是当我尝试 SSH 时,出现一条错误消息,提示“管道损坏”,但我无法解决。
知道我可以在哪里继续阅读和/或设置吗?
谢谢
答案1
您的问题可能是因为用户的主目录对于相关用户是可写的(测试用户)。 SSH 不允许 chroot 进入(用户)可写目录并终止连接。您的服务器日志中应该有一条日志消息。
sshd_config
手册页说的是ChrootDirectory
:
ChrootDirectory Specifies the pathname of a directory to chroot(2) to after authentication. At session startup sshd(8) checks that all components of the pathname are root-owned directories which are not writable by any other user or group. ...
您的选择取决于您的要求。您可以将主目录所有者更改为 root 并删除其他写入权限,并将(可写)子目录归用户所有。例如:
mkdir /home/testuser_tmp
mv /home/testuser /home/testuser_tmp/
mv /home/testuser_tmp /testuser_tmp
如果用户还具有 shell 访问权限,您可能应该更新主目录条目以/etc/passwd
指向可写子目录。