使用 SFTP Jails 限制访问

使用 SFTP Jails 限制访问

当特定用户使用 sftp 连接时,我想限制他只能访问一个目录(及其 dub 目录)。

我在 apache 组中创建了用户:

useradd m3dian -g www-data

在 sshd_config 中:

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Match User m3dian
    ChrootDirectory /home/www/htdocs/m3dian/html
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp

我重新启动了 ssh......

但是当我尝试连接 fileZilla 时出现以下错误:Connection reset by peer

在 ssh 日志中:

fatal: bad ownership or modes for chroot directory component /home/www

# ls /home -l
drwxr-xr-x  6 www-data www-data  4096 mai   18  2016 www

/home/www 是 Apache 目录。

是否可以配置权限以将 www-data 保留为 /home/www (及其子目录)的所有者,并允许 m3dian Chroot 到 /home/www/htdocs/m3dian/html ?

谢谢

答案1

这可能为时已晚,您要么找到了解决方案,要么从另一个方向解决问题,但它可能会对您或其他人有所帮助。

我一直在设置 chroot SFTP 环境,我发现了这个链接:配置 sftp chroot 环境 它基于 AIX 系统,但我认为“创建一个目录来保存所有 chrooted 用户。此目录必须由 root 拥有并具有 700 权限。这是 sftp-server 对 chrooted 用户的要求,即使只有一个用户。“可能与 sftp-server 的所有实现相关。

/home我创建了具有权限的用户帐户bin:bin,但我遇到了与您描述的相同问题。
按照链接的说明,我:

  • 创建了一个/sftproot目录,该目录由该组所有root且属于该system组,具有 755 (u=rwx,go=rx) 权限
  • 创建了一个名为sftpgrp
  • 为每个用户创建子目录/sftproot,由其所属组拥有rootsftpgrp具有 750 (u=rwx,g=rx,o=) 权限
  • 修改了我的用户帐户,将家庭位置更改为/sftproot/<user>

...然后,瞧!它成功了。

现在我需要做的就是解决是否可以让这些帐户访问位于其 chroot 主目录之外的文件的问题,如果您有一个开放的 SFTP 解决方案,然后需要锁定某些用户,就会发生这种情况,但这是另一篇文章的主题。

我希望这有帮助。


编辑并发出警告

我在测试时发现这个方法不起作用,所以我们不得不放弃这个方法,请参阅我的 SE 帖子这里
它可能可以在其他版本的操作系统或 openssh 上运行,但不能在我的版本上运行,我的版本是 AIX 6.1.0.0 和 openssh.base 版本 5.8.0.6101。

相关内容