Linux通过环境变量限制用户能执行的命令 您所在的位置:网站首页 centos7锁定用户命令 Linux通过环境变量限制用户能执行的命令

Linux通过环境变量限制用户能执行的命令

2024-07-18 01:38| 来源: 网络整理| 查看: 265

最近公司有个场景,需要限制用户登陆以后可以执行的命令,从而提高系统的安全性。本身bash已经有了一个受限制的版本叫做rbash,我们在这个基础上还可以通过环境变量的方式对用户做进一步的限制。

文章目录 受限制的shell用户登录流程使用自定义profile文件验证后续

受限制的shell

正常情况下用useradd xx去创建用户的时候给用户配置的shell都是bash,这个可以通过查看文件/etc/passwd或者是通过命令echo $SHELL进行确认。

查看bash命令的man页面会发现bash还有一个受限制模式,如下 01_rbash.jpg

当执行bash命令的时候带上-r参数或者是--restricted的时候,当前的shell就由普通的bash变成了受限制的shell,上图红框内的命令就都执行不了了,我这里就不一一翻译了,选取最前面的几条罗列下

不能使用cd命令,也就意味着不能切换目录不能设置SHELL,PATH,ENV,BASH_ENV这四个环境变量,也就意味着不能切换shell,不能修改命令查找路径不能执行带/的命令,也就意味着只能直接执行环境变量PATH中的命令

有了这个受限制的shell,用户基本上就被限制在自己的home目录下,并且只能执行PATH下的命令。

但是这个还不够,我们还需要在不影响别的用户的前提下将受限制用户能执行的命令进行限制,换句话说,需要继续限制该用户的PATH环境变量所包含的命令集合。如果我们能够将允许用户执行的命令都放在一个目录中,再将这个目录指定为PATH,那么就可以限制用户能够执行的命令了。下面看看怎么在用户登录的时候自动完成这一目标。

用户登录流程

用户在登录的时候会自动运行几个文件,来设置shell的环境变量,如下所示

/etc/profile - 对所有用户生效,其中有一个for循环会从/etc/profile.d中执行.sh格式的文件/etc/bashrc - 对所有用户生效,如果用户使用的是bash,会自动执行该文件~/.bash_profile - 放在用户home目录,对单用户生效,如果存在.bashrc文件还会执行该文件~/.bashrc - 每次用户登录或者打开新的shell的时候都会执行该文件

我这里的思路是在/etc/profile.d中创建一个.sh文件,在其中设置好对应动作,这样用户登录以后就会自动执行该文件,达到限制的目的。借鉴网上的经验,可以直接忽略系统的profile文件,然后使用自定义的profile文件。

使用自定义profile文件

在/etc/profile.d下创建login_tester.sh如下

#!/bin/bash m=`whoami` if [[ "${m}" == "tester" ]];then echo -e "\e[01;33m* ** 你目前登陆的是受限制的shell ** *\e[00m" ## 创建命令集合 mkdir -p $HOME/bin rm -f $HOME/bin/* ln -s /bin/ls $HOME/bin ln -s /bin/ping $HOME/bin ln -s /usr/bin/ssh $HOME/bin/ ln -s /usr/bin/ssh-keygen $HOME/bin/ ln -s /usr/bin/expect $HOME/bin/ ln -s /bin/grep $HOME/bin/ ## 设置环境变量 cat


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有