温馨提示×

SFTP如何设置权限

小樊
71
2025-09-05 03:50:28
栏目: 编程语言

SFTP权限设置主要涉及用户、目录及SSH配置,核心步骤如下:

  1. 创建专用用户和组

    sudo groupadd sftpusers  # 创建SFTP用户组  
    sudo adduser sftpuser -M -s /sbin/nologin  # 创建用户,禁止SSH登录  
    sudo usermod -aG sftpusers sftpuser  # 将用户加入组  
    
  2. 配置SSH限制权限
    编辑 /etc/ssh/sshd_config,添加以下内容:

    Subsystem sftp internal-sftp  # 启用SFTP子系统  
    Match Group sftpusers  # 针对SFTP用户组配置  
        ChrootDirectory %h  # 限制用户根目录为用户主目录  
        ForceCommand internal-sftp  # 强制仅能使用SFTP  
        AllowTcpForwarding no  
        X11Forwarding no  
    
    • ChrootDirectory 需确保主目录权限为 root:root 且权限为 755,避免用户越权。
  3. 设置目录和文件权限

    • 主目录:归属 root,权限 755(用户不可修改主目录本身)。
      sudo chown root:root /home/sftpuser  
      sudo chmod 755 /home/sftpuser  
      
    • 子目录(如上传目录):归属用户及组,权限 755(或 770 允许组内写)。
      sudo mkdir /home/sftpuser/uploads  
      sudo chown sftpuser:sftpusers /home/sftpuser/uploads  
      sudo chmod 755 /home/sftpuser/uploads  # 或 770  
      
  4. 重启SSH服务生效

    sudo systemctl restart sshd  
    
  5. 可选:启用更细粒度权限控制

    • 使用ACL(访问控制列表)为特定用户分配权限:
      sudo setfacl -R -m u:sftpuser:rwx /home/sftpuser/specific_dir  
      
    • 通过 Match User 针对单个用户单独配置权限。

安全注意事项

  • 禁止SFTP用户拥有主目录的写权限(防止修改系统文件)。
  • 定期检查日志 /var/log/auth.log 监控异常登录。

完成配置后,可通过 sftp sftpuser@服务器IP 测试连接及权限是否生效。

0