温馨提示×

linux sftp权限如何设

小樊
45
2026-10-22 13:55:44
栏目: 智能运维

在 Linux 中,SFTP 权限通常不是靠一个“开关”设置的,而是由 文件系统权限 + SSH/SFTP 服务配置 共同决定的。下面按常见场景给你讲清楚。


一、最基础:Linux 文件权限决定 SFTP 能做什么

SFTP 本质上还是用系统用户访问文件,所以:

ls -l /data

权限含义:

  • r 读
  • w 写
  • x 进入目录

常见规则

  • 目录:
    • r:能列出文件
    • w:能新建/删除文件
    • x:能进入目录
  • 文件:
    • r:能下载
    • w:能上传/覆盖

示例:

chown -R user:user /data/sftp
chmod 755 /data/sftp

二、限制用户只能 SFTP,不能 SSH(最常用)

1️⃣ 创建用户

useradd -m sftpuser
passwd sftpuser

2️⃣ 修改 SSH 配置

编辑:

/etc/ssh/sshd_config

添加:

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

3️⃣ Chroot 目录权限要求(非常重要)

Chroot 目录 必须:

  • 属主是 root
  • 其他用户不可写
chown root:root /data/sftp
chmod 755 /data/sftp

用户上传目录:

mkdir /data/sftp/upload
chown sftpuser:sftpuser /data/sftp/upload

重启 SSH:

systemctl restart sshd

三、限制用户只能访问自己的目录(多用户)

Match Group sftp
    ChrootDirectory /data/sftp/%u
    ForceCommand internal-sftp

创建用户:

useradd -g sftp user1
mkdir -p /data/sftp/user1
chown root:root /data/sftp/user1
chmod 755 /data/sftp/user1

四、只读 / 只写权限示例

只读

chmod 555 /data/sftp
chown root:root /data/sftp

只写(不能看)

chmod 733 /data/sftp/upload
chown sftpuser:sftpuser /data/sftp/upload

五、常见问题

❌ 登录失败:broken pipe

原因:Chroot 目录权限不对(不是 root 属主)

❌ 能登录但无法上传

原因:上传目录不是该用户可写

❌ 还能 SSH 登录

原因:没加 ForceCommand internal-sftp


六、总结一句话

SFTP 权限 = Linux 文件权限 + sshd_config 限制 + Chroot 目录规则

如果你愿意,可以告诉我:

  • 单用户还是多用户?
  • 只读 / 只写 / 读写?
  • 是否要禁止 SSH?

我可以直接帮你写一份完整配置。

0 踩