温馨提示×

centos sftp组权限如何配

小樊
42
2026-09-11 21:42:10
栏目: 智能运维

CentOS 上配置 SFTP 组权限,通常目标是:

  • 只允许某组用户通过 SFTP 访问
  • 限制在某目录下(不能跳到 /
  • 组内用户可上传/下载,禁止 SSH 登录

下面给你一套最常用、最安全的做法(基于 OpenSSH 内置 SFTP + Chroot)


一、创建 SFTP 用户和组

# 创建 sftp 组
groupadd sftp

# 创建用户(不允许登录 shell)
useradd -g sftp -s /sbin/nologin sftpuser

# 设置密码
passwd sftpuser

二、创建 SFTP 根目录(非常重要)

⚠️ Chroot 目录必须由 root 拥有,且其他用户不可写

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

给用户一个可写目录

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

目录结构示例:

/data/sftp          (root:root 755)
 └── sftpuser       (sftpuser:sftp 755)

三、配置 SSH(关键)

编辑:

vi /etc/ssh/sshd_config

1️⃣ 注释掉原来的 Subsystem

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

2️⃣ 添加 internal-sftp

Subsystem sftp internal-sftp

3️⃣ 配置 SFTP 组限制

在文件末尾添加:

Match Group sftp
    ChrootDirectory /data/sftp
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

✅ 这样:

  • 属于 sftp 组的用户
  • 只能 SFTP
  • 被限制到 /data/sftp
  • 不能 SSH

四、重启 SSH

systemctl restart sshd

五、测试 SFTP

sftp sftpuser@服务器IP

应看到:

sftp> pwd
Remote working directory: /sftpuser

六、常见权限场景

✅ 组内多个用户共享目录

mkdir /data/sftp/share
chown root:sftp /data/sftp/share
chmod 775 /data/sftp/share

✅ 用户只能看自己目录

  • 不加共享目录即可

✅ 禁止删除文件(进阶)

需要配合:

  • 只读挂载
  • 或 ACL / 文件系统属性

七、常见问题

❌ 登录失败:bad ownership or modes

原因:

  • Chroot 目录不是 root:root
  • Chroot 目录权限不是 755

❌ 能登录但无法上传

原因:

  • 上传目录不是该用户可写

八、适用系统

✅ CentOS 7 / 8 / Stream
✅ RHEL
✅ 使用 OpenSSH(默认)


如果你有 具体需求(比如:多用户共享、只读、审计、限制 IP),可以告诉我,我给你定制配置。

0