我正在尝试将“测试”用户(组 sftp)chroot 到 /home/test。我在 sshd_config 末尾添加了以下几行:
Subsystem sftp internal-sftp
Match User test
ChrootDirectory /home/test
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
home
和test
目录具有 755 权限,且归 root 所有。我也尝试过ChrootDirectory /home
。
root@Debian:/# namei -l /home/test
f: /home/test
drwxrwxrwx root root /
drwxr-xr-x root root home
drwxr-xr-x root root test
我无法通过 SFTP 或 SSH 连接到服务器(无论是否包含Subsystem sftp internal-sftp
)ForceCommand internal-sftp
。我一登录就收到以下消息:
Write failed: Broken pipe
...以下内容附加到 auth.log:
May 12 13:48:29 Reach sshd[25503]: Accepted password for test from 192.168.0.10 port 51058 ssh2
May 12 13:48:29 Reach sshd[25503]: pam_unix(sshd:session): session opened for user test by (uid=0)
May 12 13:48:29 Reach sshd[25505]: fatal: bad ownership or modes for chroot directory component "/"
May 12 13:48:29 Reach sshd[25503]: pam_unix(sshd:session): session closed for user test
显然,问题在于它试图将根目录切换到“/”,而它应该是“/home/test”。我遗漏了什么?我已将 sshd_config 的其余部分保留为默认值,并且没有其他 ChrootDirectory 指令...
谢谢。
答案1
您的权限/
太开放了。
我不知道您是怎么得到这个权限的。
应该是0755
。
所以您需要更改它。
其余部分看上去还不错。