温馨提示×

linux sftp权限错误怎办

小樊
63
2026-10-10 21:59:33
栏目: 智能运维

在 Linux 中使用 SFTP 时遇到“权限错误(Permission denied)”,通常和目录权限、用户权限、SSH/SFTP 配置有关。下面按常见原因和对应解决办法说明。


一、最常见原因与解决办法

1. 目标目录没有写权限

现象

Permission denied

或上传/下载失败。

检查

ls -ld /path/to/sftp/dir

解决

chown sftpuser:sftpuser /path/to/sftp/dir
chmod 755 /path/to/sftp/dir

⚠️ 注意:

  • SFTP 根目录不能是 777
  • 上级目录通常也需有执行权限(至少 711)

2. 用户被限制到 Chroot 目录(常见)

如果你在 /etc/ssh/sshd_config 中配置了:

Match User sftpuser
    ChrootDirectory /sftp
    ForceCommand internal-sftp

那么:

  • /sftp 必须属主为 root
  • 权限一般为 755
  • 用户不能拥有该目录的写权限

正确示例

chown root:root /sftp
chmod 755 /sftp
mkdir /sftp/upload
chown sftpuser:sftpuser /sftp/upload

3. SELinux 导致权限拒绝(CentOS / RHEL)

检查

getenforce

解决

setsebool -P ssh_chroot_rw_homedirs on
restorecon -Rv /sftp

或临时测试:

setenforce 0

4. 磁盘空间或 inode 满

检查

df -h
df -i

5. SFTP 用户是 /sbin/nologin 或 /bin/false

这是正常的,不影响 SFTP,但:

  • 不能 SSH 登录
  • 只能 SFTP

检查:

grep sftpuser /etc/passwd

6. 家目录权限问题

如果用户使用家目录:

chmod 700 /home/sftpuser
chown sftpuser:sftpuser /home/sftpuser

二、快速排查顺序(推荐)

  1. 看服务端日志
tail -f /var/log/secure
# 或
journalctl -u sshd -f
  1. 确认目录属主和权限
  2. 确认 Chroot 配置
  3. 确认 SELinux
  4. 确认磁盘空间

三、典型正确配置示例(Chroot SFTP)

创建用户

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

sshd_config

Match User sftpuser
    ChrootDirectory /sftp/sftpuser
    ForceCommand internal-sftp
    AllowTcpForwarding no

重启 SSH:

systemctl restart sshd

如果你愿意,可以把:

  • 报错信息原文
  • sshd_config 相关配置
  • 目录权限 ls -ld

发出来,我可以帮你精确定位是哪一条导致的权限错误。

0 踩