温馨提示×

debian sftp权限如何配

小樊
45
2026-09-27 19:14:22
栏目: 智能运维

在 Debian 上配置 SFTP 权限,通常分为几种场景:


一、最常用:限制用户只能 SFTP,不能 SSH 登录(Chroot 监狱)

1. 创建用户和组

sudo groupadd sftpusers
sudo useradd -m -g sftpusers -s /usr/sbin/nologin sftpuser
sudo passwd sftpuser

2. 设置目录权限(非常关键)

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

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

3. 创建可写目录

sudo mkdir /srv/sftp/sftpuser/upload
sudo chown sftpuser:sftpusers /srv/sftp/sftpuser/upload

4. 修改 SSH 配置

编辑:

sudo nano /etc/ssh/sshd_config

注释掉或确保:

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

添加:

Subsystem sftp internal-sftp

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

5. 重启 SSH

sudo systemctl restart ssh

二、普通用户 SFTP(和 SSH 相同权限)

如果用户有 shell:

useradd -m username

直接:

sftp username@server

默认家目录 /home/username


三、按目录细分权限(ACL)

sudo apt install acl
setfacl -R -m u:sftpuser:rwx /data/share

四、常见问题排查

1. 登录失败

查看日志:

sudo journalctl -u ssh

2. 写不了文件

  • Chroot 目录不能是用户拥有
  • 只能在子目录写

3. 端口不是 22

sftp -P 2222 user@host

五、推荐结构示例

/srv/sftp/
 └── user1/
     ├── upload/   (可写)
     └── download/ (只读)

如果你有 具体需求(如多个用户共享目录、只读、Web 服务器联动),可以告诉我,我给你定制配置。

0 踩