Unix操作系统shell的使用进行限制

系统 其他OS
Shell是用户跟Unix操作系统内核进行沟通的一个工具。默认情况下,不同的用户其采用的shell功能是相同的。但是当Unix操作系统有多个用户在使用的话,就需要对某些用户的shell 功能进行限制。

我们来讲一下Unix操作系统的知识。Unix操作系统是一个比较完善的多用户操作系统。多个用户可以在同一个Unix操作系统上进行各自的操作,而不会发生相互的干扰。不过为了提高Unix操作系统多用户操作的安全性,Unix工程师仍然要采取一些必要的措施。今天,我们来对shell的使用进行限制。

对shell的使用进行限制

Shell是用户跟Unix操作系统内核进行沟通的一个工具。默认情况下,不同的用户其采用的shell功能是相同的。但是当Unix操作系统有多个用户在使用的话,就需要对某些用户的shell 功能进行限制。如需要限制用户使用cd命令,即不允许用户随意更改当前目录。用户所创建的所有文件与目录都必须在其自己的主目录下面,即home/用户名目录下。

在Unix操作系统下可以实现类似的控制。当为某个用户采用了限制版本的shell之后,则这个用户只能够执行位于某些特定目录下面的程序。通常情况下这个目录是由一个完全不同的Path变量所决定的,而且他的值用户不能够改变,一般情况下就把这个目录设置为当前目录。

为了限制某个用户的活动或者可以采用的命令,系统工程师需要创建一个用户帐号,并只允许他使用某个特殊的受到一定限制的shell。通常情况下,现在的shell 版本都基本上能够支持这个功能。一般来说,如果系统工程师指定用户使用受限制的shell,那么这个用户就可能受到如下的限制。

一是这个用户不能够使用CD命令进行目录的切换。也就是说,此时用户只能够在Unix操作系统设置的当前目录中进行操作。这对于普通用户来说,是一个非常有用的限制措施。由于他们不能够在目录之间进行切换操作,那么也就不会对其他用户的资料造成无意或者有意的损坏,有利于其他用户资料的安全性。

二是对命令的使用有所限制。当对用户采用了限制版本的shell之后,这个用户就不能够使用含有“/”的路径。也就是说这个用户不能够用相对路径或者绝对路径执行一个命令。另外,也不能够更改Path变量。

Path变量为shell 提供了定位可执行文件的搜索路径。当用户向系统发出一个指令时,shell就会按这个Path变量所设置的搜索路径的顺序查找这个命令文件,如果找到了这个命令文件就执行这个文件;找不到的话就提示错误信息。这也就是说这个用户不能够访问保存在其他目录里的命令。为此设置让用户采用限制版本的shell,可以限制用户的某些行为。

如Unix操作系统工程师可以把这个用户可以用的命令预先在Path变量中设置;然后把不允许的命令路径从path变量中删除。如此的话就可以限制用户“可以做什么;不可以做什么”。对用户可以使用的命令进行限制,可以保障其他用户的安全。

三是不能够使用一些特定的操作符号。如在Unix操作系统中,可以利用ls –i > ls_list命令。这个命令的意思就是查询当前目录下的所有文件与目录相关信息,并把查询结果写入到一个文件中。但是如果未某个用户指定了受限版本的shell之后,则这个用户就不能够使用包括>在内的一些特殊操作符。如不能够使用>或者>>操作符号创建文件或者把某些内容追加到现有文件中去。

从以上的分析中可以看出,采用受限版本的用户只能够执行特定目录下的命令。如果系统工程师需要让某个受限用户来执行其他目录下的命令,也是可以的。此时就需要用到笔者以前文章中谈到过的硬连接的功能。

如现在Unix操作系统工程师允许使用/bin/ifconfig这个命令。由于这个目录通常不再用户的当前目录下,而且用户又能够使用带/符号的路径名称,那该如何处理呢?其实很简单,系统工程师指需要利用in名称在用户的当前目录下创建这个命令的连接即可。此时系统就会根据这个连接去打开其原命令文件。

若系统工程师现在所采用的shell版本不支持受限shell该如何处理呢?其实这也很好解决。如果用户现在所使用的系统中没有一个受限的shell,此时系统工程师可以结合标准的shell环境与-r可选项一起使用,来达到类似的目的。如笔者可以利用sh –r等类似的命令让shell强制以受限的模式运行。

不过这里需要注意的是,通常情况下Unix操作系统工程师不能够把这些命令加入到/etc/passwd文件中。故系统工程必须先运行普通的shell环境,然后再在启动文件中利用exec命令来启动这些命令,并且必须把Path变量设置为一个目录。

可见此时设置起来比较麻烦。为此笔者的意见是,如果Unix操作系统工程师真的要让用户采用受限的shell,那笔者还是建议采用本身就有类似的功能的shell版本为好。如果用户当前使用的shell版本没有一个受限的shell,那么笔者建议把这个shell进行升级。因为如果按照如上的配置与shell版本升级的工作量来说,没有多大的差别。

故如果条件允许的情况下,还是直接给用户采用支持受限shell的软件为好,以减少后续维护与部署的工作量。我们对Unix操作系统的知识就了解到这里吧。

【编辑推荐】

  1. Unix操作系统病毒之ELK CLONER
  2. 举例Unix操作系统gzip命令的使用
  3. 简析Unix操作系统gzip命令
  4. 举例解释Unix操作系统tar命令
  5. 学习笔记Unix操作系统tar命令
责任编辑:小霞
相关推荐

2010-05-07 13:04:11

Unix Shell

2010-04-07 16:15:04

Unix操作系统

2010-04-16 14:46:22

2010-04-08 13:06:02

Unix操作系统

2010-04-14 15:44:10

Unix操作系统

2010-04-15 11:15:04

2010-04-19 13:31:06

Unix操作系统

2010-04-08 12:49:00

Unix操作系统

2010-04-15 10:45:57

2010-04-15 14:40:26

Unix操作系统

2010-04-07 14:32:47

Unix操作系统

2010-04-16 14:23:52

Unix操作系统

2010-04-13 12:27:44

Unix操作系统

2010-04-28 19:11:29

Unix操作系统

2010-04-16 09:27:36

2010-04-09 10:49:01

Unix操作系统

2010-04-30 17:53:29

2010-05-06 17:59:50

Unix命令

2010-04-08 14:15:53

Unix操作系统

2010-05-07 17:41:36

BSD Unix
点赞
收藏

51CTO技术栈公众号