ChrootDirectory 设定不当,会导致sftp链接时直接抛出 Connection reset 错误。
ChrootDirectory 指定的目录以及其所有父目录,拥有者都必须是root。其所有权限都要小于等于755。任意一个大于755都会导致Connection reset问题。
额外多余提醒:下面的/开头的字符串只是说明目录权限而已,并不是让你在sshd_config里面加上它。
举例:
sftp的目标用户名为 u1
1: 有问题的做法
ChrootDirectory /mnt/asd
/mnt 为 root:root 755
/mnt/asd 为 root:root 755
此时可以正常链接
但是u1不能在/mnt/asd文件夹里创建或删除任何文件
2: 失败做法
ChrootDirectory /mnt/asd
/mnt 为 root:root 755
/mnt/asd 为 root:root 777
此时可以抛出错误 Connection reset
因为 asd 权限高于 755
3: 失败做法
ChrootDirectory /mnt/asd
/mnt 为 root:root 755
/mnt/asd 为 u1:u1 755
此时可以抛出错误 Connection reset
因为 asd 拥有者不是root
4: 失败做法
ChrootDirectory /mnt/asd
/mnt 为 u1:u1 755
/mnt/asd 为 root:root 755
此时可以抛出错误 Connection reset
因为 mnt 拥有者不是root
5: 一个正确做法
创建一个文件夹 /mnt/asd/ddd
ChrootDirectory /mnt/asd
/mnt 为 root:root 755
/mnt/asd 为 root:root 755
/mnt/asd/ddd 为 u1:u1 755
此时可以正常链接,并且可以在ddd目录内增加或删除文件,但无法删除ddd目录