发布于 1970-01-01 08:00
  • 3 个回答
    • 构建chroot环境,修改sshd配置指定用户登录目录

      2022-11-08 04:31 回答
    • useradd还是adduser, 貌似两个都有. 默认是会创建/home/Name的目录, 而且只有这个目录的读写权限, 其他目录的是可以看的

      2022-11-08 04:33 回答
    • 用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 含义类似.

      2022-11-08 04:36 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有