当特定用户使用 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
,由其所属组拥有root
并sftpgrp
具有 750 (u=rwx,g=rx,o=) 权限 - 修改了我的用户帐户,将家庭位置更改为
/sftproot/<user>
...然后,瞧!它成功了。
现在我需要做的就是解决是否可以让这些帐户访问位于其 chroot 主目录之外的文件的问题,如果您有一个开放的 SFTP 解决方案,然后需要锁定某些用户,就会发生这种情况,但这是另一篇文章的主题。
我希望这有帮助。
编辑并发出警告
我在测试时发现这个方法不起作用,所以我们不得不放弃这个方法,请参阅我的 SE 帖子这里。
它可能可以在其他版本的操作系统或 openssh 上运行,但不能在我的版本上运行,我的版本是 AIX 6.1.0.0 和 openssh.base 版本 5.8.0.6101。