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

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

受限制的shell

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

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

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

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

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

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

用户登录流程

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值