温馨提示×

怎样设置debian sftp权限

小樊
46
2026-09-24 22:10:33
栏目: 智能运维

在 Debian 上设置 SFTP 权限,通常目标是:限制用户只能通过 SFTP 访问指定目录,不能 SSH 登录,且不能越权访问其他目录。下面按常见场景一步步说明。


一、创建 SFTP 专用用户和组

sudo groupadd sftpusers
sudo useradd -m -g sftpusers -s /usr/sbin/nologin sftpuser
sudo passwd sftpuser
  • /usr/sbin/nologin:禁止 SSH 登录
  • sftpusers:用于统一管理的 SFTP 用户组

二、创建 SFTP 根目录(Chroot 目录)

⚠️ 重要规则:
Chroot 目录及其所有上级目录 必须属于 root,且其他用户不可写

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

为用户创建可写目录:

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

三、配置 SSH(关键)

编辑 SSH 配置:

sudo nano /etc/ssh/sshd_config

1. 注释或确认以下行

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

2. 添加内部 SFTP

Subsystem sftp internal-sftp

3. 添加 SFTP 用户限制

Match Group sftpusers
    ChrootDirectory /sftp/%u
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

%u 表示用户名,目录需与用户名一致


四、重启 SSH 服务

sudo systemctl restart ssh

五、测试 SFTP

sftp sftpuser@localhost

应只能看到:

/sftp/sftpuser

并且:

  • ✅ 可上传到 upload
  • ❌ 不能访问 /home、/etc 等
  • ❌ 不能 SSH 登录

六、常见问题排查

1. 登录失败:broken pipe

原因:Chroot 目录权限不对
✅ 解决:

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

2. 想多个用户共用一个目录?

ChrootDirectory /sftp/shared

并确保 /sftp/shared 属主为 root


七、进阶(可选)

  • ✅ 使用 密钥登录
  • ✅ 配合 fail2ban 防爆破
  • ✅ 使用 ACL 精细控制权限
  • ✅ 结合 rsync + sftp

如果你有具体需求(例如:只读、多用户隔离、Web 服务器目录映射),可以告诉我,我可以给你更精确的配置。

0 踩