zoukankan      html  css  js  c++  java
  • 用ChrootDirectory限制SFTP登录的用户只能访问指定目录且不能进行ssh登录

    创建不能ssh登录的用户sftpuser1,密码用于sftp登录: 
    sudo adduser sftpuser1 --home /sftp/sftpuser1 --shell /bin/false 
    sudo nano /etc/ssh/sshd_config (执行man sshd_config查看配置说明) 
    Ubuntu/Debian上把Subsystem sftp /usr/lib/openssh/sftp-server 
    Redhat/CentOS上把Subsystem sftp /usr/libexec/openssh/sftp-server 
    修改为 Subsystem sftp internal-sftp 
    并加入: 
    Match User sftpuser1 
        ChrootDirectory /sftp/sftpuser1 
        ForceCommand internal-sftp 
        AllowTcpForwarding no 
        X11Forwarding no 
    注意ChrootDirectory设置的目录/sftp/sftpuser1的所有者必须是root,并且该目录的上级目录/sftp的所有者也必须是root. 
    而且只有所有者拥有写权限,/sftp/sftpuser1和/sftp的权限最大设置只能是755. 
    sudo chown root:root /sftp/sftpuser1 
    sudo service ssh reload 

    由于上面设置了目录的权限是755, 
    因此所有非root用户都无法在目录中写入文件. 
    我们需要在ChrootDirectory指定的目录下建立子目录比如data,重新设置属主和权限. 
    mkdir /sftp/sftpuser1/data 
    chown sftpuser1:sftpuser1 /sftp/sftpuser1/data 
    chmod 755 /sftp/sftpuser1/data 
    这样就可以在读写data目录了. 

    配置好后,用户sftpuser1只能通过sftp访问指定目录,而且不能进行ssh登录: 
    sftp sftpuser1 @127.0.0.1 登录成功,执行 ls -lha / 可见根目录为 /sftp/sftpuser1, 执行cd ..可见无法进入上一层目录. 
    ssh sftpuser1 @127.0.0.1 提示: 
    Could not chdir to home directory /sftp/sftpuser1: No such file or directory 
    This service allows sftp connections only. 
    Connection to 127.0.0.1 closed. 

    把 AllowTcpForwarding no 改为 AllowTcpForwarding yes 表示允许用户进行端口转发, X11Forwarding 含义类似. 
    上面已经实现了端口转发和禁止登录,如果要禁止读写,执行 chmod 000 /sftp/sftpuser1 

  • 相关阅读:
    提取字符串中的数字
    监控mysql执行的sql语句
    maven打包跳过单元测试
    idea常用快捷键
    spring boot 从入门到精通(一)启动项目的三种方式
    git从入门到精通(三)(git 生成本地密钥的方法:windows)
    经典面试题
    vue 20道精选面试题
    Angular输入框内按下回车会触发其它button的点击事件的解决方法
    快速搭建angular7 前端开发环境
  • 原文地址:https://www.cnblogs.com/lpfuture/p/5602644.html
Copyright © 2011-2022 走看看