我在 chroot sftp 及其主文件夹方面遇到问题。我想在用户的家中写信,但我没有适当的权限这样做。
sshd_配置
Match User demo
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
用户
demo:x:1013:1014::/home/ftp/demo2:/bin/false
目录
root@xxx:/# ls -l /home/ftp/
drwxr-xr-x 2 root root 4096 Nov 3 13:35 demo2
错误信息
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
Write failed: Broken pipe
我知道我可以写入 /home/ftp/demo2 下的文件夹,但我需要写入/home/ftp/demo2不在内部文件夹中,这是强制性的。
我尝试过改变演示2权限和用户/组,但无法写入。
还有..还有其他问题。我有 3 个用户的家位于 /home/ftp 下,但另一方面,我有一些用户的家位于不同的路径中,所以我无法使用Chroot目录/home/ftp/%u,我需要使用 %h
有什么办法可以做到这一点吗?
多谢!
答案1
您可以为每个用户设置不同的 chroot 位置,如下所示:
Match User a
Configuration for user a
Match User b
Configuration for user b
出于安全原因,OpenSSH 的 SFTP 子系统拒绝 chroot 到任何不属于 root 的目录,因此除非您是 root,否则您无法在 chroot 目录下创建新文件。通过将您的用户 ID 更改为 0,您实际上成为了 root,这是一个极其坏的主意。通过成为 root,您的用户不仅可以逃脱 chroot 监狱,还可以获得在您的系统上执行任何操作的权限,这违反了最小权限原则。我强烈建议您将您的用户 ID 更改回正常状态。
如果您选择使用 chrooted SFTP 来获得更好的安全性,我也怀疑它是否是一个有效的选择,因为 chroot 并不是为安全性而设计的,而且有很多已知的方法可以绕过它。