温馨提示×

centos sftp权限如何设

小樊
37
2026-10-08 21:14:53
栏目: 智能运维

在 CentOS 上配置 SFTP 权限,通常推荐使用 OpenSSH 自带的 SFTP + Chroot(限制目录) 方式,而不是用 FTP 服务。下面从常见场景给你讲清楚。


一、最常用:限制用户只能 SFTP,不能 SSH 登录

1️⃣ 创建用户和目录

useradd sftpuser
passwd sftpuser

2️⃣ 创建 SFTP 根目录(必须 root 拥有)

mkdir -p /data/sftp/sftpuser
chown root:root /data/sftp/sftpuser
chmod 755 /data/sftp/sftpuser

3️⃣ 创建可写目录

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

二、配置 SSH(关键)

编辑:

vi /etc/ssh/sshd_config

注释掉原来的(如果有)

# Subsystem sftp /usr/libexec/openssh/sftp-server

改成

Subsystem sftp internal-sftp

在文件末尾添加

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

如果是多个用户:

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

并创建组:

groupadd sftp
usermod -G sftp sftpuser

三、重启 SSH

systemctl restart sshd

四、测试 SFTP

sftp sftpuser@服务器IP

✅ 成功
❌ 如果报错:broken pipe / chroot failed
→ 99% 是 Chroot 目录不是 root:root 或权限不对


五、权限规则总结(非常重要)

目录 所有者 权限
Chroot 根目录 root:root 755
上传目录 用户:用户 755/775
用户主目录 ❌不能是用户 必须是 root

六、常见问题

Q1:用户能登录但没法上传?

→ 只能在 upload 目录写,不能在根目录写

Q2:怎么禁止下载?

→ SFTP 无法单独禁下载,只能限制目录权限

Q3:能用密钥登录吗?

可以:

mkdir /home/sftpuser/.ssh
cp id_rsa.pub /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpuser /home/sftpuser/.ssh

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

  • CentOS 版本(7 / 8 / Stream)
  • 是 单用户 / 多用户
  • 是否需要 只读 / 只写 / 多目录

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

0 踩