温馨提示×

ubuntu sftp如何限制用户权限

小樊
53
2025-07-24 08:51:22
栏目: 智能运维

在Ubuntu系统中,使用SFTP限制用户权限可以通过配置SSH和SFTP服务来实现。以下是一些常见的方法:

方法一:使用Chroot Jail

  1. 安装必要的软件包

    sudo apt-get update
    sudo apt-get install openssh-server
    
  2. 创建一个新用户(如果还没有):

    sudo adduser sftpuser
    
  3. 设置用户的密码

    sudo passwd sftpuser
    
  4. 创建一个目录用于SFTP用户的根目录

    sudo mkdir /home/sftpuser/uploads
    sudo chown root:root /home/sftpuser/uploads
    sudo chmod 755 /home/sftpuser/uploads
    
  5. 配置SSH以使用Chroot Jail: 编辑/etc/ssh/sshd_config文件:

    sudo nano /etc/ssh/sshd_config
    

    找到并修改以下行:

    Subsystem sftp internal-sftp
    Match Group sftpusers
        ChrootDirectory %h
        ForceCommand internal-sftp
        AllowTcpForwarding no
        X11Forwarding no
    

    添加一个新的组sftpusers并将用户添加到该组:

    sudo groupadd sftpusers
    sudo usermod -aG sftpusers sftpuser
    
  6. 重启SSH服务

    sudo systemctl restart sshd
    

方法二:使用sshd_configauthorized_keys

  1. 安装必要的软件包

    sudo apt-get update
    sudo apt-get install openssh-server
    
  2. 创建一个新用户(如果还没有):

    sudo adduser sftpuser
    
  3. 设置用户的密码

    sudo passwd sftpuser
    
  4. 编辑用户的authorized_keys文件: 编辑~/.ssh/authorized_keys文件,添加以下内容:

    command="internal-sftp",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...
    
  5. 限制用户的根目录访问: 在用户的家目录下创建一个.ssh目录,并设置权限:

    mkdir ~/.ssh
    chmod 700 ~/.ssh
    touch ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    
  6. 重启SSH服务

    sudo systemctl restart sshd
    

方法三:使用pam_limits.conf

  1. 安装必要的软件包

    sudo apt-get update
    sudo apt-get install libpam-modules
    
  2. 编辑/etc/pam.d/sshd文件

    sudo nano /etc/pam.d/sshd
    

    在文件顶部添加以下行:

    session required pam_limits.so
    
  3. 编辑/etc/security/limits.conf文件

    sudo nano /etc/security/limits.conf
    

    添加以下内容:

    sftpuser hard nofile 1024
    sftpuser hard nproc 1024
    
  4. 重启SSH服务

    sudo systemctl restart sshd
    

通过以上方法,你可以有效地限制SFTP用户的权限,确保他们只能访问指定的目录,并且不能执行其他命令。

0