温馨提示×

ubuntu sftp权限怎么设

小樊
46
2026-09-05 09:28:02
栏目: 智能运维

在 Ubuntu 上配置 SFTP 权限,通常是为了让用户 只能通过 SFTP 访问指定目录,不能 SSH 登录。下面按常见场景一步步说明。


一、最常用方案(推荐):限制用户只能 SFTP,不能 SSH

1. 创建用户

sudo adduser sftpuser

(按提示设置密码)

2. 创建 SFTP 根目录

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

⚠️ 注意:
SFTP 根目录必须属于 root,且其他用户不能写

3. 创建可写目录

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

4. 修改 SSH 配置

编辑:

sudo nano /etc/ssh/sshd_config

在文件末尾添加:

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

5. 重启 SSH

sudo systemctl restart ssh

✅ 此时:

  • 用户可 SFTP 登录
  • 只能看到 /sftp/sftpuser
  • 不能 SSH 登录
  • 只能写 upload 目录

二、多个 SFTP 用户(同一组)

sudo groupadd sftpusers
sudo usermod -aG sftpusers sftpuser

sshd_config

Match Group sftpusers
    ChrootDirectory /sftp/%u
    ForceCommand internal-sftp

目录结构:

/sftp/user1
/sftp/user2

三、目录权限说明(非常重要)

目录 拥有者 权限
Chroot 根目录 root 755
上传目录 sftp用户 755 / 775

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

chown sftpuser /sftp/sftpuser

会报:

fatal: bad ownership or modes for chroot directory

四、查看登录问题

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

五、常见需求补充

只允许读

chmod 555 /sftp/sftpuser

允许同组写

chmod 775 upload

如果你有具体需求(比如:

  • 多用户隔离
  • 只读/只写
  • 配合 Nginx
  • Docker 环境

可以告诉我,我帮你定制配置。

0