温馨提示×

debian sftp权限怎么配

小樊
37
2026-10-12 10:26:25
栏目: 智能运维

在 Debian 上配置 SFTP 权限,通常目标有几种常见场景:

  1. 允许用户 SFTP 但禁止 SSH 登录
  2. 限制用户只能访问自己的目录(chroot)
  3. 多用户/组共享目录权限控制

下面按最常用、最安全的方式给你一套标准做法(基于 OpenSSH 内置 SFTP)。


一、基础:创建 SFTP 用户

sudo adduser sftpuser

(如果只做 SFTP,不建议设密码也可以,但一般还是设)


二、禁止 SSH 登录,只允许 SFTP

编辑 SSH 配置:

sudo nano /etc/ssh/sshd_config

确保有以下内容(或修改):

Subsystem sftp internal-sftp

在文件末尾添加:

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

重启 SSH:

sudo systemctl restart ssh

此时:

  • ✅ 可以 SFTP
  • ❌ 不能 SSH 登录

三、配置 chroot 目录权限(很重要)

Chroot 目录权限要求非常严格:

sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser

⚠️ 注意:

  • Chroot 目录 必须属于 root
  • 用户不能写这个目录

四、给用户一个可写目录

sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpuser /home/sftpuser/upload
sudo chmod 755 /home/sftpuser/upload

用户登录后:

  • / = /home/sftpuser
  • 可写目录:/upload

五、多用户共享 SFTP(推荐用组)

sudo groupadd sftpusers

sudo useradd -g sftpusers -s /usr/sbin/nologin user1
sudo useradd -g sftpusers -s /usr/sbin/nologin user2

sshd_config:

Match Group sftpusers
    ChrootDirectory /srv/sftp
    ForceCommand internal-sftp

目录权限:

sudo mkdir -p /srv/sftp
sudo chown root:sftpusers /srv/sftp
sudo chmod 755 /srv/sftp

共享目录:

sudo mkdir /srv/sftp/shared
sudo chown :sftpusers /srv/sftp/shared
sudo chmod 775 /srv/sftp/shared

六、常见问题排查

1. 登录失败:broken pipe

一般是 Chroot 目录不是 root 拥有

ls -ld /home/sftpuser

2. 能连但不能写

  • 写目录不是该用户拥有
  • 父目录权限不对

3. 查看日志

sudo journalctl -u ssh
# 或
sudo tail -f /var/log/auth.log

七、总结(最小可用配置)

Subsystem sftp internal-sftp

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
chown root:root /home/sftpuser
chmod 755 /home/sftpuser
mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload

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

  • 是 单用户 / 多用户
  • 是否要 读写分离
  • 是否要 公网服务器

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

0 踩