温馨提示×

centos sftp 权限如何设置

小樊
41
2026-09-02 22:40:24
栏目: 智能运维

在 CentOS 上配置 SFTP 权限,常见做法是使用 OpenSSH 自带的 SFTP(内部 SFTP) 并配合 chroot 限制目录,这样既安全又不需要额外安装 FTP 服务。

下面按最常见场景给你一套完整、可用的配置方案。


一、基础环境说明

  • 系统:CentOS 7 / 8 / Stream
  • 服务:OpenSSH(sshd
  • 目标:
    • 用户只能通过 SFTP 登录
    • 不能 SSH 登录
    • 被限制在自己目录下
    • 只能访问指定目录

二、创建 SFTP 用户和目录

1. 创建用户(禁止 SSH 登录)

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

2. 创建 SFTP 根目录(chroot 目录)

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

⚠️ chroot 目录必须属于 root,且其他用户不可写

3. 创建实际可写目录

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

三、配置 SSH(关键)

编辑 SSH 配置文件:

vi /etc/ssh/sshd_config

1. 注释或确认以下行

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

2. 添加内部 SFTP

Subsystem sftp internal-sftp

3. 添加 SFTP 用户限制

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

如果你有多个用户,可以用:

Match Group sftp

四、SELinux 设置(CentOS 必看)

CentOS 默认开启 SELinux,否则 SFTP 会失败。

setsebool -P ssh_chroot_rw_homedirs on

如仍报错,可临时测试:

setenforce 0

五、重启 SSH 服务

systemctl restart sshd

六、测试 SFTP

sftp sftpuser@服务器IP

登录后:

cd upload
put test.txt

七、常见权限问题排查

1. 登录直接断开

原因:

  • chroot 目录不是 root 拥有
  • 目录权限不是 755

✅ 正确:

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

2. 无法上传文件

原因:

  • 上传目录不属于 sftp 用户

✅ 正确:

chown sftpuser:sftpuser /sftp/sftpuser/upload

3. 日志查看

journalctl -u sshd
# 或
tail -f /var/log/secure

八、进阶(可选)

  • 多用户统一权限 → 用 Match Group sftp
  • 只读用户 → 不给用户写目录
  • 多目录挂载 → mount --bind
  • 审计操作 → auditd

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

  • CentOS 具体版本
  • 是否要 多个用户
  • 是否要 只读 / 只写 / 读写

我可以给你定制配置示例

0