温馨提示×

centos sftp权限怎么配

小樊
34
2026-09-24 06:22:13
栏目: 智能运维

在 CentOS 上配置 SFTP 权限,常见需求是:

  • 用户只能通过 SFTP 登录
  • 不能 SSH 登录
  • 只能访问自己的目录(不能越权)

下面给你一套 最常用、最安全的做法(Chroot + 内部 SFTP)。


一、创建 SFTP 用户和目录

# 创建用户
useradd -m sftpuser

# 设置密码
passwd sftpuser

创建 SFTP 根目录(必须是 root 拥有):

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

用户实际可写目录:

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

二、修改 SSH 配置(关键)

编辑配置文件:

vi /etc/ssh/sshd_config

1️⃣ 注释掉这一行(如果存在)

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

2️⃣ 添加内部 SFTP

Subsystem sftp internal-sftp

3️⃣ 添加用户限制

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

三、重启 SSH 服务

systemctl restart sshd

四、测试 SFTP

sftp sftpuser@服务器IP

✅ 成功登录
❌ 不能用 ssh sftpuser@IP(会被拒绝)


五、常见问题

1️⃣ 登录报错:broken pipe / chroot failed

原因:

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

✅ 正确示例:

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

2️⃣ 多个用户怎么办?

Match Group sftpusers
    ChrootDirectory /sftp/%u
    ForceCommand internal-sftp
groupadd sftpusers
usermod -G sftpusers sftpuser

3️⃣ 只读 / 只写权限

  • 只读:不给用户写目录权限
  • 只写:目录 700,属主为用户

六、安全建议

✅ 禁用 root 登录
✅ 使用密钥 + 密码
✅ 防火墙限制 IP
✅ 定期审计 /var/log/secure


如果你有具体需求(比如:多个用户共享目录 / 只读发布 / 只允许某 IP),可以告诉我,我可以直接给你配置示例。

0 踩