Linux环境下限制SFTP用户到指定目录并开放访问后连接异常解决
解决SFTP受限用户连接失败(目录权限配置问题)
问题场景
在Linux环境中配置了仅能访问特定目录的SFTP受限用户,之后为了让其他用户拥有该目录的完全访问权限,执行了命令sudo chmod 757 /home/username,结果SFTP连接失败,报错信息如下:
iliamous@iti-628:~$ sftp sftp_user@xxx.xx.xx.xxx sftp_user@xxx.xx.xx.xxx's password: client_loop: send disconnect: Broken pipe Connection closed. Connection closed
原因分析
SFTP的Chroot Jail(目录限制)机制有严格权限要求:Chroot目标目录必须由root用户拥有,且权限不能高于755(即其他用户不能拥有写权限)。你设置的757权限给了其他用户写权限,违反了该规则,导致Chroot环境初始化失败,连接直接断开。
解决方案
1. 恢复Chroot目录的合规权限
先把受限目录的权限改回符合SFTP要求的配置:
sudo chmod 755 /home/username sudo chown root:root /home/username
2. 创建子目录实现权限分离
在该目录下新建一个子目录,专门用于SFTP用户读写,同时开放其他用户的完全访问权限:
sudo mkdir /home/username/upload sudo chown sftp_user:sftp_user /home/username/upload sudo chmod 777 /home/username/upload
这样配置后:
- SFTP用户被限制在
/home/username下,只能对upload目录进行读写操作 - 其他用户对
/home/username有读、执行权限,对upload目录拥有完全的读、写、执行权限
3. 重启SSHD服务使配置生效
sudo systemctl restart sshd
验证操作
- 使用SFTP用户连接:能正常登录,且只能看到
upload目录,可正常读写该目录内容 - 使用其他系统用户访问:可直接进入
/home/username,并对upload目录进行任意操作
内容的提问来源于stack exchange,提问作者CoolMathematician
相关产品推荐
相关产品推荐

