我有一个网站,我想添加一些对子文件夹的受限访问权限。为此,我决定使用带有 SFTP 的 CHROOT(我主要遵循此链接:http://shapeshed.com/chroot_sftp_users_on_ubuntu_intrepid/)
目前,我已经创建了一个用户(sio2104)和一个组(magento)。按照指南操作后,我的文件夹列表如下所示:
-rw-r--r-- 1 root root 27 2012-02-01 14:23 index.html
-rw-r--r-- 1 root root 21 2012-02-01 14:24 info.php
drwx------ 15 root root 4096 2012-02-25 00:31 magento
如您所见,我已将我想限制用户的文件夹 magento 更改为 root:root,并……顺便说一下,还更改了其他所有内容。此外,在 magento 文件夹中,我还将所有内容更改为 sio2104:magento,以便他们可以访问所需的内容。最后,我将其添加到 sshd_config 文件中:
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Match Group magento
ChrootDirectory /usr/share/nginx/www/magento
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no
PasswordAuthentication yes
#UsePAM yes
结果是……好吧,我可以输入我的登录名、密码,但一切都以“管道破裂”错误结束。
$ sftp [email protected]
[....some debug....]
[email protected]'s password:
debug1: Authentication succeeded (password).
Authenticated to 10.20.0.50 ([10.20.0.50]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
Write failed: Broken pipe
Connection closed
详细模式没有任何帮助。有人知道我做错了什么吗?如果我尝试使用我的个人用户通过 ssh 或 sftp 登录,一切正常。
答案1
我有同样的问题。
chroot-dir 必须设置为所有者 root 和组 root。(chown root:root chroot-dir)
答案2
尝试将默认目录与 chroot 目录不同。
我已将 /home/ftpman 设置为我的默认目录。
vi /etc/passwd
..
ftpman:x:1001:1002::/home/ftpman:/bin/bash
和
ls -la /home
...
drwxr-xr-x 5 ftpman sftponly 4096 Jun 25 11:56 ftpman
然后我将 chroot 目录设置为 /。对我来说,它有效。
vi /etc/ssh/sshd_config
...
Match Group sftponly
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /
ForceCommand internal-sftp
答案3
我对此不是 100% 确定,但据我了解,chroot 过程,SSHd 将首先以您的用户身份分叉,然后尝试 chroot。这显然会失败,因为无法sio2104
在系统上访问目录。
尝试放宽magento
文件夹的文件系统权限(chmod o+rx
)。