插件窝 干货文章 如何在Linux下进行SFTP用户权限设置

如何在Linux下进行SFTP用户权限设置

SFTP username sudo 设置 554    来源:    2025-05-12

Linux下SFTP用户权限设置指南

基本概念

SFTP(SSH File Transfer Protocol)是通过SSH协议进行安全文件传输的协议。在Linux系统中,SFTP用户权限管理通常通过OpenSSH服务器配置实现。

设置步骤

1. 创建SFTP专用用户组

sudo groupadd sftpusers

2. 创建SFTP用户并设置密码

sudo useradd -g sftpusers -s /bin/false username
sudo passwd username

3. 创建SFTP根目录并设置权限

sudo mkdir -p /var/sftp/username
sudo chown root:root /var/sftp
sudo chmod 755 /var/sftp
sudo mkdir -p /var/sftp/username/upload
sudo chown username:sftpusers /var/sftp/username/upload
sudo chmod 755 /var/sftp/username
sudo chmod 755 /var/sftp/username/upload

4. 修改SSH配置文件

编辑/etc/ssh/sshd_config文件:

sudo nano /etc/ssh/sshd_config

添加或修改以下内容:

Subsystem sftp internal-sftp

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

5. 重启SSH服务

sudo systemctl restart sshd

高级权限控制

1. 限制用户只能上传不能下载

sudo chmod 733 /var/sftp/username/upload

2. 限制用户只能下载不能上传

sudo chmod 755 /var/sftp/username/upload
sudo chown root:root /var/sftp/username/upload

3. 设置只读权限

sudo chmod -R 555 /var/sftp/username/upload

4. 设置读写权限

sudo chmod -R 755 /var/sftp/username/upload

验证设置

sftp username@localhost

注意事项

  1. ChrootDirectory必须由root用户拥有,且其他用户不能有写入权限
  2. ChrootDirectory下的子目录可以由相应用户拥有
  3. 确保用户不能通过SSH登录shell,通常设置shell为/bin/false/usr/sbin/nologin
  4. 对于生产环境,建议使用更严格的权限设置

故障排除

如果连接失败,检查以下内容: 1. /var/log/auth.log中的错误信息 2. 目录权限是否正确 3. SELinux是否阻止了访问(可暂时设置为permissive模式测试)