当前位置: 代码迷 >> 综合 >> # centos7 创建 sftp 用户 并指定访问特定目录
  详细解决方案

# centos7 创建 sftp 用户 并指定访问特定目录

热度:57   发布时间:2024-01-27 02:48:51.0

centos7 创建 sftp 用户 并指定访问特定目录

  1. 所需实现功能:

    user1用户:
    对/opt/sftp/user1/UploadFiles目录有读写权限,限制其只能通过sftp登录服务器,且只能在user1目录下操作

    user2用户:
    对/opt/sftp/user2/UploadFiles目录有读写权限,限制其只能通过sftp登录服务器,且只能在user2目录下操作

    user2-r用户:
    对/opt/sftp/user2/UploadFiles目录只有只读(下载)权限,限制其只能通过sftp登录服务器,且只能在user2目录下操做

  2. 创建sftpuser组,新增sftp登录用户user1、user2、user2-r,限制用户无法ssh登录服务器

    # groupadd sftpuser 
    # user1dd -g sftpuser -s /bin/false user1 && echo "user1@123"|passwd user1 --stdin
    # user1dd -g sftpuser -s /bin/false user2 && echo "user2@123"|passwd user2 --stdin
    # user1dd -g sftpuser -s /bin/false user2-r && echo "user2-r@123"|passwd user2-r --stdin
    
  3. 创建两个用户的登录目录,设定目录权

    mkdir -p /opt/sftp/{user1,user2}/UploadFiles
    # chown root:root /opt/sftp/
    # chown root:sftpuser /opt/sftp/{user1,user2}/
    # chown user1:sftpuser /opt/sftp/user1/UploadFiles
    # chown user2:sftpuser /opt/sftp/user2/UploadFiles
    # chmod 755 /opt/sftp/{user1,user2}
    
  4. 修改sshd_config文件,指定不同用户登录不同目录

    # vi /etc/ssh/sshd_config
    
  5. 修改sshd_config文件,指定不同用户登录不同目录

    # vi /etc/ssh/sshd_config
    注释掉下面一行
    #Subsystem sftp /usr/libexec/openssh/sftp-server
    添加以下内容
    Subsystem    sftp    internal-sftp
    Match User user2-rChrootDirectory /opt/sftp/user2ForceCommand internal-sftpAllowTcpForwarding noX11Forwarding no
    Match Group sftpuserChrootDirectory /opt/sftp/%uForceCommand internal-sftpAllowTcpForwarding noX11Forwarding no
    
  6. 目录权限设置要点: ChrootDirectory参数指定的目录,其权限及其所有的上级文件夹权限,属主必须是root,且只有属主能拥有写权限,即权限最大设置只能是755。上面之所以要创建UploadFiles目录,是因为无论user1还是user2对自己的登录目录user1和user2都只有只读权限,而通过上面第3步的权限设置,我们可以让这两个用户对自己目录下的UploadFiles拥有读写权限,而使得user2-r对UploadFiles目录只有只读权限,从而达到不同用户拥有不同的权限设定需求。 上面配置中,user2-r的配置必须在sftpuser组配置之前,以后添加新的用户也是如此,否则会因为参数“/opt/sftp/%u”优先匹配/opt/sftp/user2-r目录,而实际中user2-r目录是不存在,造成登录失败。

  7. 重启sshd服务:

     #service sshd restart#systemctl restart sshd