zoukankan      html  css  js  c++  java
  • Linux中创建sftp用户并限制目录权限的完整教程

    linux作为一款开源的操作系统,由于其稳定性和可靠性为众多用户所青睐,这也是很多大型数据库、服务等依托linux系统搭建的主要原因。最近,被linux的sftp折腾的够呛,在无数个日夜钻研之下,终于破解了其中的奥秘。为了让像我一样的初学者或者被工作需求被逼迫接触的学习的职场人,通过这篇文章之后,能够快速的搭建linux系统的sftp用户。

    小编这里演示使用的linux操作系统是Red Hat Enterprise Linux7。在linux中,默认提供的sftp服务的有vsftpd和internal-sftp,小编这里研究的是通过系统自带的internal-sftp服务单击sftp服务的。在下面的内容中,小编不但会向大家说明每一步的步骤,还会为大家解释每一个命令的具体作用。

    这里我们需要先创建一个sftp的用户,比如说sftpuser的sftp用户,使用的命令是useradd,但是这里必须要注意两点,一是禁止该用户通过ssh登录,二是不需要创建家目录。可能很多人对家目录不是很理解,这里解释一下,家目录简单来说,就是在/home下的用户命令,默认每个用户在/home中都是有与用户名一样的一个文件夹。这里创建的命令是:useradd -s /sbin/nologin -M sftpuser。创建用户之后当然就是为创建的用户设置密码,使用的命令是:passwd sftpuser。设置密码之后如果出现:passwd :all authentication tokens updated successfully .这句话,那就是说明该用户密码设置成功了。

    sftp的用户sftpuser创建后,当然就是为该sftpuser用户创建指定的根目录,主要的作用就是确保所有的sftp用户都将在该根目录中进行活动。首先需要使用mkdir的命令创建根目录,比如这里给更目录中创建sftp的文件夹,命令为:mkdir /sftp。创建该/sftp目录之后,需要设置该目录的权限,确保该目录及该目录以上的系统根目录的拥有者都只能是root用户,命令为:chown root:root /sftp;其次要确保该跟目录往上的根目录都不可以具有群组写入权限,命令为:chmod 755 /home/sftp

    接下来,我们来创建用户sftpuser目录,目录名可以随意设置,这里我们设置为用户名620100,命令为:mkdir /sftp/620100。同时给该用户赋予sftpuser该sftp用户的目录权限:chown root:sftpuser /sftp/620100。这里重点解释一下,这里命令的意思为该620100的目录的拥有者为root和sftpuser,但是sftp用户sftpuser没有权限去读写/sftp/620100的目录,但是我们一般都需要对该命令进行读写操作,所以必须执行命令:chown sftpuser:sftpuser /sftp/620100和chmod 755 /sftp/620100来为它设置权限。(这里的目录sftp的权限也只能是755,否则无法限制目录,切记切记)

    又一个重点,就是配置sshd_config。使用命令:vi /etc/ssh/sshd_config进行编辑。修改内容包括:

    注释掉这行:#Subsystem sftp /usr/libexec/openssh/sftp-server

    添加这行:Subsystem sftp internal-sftp(#指定使用sftp服务使用系统自带的internal-sftp,如果不添加,用户无法通过sftp登录。)

    配置文件末尾添加:

    Match User sftpuser#匹配用户,如果要匹配多个组,多个组之间用逗号分隔

    ChrootDirectory /home/sftp/620100#用chroot将指定用户的根目录

    ForceCommand internal-sftp#指定sftp命令

    X11Forwarding no#这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉

    AllowTcpForwarding no

    配置后重启sshd服务器,命令为:systemctl restart sshd.service,如果需要查询sshd启动状态,命令为:systemctl status sshd.service。这我们来对sftpuser用户进行登录测试,命令为:sftp -oPort=22 sftpuser@ip,可以看到sftp用户能够正常登录,说明这里就完成了sftp创建用户,并修改了权限,限制了根目录。当然,也可以通过第三方工具比如filezilla来进行测试,都是只能访问到限定的路径,而无法对其他目录进行操作。

    转自:https://baijiahao.baidu.com/s?id=1652637680008787639&wfr=spider&for=pc

    增加配置多个sftp用户,并限制他们在各自的文件夹下面。

    (1)在vi /etc/ssh/sshd_config这一步

    Match Group sftp#匹配用户组,如果要匹配多个组,多个组之间用逗号分隔,

    ChrootDirectory /home/sftp/u% #用chroot将指定用户的根目录,u%指的是用户名命名的文件夹

    (2)设置文件夹权限

    /home/sftp必须是root权限

    /home/sftp/必须是root:u%权限

    在u%文件夹下面创建u%:u%权限的文件夹

    成功

     参考:https://blog.51cto.com/u_11046152/2348514

  • 相关阅读:
    mysql 在orderby和limit混合使用时重复数据问题
    springboot启动类 注解
    redis RDB和AOF两种持久化的区别
    C#解析逻辑字符串【x>y&&a>b||p=r】
    删除例如联想笔记本系统隐藏分区
    通过贝叶斯算法实现自动识别类别
    将可执行exe文件注册成windows服务
    Windows10中的IIS10安装php manager和IIS URL Rewrite 2.0组件的方法
    添加钩子监听全局鼠标或键盘事件
    C# DateTime.Now和DateTime.UtcNow的区别
  • 原文地址:https://www.cnblogs.com/jasenin/p/13986195.html
Copyright © 2011-2022 走看看