在 Linux 中使用 SFTP 时遇到“权限错误(Permission denied)”,通常和目录权限、用户权限、SSH/SFTP 配置有关。下面按常见原因和对应解决办法说明。
现象
Permission denied
或上传/下载失败。
检查
ls -ld /path/to/sftp/dir
解决
chown sftpuser:sftpuser /path/to/sftp/dir
chmod 755 /path/to/sftp/dir
⚠️ 注意:
如果你在 /etc/ssh/sshd_config 中配置了:
Match User sftpuser
ChrootDirectory /sftp
ForceCommand internal-sftp
那么:
/sftp 必须属主为 root755正确示例
chown root:root /sftp
chmod 755 /sftp
mkdir /sftp/upload
chown sftpuser:sftpuser /sftp/upload
检查
getenforce
解决
setsebool -P ssh_chroot_rw_homedirs on
restorecon -Rv /sftp
或临时测试:
setenforce 0
检查
df -h
df -i
这是正常的,不影响 SFTP,但:
检查:
grep sftpuser /etc/passwd
如果用户使用家目录:
chmod 700 /home/sftpuser
chown sftpuser:sftpuser /home/sftpuser
tail -f /var/log/secure
# 或
journalctl -u sshd -f
useradd -m -s /sbin/nologin sftpuser
passwd sftpuser
mkdir -p /sftp/sftpuser/upload
chown root:root /sftp/sftpuser
chmod 755 /sftp/sftpuser
chown sftpuser:sftpuser /sftp/sftpuser/upload
Match User sftpuser
ChrootDirectory /sftp/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
重启 SSH:
systemctl restart sshd
如果你愿意,可以把:
sshd_config 相关配置ls -ld发出来,我可以帮你精确定位是哪一条导致的权限错误。