温馨提示×

Ubuntu SFTP权限设置如何操作

小樊
41
2025-12-22 23:54:41
栏目: 智能运维

Ubuntu SFTP权限设置实操指南

一 环境准备与基础配置

  • 安装 OpenSSH 服务器(如未安装):sudo apt update && sudo apt install openssh-server
  • 创建专用用户与用户组:sudo groupadd sftpusers;sudo adduser sftpuser 或 sudo useradd -m -G sftpusers sftpuser。
  • 备份并编辑 SSH 服务配置:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak;sudo nano /etc/ssh/sshd_config。
  • 在文件末尾添加或修改如下内容,以启用内置 SFTP 并限制仅 SFTP 访问:
    Subsystem sftp internal-sftp
    Match Group sftpusers
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no
    说明:ChrootDirectory 指定用户登录后的根目录;internal-sftp 更安全且便于权限控制。完成后重启服务:sudo systemctl restart ssh。以上步骤完成后,SFTP 权限的框架即搭建完成。

二 目录结构与权限模型

  • 推荐的目录与权限(示例以用户主目录为 /home/sftpuser):
    • 根目录(Chroot 目标):sudo chown root:root /home/sftpuser;sudo chmod 755 /home/sftpuser。
    • 可写目录(用于上传):sudo mkdir -p /home/sftpuser/upload;sudo chown sftpuser:sftpusers /home/sftpuser/upload;sudo chmod 755 /home/sftpuser/upload。
  • 要点:被 Chroot 的目录及其上级目录必须由 root 拥有,且不可对 SFTP 用户可写;用户的可写目录放在其下并授予所属用户(必要时所属组)写权限。
  • 多用户共享目录示例(管理员可读写所有,用户仅能访问自身目录):
    • 目录:/opt/ftpsite/{admin,user1,user2};组:sftpadmins、sftpusers。
    • 权限:chown -R admin:sftpadmins /opt/ftpsite/admin;chmod 700 /opt/ftpsite/admin;
      chown -R user1:sftpusers /opt/ftpsite/user1;chmod 750 /opt/ftpsite/user1;
      chown -R user2:sftpusers /opt/ftpsite/user2;chmod 750 /opt/ftpsite/user2。
    • 说明:750 表示属主可读写执行,属组可读执行,其他无权限;700 仅属主可访问。以上权限设置可确保隔离与最小权限原则。

三 常见场景配置示例

  • 仅 SFTP 且禁止 Shell 登录:创建用户时使用 -s /usr/sbin/nologin(或 /sbin/nologin),并在 sshd_config 的 Match 段保持 ForceCommand internal-sftp,即可实现仅 SFTP 访问。
  • 集中根目录(所有 SFTP 用户共享同一 Chroot 根):
    • 创建 /sftp_root;sudo chown root:root /sftp_root;sudo chmod 755 /sftp_root;
    • 为每个用户创建子目录:/sftp_root/sftpuser;sudo chown sftpuser:sftp_users /sftp_root/sftpuser;sudo chmod 700 /sftp_root/sftpuser;
    • sshd_config 中 Match Group sftp_users 的 ChrootDirectory 改为 /sftp_root
  • 端口与加固:如需修改端口,可在 sshd_config 设置 Port 35021 并重启 ssh;同时建议保持 AllowTcpForwarding no、X11Forwarding no,并仅开放必要端口(默认 22 或自定义端口)。

四 验证与故障排查

  • 连接测试:sftp sftpuser@your_server_ip(如修改端口:sftp -oPort=35021 sftpuser@ip)。
  • 日志排查:查看 /var/log/auth.log 中的 sshd/sftp 登录与权限拒绝信息,可快速定位配置或权限问题。
  • 常见问题速查:
    • 登录即断开或报错:检查 ChrootDirectory 是否为 root 所有且权限为 755;用户可写目录必须在该根下且由用户或属组拥有。
    • 无法上传:确认目标目录对 SFTP 用户具备写权限(如 755775 且用户属于对应组)。
    • 配置不生效:确认 sshd_config 语法正确,执行 sudo systemctl restart ssh 重载服务,并避免重复或冲突的 Match 段。

0