温馨提示×

ubuntu sftp如何设权限

小樊
44
2026-10-11 04:51:41
栏目: 智能运维

在 Ubuntu 上配置 SFTP 权限,通常分为几种常见场景。下面按最常用、最安全的方式给你讲清楚。


一、最推荐:使用 SFTP 专用用户(禁止 SSH 登录)

1. 创建用户和用户组

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

2. 创建 SFTP 根目录(关键)

⚠️ SFTP 根目录必须属主是 root,且其他用户不可写

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

创建可写目录:

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

3. 配置 SSH(重点)

编辑:

sudo nano /etc/ssh/sshd_config

注释或确保不是全局 SFTP:

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

在文件末尾添加:

Subsystem sftp internal-sftp

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

4. 重启 SSH

sudo systemctl restart ssh

5. 测试

sftp sftpuser@服务器IP

✅ 只能访问 /sftp/sftpuser
✅ 无法 SSH 登录
✅ 只能上传到 upload


二、普通用户 SFTP(不限制目录)

如果只是想让用户用 SFTP 访问自己家目录:

sudo useradd -m sftpuser
sudo passwd sftpuser

默认就支持 SFTP(只要 SSH 开着)

查看:

grep sftp /etc/ssh/sshd_config

通常是:

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

✅ 简单
❌ 安全性较低


三、权限控制技巧

只读

chmod 555 /sftp/sftpuser/upload

只写不能看

chmod 733 /sftp/sftpuser/upload

多用户共享目录

sudo chown -R root:sftpusers /sftp/shared
sudo chmod 775 /sftp/shared

四、常见问题

❌ 登录报错:broken pipe

原因:

  • Chroot 目录不是 root 拥有
  • 目录可写

✅ 解决:

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

❌ 能登录但无法上传

✅ 上传目录必须:

  • 属主是用户
  • 权限 ≥ 700

五、总结(推荐方案)

场景 方案
安全对外 SFTP Chroot + nologin
内部用户 普通用户
只读/只写 chmod 控制

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

  • ✅ Ubuntu 版本
  • ✅ 是否公网
  • ✅ 几个用户
  • ✅ 是否要 Web 管理

我可以直接给你一份完整配置文件。

0 踩