温馨提示×

CentOS SFTP如何设权限

小樊
34
2026-07-20 10:29:10
栏目: 智能运维

下面分几种常见场景,说明在 CentOS 上如何设置 SFTP 权限。内容适用于 CentOS 7 / 8 / Stream,默认使用 OpenSSH


一、最常用:SFTP 用户只能访问自己的目录(不能 SSH 登录)

这是最推荐、最安全的做法。

1️⃣ 创建 SFTP 用户

useradd -m -s /sbin/nologin sftpuser
passwd sftpuser

-s /sbin/nologin:禁止 SSH 登录,只能 SFTP


2️⃣ 创建 SFTP 根目录(关键)

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

注意

  • ChrootDirectory 的上级目录必须属于 root
  • 不能有组写权限

3️⃣ 创建用户可写目录

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

4️⃣ 配置 SSH(非常重要)

编辑:

vim /etc/ssh/sshd_config

在文件末尾添加:

Subsystem sftp internal-sftp

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

5️⃣ 重启 SSH 服务

systemctl restart sshd

6️⃣ 登录测试

sftp sftpuser@服务器IP

✅ 登录后只能在 /upload 写文件
✅ 不能访问系统其他目录
✅ 不能 SSH 登录


二、多个 SFTP 用户共用一个目录

创建用户

useradd -m -s /sbin/nologin sftp1
useradd -m -s /sbin/nologin sftp2

创建共享目录

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

创建可写目录

mkdir /data/sftp/shared/data
chown sftp1:sftp1 /data/sftp/shared/data
chmod 770 /data/sftp/shared/data

加入同一组(可选)

groupadd sftpgroup
usermod -aG sftpgroup sftp1
usermod -aG sftpgroup sftp2
chown :sftpgroup /data/sftp/shared/data

三、只允许上传,不允许删除(常见需求)

方法:使用 ACL

setfacl -m u:sftpuser:rwx /data/sftp/sftpuser/upload
setfacl -d -m u:sftpuser:rwx /data/sftp/sftpuser/upload

⚠️ 但 SFTP 协议本身不支持“禁止删除”
如需严格限制,推荐:

  • 使用 vsftpd
  • 或使用 审计 + 应用层控制

四、SELinux 注意事项(CentOS 常见坑)

查看状态:

getenforce

如果是 Enforcing,需设置:

semanage fcontext -a -t ssh_home_t "/data/sftp(/.*)?"
restorecon -Rv /data/sftp

或临时关闭测试:

setenforce 0

五、常见错误总结

问题 原因
登录失败 ChrootDirectory 不是 root 拥有
无法上传 用户没有写权限
能 SSH 登录 没设置 /sbin/nologin
连接被拒 sshd_config 写错

六、推荐安全配置总结 ✅

  • ✅ 使用 internal-sftp
  • ✅ ChrootDirectory 属主 root
  • ✅ 禁止 SSH 登录
  • ✅ 最小权限原则
  • ✅ 开启 SELinux

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

  • ✅ CentOS 版本
  • ✅ 是否多个用户
  • ✅ 是否需要只读 / 只写 / 审计

我可以给你一份完全可直接用的配置

0