我正在尝试在 Ubuntu 12.04 上设置 OpenSSH,以允许执行以下操作
- 用户只能使用 SFTP(无 shell 访问权限)
- 用户可以写入(上传)文件
- 访问是安全的,因此任何用户都无法查看其他用户的文件,也不会危及服务器
为此,我尝试设置 Chroot,如下所示
https://help.ubuntu.com/community/SSH/OpenSSH/Configuring
http://www.serverubuntu.it/SFTP-chroot
不幸的是,我似乎遇到了瓶颈,总结如下:
这是 ChrootDirectory 所有权问题,sshd 将拒绝对设置为 chroot 的帐户的 sftp 连接,进入任何具有 sshd 认为不安全的所有权/权限的目录。sshd 的所有权/权限要求显然很严格,规定 chroot 路径中的每个目录都必须由 root 拥有,并且只能由所有者写入。因此,例如,如果 chroot 环境位于用户的主目录中,则 /home 和 /home/username 都必须由 root 拥有,并且具有 755 或 750 左右的权限(组所有权应允许用户访问)。
https://wiki.archlinux.org/index.php/SFTP-chroot
“必须由 root 拥有,并且只能由所有者写入”似乎翻译为“只能由根“
这似乎限制了chroot对于只需要下载文件的用户。
我尝试
- 将主目录组所有权更改为sftp 用户(我创建的一个群组,该用户是该群组的成员)
- 将文件权限从 755 更改为 775,以允许组写入
当我这样做时,我无法再使用 SFTP 登录。
更改所有权和权限即可恢复登录能力。
问题
如何以安全的方式设置 SFTP,以便用户可以将文件上传到自己的主目录?
答案1
我刚提出这个问题,就找到了解决方案。
创建目录在下面chroot 目录,例如
/home/myuser/transfer
该目录可由用户写入。