温馨提示×

Ubuntu SFTP 权限怎么设

小樊
44
2026-09-11 06:16:43
栏目: 智能运维

在 Ubuntu 上配置 SFTP 权限,通常是为了让用户只能 SFTP 登录、不能 SSH 登录,并且限制在特定目录内。下面按常见场景一步步说明。


一、最常用方案:Chroot + 仅 SFTP(推荐)

1. 创建用户和组

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

2. 创建 SFTP 根目录

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

⚠️ Chroot 目录必须归 root 所有


3. 创建可写目录

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

4. 修改 SSH 配置

编辑:

sudo nano /etc/ssh/sshd_config

在文件末尾添加:

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

5. 重启 SSH

sudo systemctl restart ssh

6. 测试

sftp sftpuser@服务器IP

二、目录权限核心规则(非常关键)

✅ Chroot 目录(/sftp/user):

  • 属主:root
  • 权限:755 或更严格

✅ 用户可写目录:

  • 属主:对应用户
  • 权限:755 / 775

❌ 错误示例(会导致登录失败):

chown sftpuser /sftp/sftpuser

三、多用户共享目录(可选)

sudo mkdir /sftp/shared
sudo chown root:root /sftp/shared
sudo chmod 755 /sftp/shared

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

四、常见问题排查

1. 登录提示 broken pipe

通常是:

  • Chroot 目录权限错误
  • 目录不是 root 拥有

查看日志:

sudo tail -f /var/log/auth.log

2. 想允许 SSH 但限制目录?

不推荐,安全性差。建议:

  • SFTP 单独用户
  • SSH 用 key + sudo 控制

五、进阶(可选)

  • 使用 OpenSSH 8+ 支持更细粒度
  • 使用 ACLsetfacl)做复杂权限
  • 使用 vsftpd 代替 SFTP(不推荐)

如果你能告诉我:

  • 单用户 / 多用户
  • 是否需要 写权限
  • 是否 禁止 SSH

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

0