SFTP 默认文件夹 & 使用 chroot 限制访问

SFTP 默认文件夹 & 使用 chroot 限制访问

我想让给定用户在通过 SFTP 连接到我的 Ubuntu 18.04 计算机时默认进入特定文件夹。我还想稍微锁定一下 SFTP。这篇 Digital Ocean 文章给了我所需要的东西,并帮助我起步,但它并没有像我希望的那样发挥作用

我创建了一个名为 /var/sftp/my_username 的文件夹。然后我更新了 sshd_config 以包含以下设置:

Match User my_username
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/sftp/
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

我希望 my_username 能够进入 /var/sftp/my_username 并被困在那里。但事实是,用户进入了 /var/sftp 并且必须打开“my_username”才能移动到他们可以上传的目录。这是一个问题,因为 /var/sftp 最终会列出其他用户的其他 sftp 子文件夹(即 /var/sftp/your_username)。

我该怎么做才能让该用户默认为 /var/sftp/my_username?我已经尝试更改此位置的用户主目录,但没有成功。

谢谢!

答案1

我相信您需要将 sshd_config 中的条目“ChrootDirectory /var/sftp/”更改为“ChrootDirectory /var/sftp/my_username”之类的内容

答案2

谢谢 Olav。我在最初的故障排除中确实尝试过这个方法。但是没有用。我无法将 ChrootDirectory 设置为 Root 不拥有的任何目录。

我通过创建一个额外的文件夹层解决了这个问题:

ChrootDirectory /var/sftp/my_username/my_username

/var/sftp 文件夹有多个用户名,分别用于不同的用户。每个用户都被 Chroot 到其顶层 my_username 文件夹。他们无法写入 /var/sftp/my_username,但他们拥有 /var/sftp/my_username/my_username,并且可以打开该子文件夹并执行他们想执行的操作。

这赋予他们写入能力并对其他用户隐藏其他文件夹。

相关内容