如何使用 chrooted sftp 在家庭用户中写入

如何使用 chrooted sftp 在家庭用户中写入

我在 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 并不是为安全性而设计的,而且有很多已知的方法可以绕过它。

相关内容