• centos下配置sftp且限制用户访问目录


    SFTP在Linux下是一个很方便很安全的文件传输工具,我常常用它在Linux服务器上替代传统的ftp来传输文件。众所周知SFTP账号是基于SSH账号的,默认情况下访问服务器的权限很大,下面的教程就是教你像ftp那样限制SFTP账号相关的访问权限。

    必要条件:

    你的openssh-server版本至少得失4.8p1, 因为配置权限需要版本添加的新配置项ChrootDirectory来完成。

    如何查看自己服务器上的ssh版本?尝试以下命令

    $ ssh -V

    具体实施步骤

    1. 我们需要创建一个用户组,专门用于sftp用户

    $ groupadd sftpusers

    2. 我们创建一个用户test

    $ useradd -s /bin/false -G sftpuser test

    注意这里我们将test用户的shell设置为/bin/false使他没有登陆shell的权限

    3. 编辑 /etc/ssh/sshd_config

    找到Subsystem这个配置项(Subsystem  sftp    /usr/libexec/openssh/sftp-server) 注释掉

    Subsystem  sftp  internal-sftp  

    然后再到文件最尾处增加配置设定属于用户组sftpusers的用户都只能访问他们自己的home文件夹

    [plain] view plain copy
     
    1. Match Group sftpusers  
    2. ChrootDirectory /srv/sftp/%u或%h  
    3. X11Forwarding no  
    4. ForceCommand internal-sftp  
    5. AllowTcpForwarding no  

    保存并关闭文件

    功能可简述为:凡是在用户组sftp里的用户,都可以使用sftp服务
    使用sftp服务连接上之后,可访问目录为/srv/sftp/username

    举个例子:
    用户test是一个sftp组的用户,那么他通过sftp连接服务器上之后,只能看到/srv/sftp/test目录下的内容
    用户test2也是一个sftp组的用户,那么他通过sftp连接服务器之后,只能看到/srv/sftp/test2目录下的内容

    4. 修改test用户home文件夹的权限,让其属于root用户

    chown root ~test或chown root:root /home/test

    5. 重启sshd服务

    $ service sshd restart

    6. 测试用户账号

    $ ssh test@localhost

    连接会被拒绝或者无法登陆

    $ sftp tesst@localhost

    登陆后你会发现你的账号无法切换到除自己home目录之外的地方的

    关于写权限,如下解决方案并不是很完美

    #在test目录下创建一个可以写的目录
    mkdir /home/test/write
    chown -R test:sftp /home/test/write

    这样test用户就可以在自己家目录里的write目录下拥有写入权限了

    常见问题:

    如果你链接服务器的时候出现下面的提示:

    Write failed: Broken pipe                                                                                               

    Couldn't read packet: Connection reset by peer

    这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755

    sftp服务的根目录的所有者必须是root,权限不能超过755(上级目录也必须遵循此规则),sftp的用户目录所有者也必须是root,且最高权限不能超过755.

    来自:http://be-evil.org/how-to-restrict-lime-sftp-user.html

  • 相关阅读:
    阿里云ECS安装sqlserver,本地无法连接问题排查思路
    1433端口无法连接(sql server 数据库无法访问问题)解决思路
    开源框架 电商参考系统
    版本控制工具 Git 只下载开源项目的某个文件夹
    VUE 在idea中的运行项目
    开源框架 Java Guns 03 数据库替换为sqlite
    SQL Server 用ip地址登录 127.0.0.1
    开源框架 UI框架
    电商 电商系统汇总
    电商 平台汇总
  • 原文地址:https://www.cnblogs.com/grimm/p/8494243.html
Copyright © 2020-2023  润新知