sftp指定用户只能访问/写入特定目录,以及解决遇到的坑

2020-12-20 1616点热度 4人点赞 0条评论

前言

需求是要给Linux服务器设定不同的sftp帐号(普通用户权限,且无法使用SSH来登录服务器),赋予他们上传文件的权限,不过希望这些帐号只能访问特定的目录,以达到一定程序的安全

实现

以账号test123、目录/opt/test123为例进行配置

  1. 创建sftp用户
    useradd test123
  2. 设置密码
    passwd test123
  3. 设置sftp的ssh的配置文件
    vi /etc/ssh/sshd_config
    注释掉这行:# Subsystem sftp /usr/libexec/openssh/sftp-server
    坑1. Match User 这个一定要放在配置文件的最后,要不然测试过重启sshd起不来
    坑2.ChrootDirectory 后面跟的是上一级目录 ForceCommand再到实际的目录,否则不能写入文件

    # Subsystem sftp /usr/libexec/openssh/sftp-server
    Subsystem sftp internal-sftp         
    Match User test123
             #允许用户访问的目录的上一级
             ChrootDirectory /opt
             X11Forwarding no
             AllowTcpForwarding no
             #这里到/opt下的具体目录
             ForceCommand internal-sftp -d /test123
  4. 设置好后重启SSH服务
    systemctl restart sshd
  5. 修改目录权限
    #上次目录权限是755
    chmod 755 /opt
    chown test123:test123 /opt/test123/
    chmod 755 /opt/test123/
  6. 设置sftp帐号,不允许登录ssh
    usermod test123 -s /sbin/nologin

admin

这个人很懒,什么都没留下

文章评论

*

code