良许Linux教程网 干货合集 如何限制Linux系统某个用户的使用权?

如何限制Linux系统某个用户的使用权?

对于电脑而言,特别是公司里给大家分配的公共电脑,经常会出现一台电脑多个人共同使用的场景。但是电脑里的数据都是公司里的无形财富,万一数据遭遇破坏,可能会引起很多不必要的麻烦。如何保证电脑里重要数据的安全,限制电脑使用者的一些权力?

Linux系统下,我们可以使用 Restricted Shell 这个神器来限制某个用户的使用权,从而保证系统里的数据安全。

什么是Restricted Shell?

首先,来先给大家解释一下什么是 Restricted Shell 。这玩意它不是一个独立的 Shell (比如 Bash 、zsh 等),它是相当于所使用的 Shell 的一种限制级模式。如果你想将你所使用的 Shell 切换为 rbash 模式,那么可以在 Shell 启动的时候加上 -restricted ,或 -r 选项,这样处理之后它就会以 Restricted Shell 模式启动。

例如,你现在的是 Bash ,那么你可以使用 bsh -r 命令将 Bourne Shell 以 Restricted Shell 模式启动;如果你使用的是 ksh,那么就可以使用 ksh -r 命令将 kour shell 作为 Restricted Shell 启动。

当你使用 Restricted Shell 时,大多数的命令将被限制,甚至连当前工作目录都无法更改。具体的限制有如下:

  • 不能执行 cd 命令。所以我们只能在当前目录下工作,其它目录都无法进入;
  • 不能修改 $PATH,$ENV,$HOME 或 $SHELL 等环境变量的值。
  • 不能执行包含 / 字符的程序。例如,我们无法执行 /usr/bin/uname 或 ./uname 命令或程序。但是,我们依然可以运行 uname 命令。也就是说,当前目录以外的程序或命令是无法被执行的。
  • 也不能使用 >>|<>>&&>>> 重定向运算符进行重定向输出。
  • 也不能我们在脚本中或其它方式关闭 Restricted Shell 模式。
  • 也不能允许使用 set+rset+o restricted 等方式退出 Restricted Shell 模式。

通过使用Restricted Shell限制用户使用系统

首先,在 bash 所在位置创建一个名为 rbash 的符号链接,命令如下。以下命令需以 root 用户身份运行。

# ln -s /bin/bash /bin/rbash

接下来,创建一个新用户,比如: harry,并将默认 Shell 设置为 rbash 模式:

# useradd harry -s /bin/rbash

然后设置新用户密码。

# passwd harry

在新用户的文件夹内创建一个bin目录。

# mkdir /home/harry/bin

现在,我们把允许用户运行的命令放在 bin 目录里。

比如,我们允许用户仅运行 ls 、 mkdir 、和 ping 这三个命令。当然,你还可以添加其它你允许用户运行的命令。

添加命令,其实就是给这个命令创建一个软件链接:

# ln -s /bin/ls /home/harry/bin/ls
# ln -s /bin/mkdir /home/harry/bin/mkdir
# ln -s /bin/ping /home/harry/bin/ping

这时大家应该明白了在前面的步骤中创建了 bin 目录的意图。除了 bin 目录里的命令之外,用户是无法运行其它任何命令的。

接下来,让我们来保护 .bash_profile 文件,防止用户修改。

# chown root /home/harry/.bash_profile
# chmod 755 /home/harry/.bash_profile

再接下来,编辑 /home/harry/.bash_profile 文件,将 bin 目录添加进去:

# vi /home/harry/.bash_profile

修改PATH变量。

[...]
PATH=$HOME/bin
[...]

按 ESC 键,然后键入 :wq 保存并关闭 .bash_profile 文件。

现在,当用户登录时,默认 Shell 就是 Restricted Shell(rbash)模式,它在刚运行的时候就会读取 .bash_profile 文件,将系统 PATH 环境变量设置为文件中 $HOME/bin ,这样用户只能运行 ls,mkdir 和 ping 这三个命令。

在 Restricted Shell 模式下用户不允许更改 PATH 值,同时 .bash_profile 文件的权限也不允许修改,这样用户就不能通过更改环境来绕过限制。

确认新用户是否受限

现在,我们注销当前用户,然后以新创建的用户(即harry)的身份重新登陆。

现在我们随便运行一些命令,看看命令是否可以被执行。

例如我们想要清除屏幕,可以运行以下命令:

$ clear

这时终端会输出以下信息:

-rbash: clear: command not found

好家伙,真的不能运行!那我们再来试试看能不能切换到其它目录。

$ cd /root

这时终端会输出以下信息:

-rbash: cd: restricted

不出意料,依然受到限制!不灰心,再试一下,看看能不能使用 > 运算符重定向输出。

$ cat > file.txt

终端输出:

-rbash: file.txt: restricted: cannot redirect output

看来其它的命令真的是没办法使用了。那我们设置的允许新用户使用的三个命令,是否真的允许被运行?我们再来试试确认一下。

$ ls
$ mkdir harry
$ ping -c 3 baidu.com

一切正如我们所期待的一样!现在除了我们所设置的几个命令,新用户 harry 无法执行其它任何命令,系统完全在我们自己的掌控之下!

添加其它允许使用的命令

假如之前所设置的允许新用户使用的命令太少了满足不了需求,那要如何再设置一些新的命令?我们可以重新登录到 root 用户,再按下面的方法添加新命令。

例如,想要添加 rm 命令,就以 root 用户身份运行以下命令:

# ln -s /bin/rm /home/harry/bin/rm

添加成功之后,用户就被允许使用 rm命令。同样的方法,你可以添加任何你允许新用户使用的命令,这样,新用户能使用的命令都由你说了算啦!

小结

我们可以通过简单的几个步骤,就可以限制一个新用户的操作,使其在自己的家目录下工作,也只允许执行指定命令,保证Linux系统数据的安全。当然,这种方式不是最万能的,最保险的方式还是要把重要数据拷备出来保存,这样就可以降低数据出意外的概率。

本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
头像

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部