zoukankan      html  css  js  c++  java
  • Sftp只允许用户访问指定的目录,不能访问其他目录

    警告:在操作之前,先打个多个会话窗口,避免操作不当,引起无法登录服务器,例如这样

    image.png

     

    背景:

    1.需要搭建sftp服务器(一般服务器自带sftp服务,此处不再赘述)

    2.sftp只允许访问指定目录,不能访问其他目录(重点)

    image.png

     

    在一些生产环境中,有时,用户需要传数据到服务器,但是配置ftp服务比较麻烦,此时,我们可以为用户创建sftp账户,让用户使用sftp来上传下载所需的数据。Sftp账号即为系统账号,将账户密码给用户,用户除了能登录sftp上传下载数据外,还可以访问系统中的其他目录,由此,给我们的系统带来了安全隐患,再次,我们需要配置用户只能通过sftp登录系统下载上传所需的数据。

     

    1.创建sftp用户joshua317

    useradd joshua317
    echo abc123 | passwd --stdin joshua317

    2.设置sftp用户joshua317的账户权限

    设置sftp的账号权限需要通过修改sshd_config配置文件进行,sshd_config配置文件修改内容如下:

    vi /etc/ssh/sshd_config
    
    
    #内容修改如下
    
    # Subsystem     sftp    /usr/libexec/openssh/sftp-server   #注释掉此行并添加一下行
    Subsystem sftp internal-sftp
    Match User joshua317                   #此处设置控制的用户,也可以设置为组
    ChrootDirectory /home/joshua317        #允许用户访问的目录,此处我们设置为用户家目录,根据具体情况自己定义
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp

    配置完成后需要重启服务:

    service sshd reload
    或者
    systemctl restart sshd   #根据不同的操作系统选择不同命令,这里服务器版本是centos7.X

    此处配置完我们用另一台机器测试登录,会出现错误,使用win系统sftp客户端(FileZilla)同样也不能正常登陆

     

    [root@iz2ze60f904j9aetyxamj1z ~]# sftp joshua317@172.17.16.89
    Connecting to 172.17.16.89...
    joshua317@172.17.16.89's password:
    Write failed: Broken pipe
    Couldn't read packet: Connection reset by peer

     

    这是由于没有配置目录的正确权限,我们需要设置用户访问的目录的权限

     

    3.设置允许用户访问目录的权限

    重点:sftp用户访问目录需要设置所有者和所属组的权限均为root,并设置目录的权限为755,

    但此目录下的文件及目录的权限我们可根据自己的需求任意设置。

    chown root:root /home/joshua317/   #不要使用chown -R 
    chmod 755 /home/joshua317/         #不要使用chmod -R
    
    #设置该sftp账号不允许登录
    usermod joshua317 -s /sbin/nologin 
    
    #然后重启
    service sshd reload
    
    

    至此,我们的sftp配置已经完成,

    4.测试

    使用linux测试:

     

    使用windows客户端FileZilla测试: 

     

    5.设置用户上传文件权限

    经过上面的设置后用户可正常浏览下载目录中的文件,但是用户无法上传文件。

    此时需要在/home/joshua317/下建立属主属组为joshua317的目录,并给/home/joshua317下的目录设置acl权限即可。

    image.png

    image.png

     

    mkdir /home/joshua317/test
    chown joshua317:joshua317 /home/joshua317/test
    chmod 755 /home/joshua317/test
    
    #查看
    getfacl /home/joshua317/test

     

    image.png

     

    测试是否可以在/homne/joshua317/test下面创建文件或者目录

    image.png

    6.额外:通过用户组处理

     

    如果又需要创建一个用户joshua318,可以继续通过匹配用户的形式,只需要进行如下操作

    首先创建一个用户

    #添加一个用户,指定用户组为joshua317,目录为/home/joshua317,账号不允许登录
    useradd -g joshua317 -s /sbin/nologin -m joshua318
    echo abc123 | passwd --stdin joshua318

    调整sshd_config

    vi /etc/ssh/sshd_config 
    
    Match User joshua318
    ChrootDirectory /home/joshua317
    
    #重启sshd
    service sshd reload

    但如果有很多个用户,此时就需要通过组进行匹配

    vi /etc/ssh/sshd_config 
    
    Match Group joshua317
    ChrootDirectory /home/joshua317
    
    #然后重启
    service sshd reload

    测试是否成功: 

  • 相关阅读:
    zoj 1239 Hanoi Tower Troubles Again!
    zoj 1221 Risk
    uva 10192 Vacation
    uva 10066 The Twin Towers
    uva 531 Compromise
    uva 103 Stacking Boxes
    稳定婚姻模型
    Ants UVA
    Golden Tiger Claw UVA
    关于upper、lower bound 的探讨
  • 原文地址:https://www.cnblogs.com/joshua317/p/14253206.html
Copyright © 2011-2022 走看看