您的位置:首页技术文章
文章详情页

Unix系统中按需定制用户工作环境

【字号: 日期:2024-06-27 15:11:54浏览:52作者:猪猪

在Windows操作系统中,可以通过相关设置来定义用户的默认工作环境。其实在Unix操作系统中,也可以实现类似的定制。而且从某种角度来说,其定制的内容比Windows操作系统更加的广泛。如可以定制用户的默认打印机,定制用户的默认终端类型,定制用户的默认PATH环境变量等等。笔者这篇文章就告诉各位系统工程师,如何做好这方面的工作。

一、设置一个合适的终端。

有时候系统工程师需要手动的为用户或者自己设置一个合适的终端,以便应用程序的结果可以正确的输出到终端上。要实现这个目的,就需要用到系统中的TERM环境变量。这个环境变量的作用只有一个,就是指定用户默认情况下采用的终端类型。也就是说,登陆操作系统后其需要采用的终端。对于某些应用程序来说,如果TERM环境变量设置错误的话,则应用程序就可能不能够顺利的把结果写输出到终端上。在设置这个默认环境变量的时候,系统工程师需要知道两个内容,首选需要知道当前可用的终端类型有哪些;其次就是如何给用户指定一个终端。

如果系统工程师想知道哪些终端是可以用的,则可以查看系统目录/usr/lib/terminfo。(不同版本的Unix操作系统可能目录有所不同)。在这个目录中,存储着Unix操作系统所支持的所有有效的终端类型。如果要为用户指定一个默认的终端设备,则可以在启动配置文件中,利用exprot TERM=终端类型的方式来设置一个默认的终端设备。在使用这个命令的时候,需要注意英文单词TERM必须为大写。如果采用小写的话,可能就会发生错误。

不过有时候系统工程师也希望操作系统能够自动识别终端的类型。如此的话,用户每次更改终端,我们系统工程师也不用每次都进行重新配置了。此时系统工程师可以使用ttytype命令。这个命令可以帮助用户在启动操作系统的时候自动识别终端类型。我们往往把这个命令使用在用户登录时运行的脚本中。

二、为用户定义可用的命令集合。

有时候系统工程师需要为用户定义可用的命令集合或者工具。如在命令行中输入vi命令就会自动打开一个文本编辑器。对于Unix操作系统来说,其支持的文本编辑器有很多。为此系统工程师可能需要用户采用其指定的文本编辑器。此时除了通过删除软件包的方式来实现,还有其他的方式呢?因为如果把某个程序的软件包删除了,那么这个操作系统中的所有用户都无法使用这个应用程序。而现在系统工程师只想为某个用户指定特定的文本编辑器,而不影响其他用户的使用。可见,此时通过删除软件包的方式来实现的话,并不是很好的方式。其实,此时系统工程师可以通过PATH环境变量来实现这方面的控制。

当用户在shell中输入vi命令的时候,操作系统会从某些目录中查找这个命令的可执行文件的位置。而这些目录就是环境变量PATH所决定的。在Unix操作系统中,环境变量也分为系统级别的环境变量与用户级别的环境变量。默认情况下,当某个用户登录到系统时其采用的是系统级别的PATH环境变量。因为此时没有配置用户级别的PATH环境变量。在PATH环境变量中,定义着几个目录,目录之间会用冒号进行分割。操作系统就会从几个命令中去查找相关的可执行文件。如用户安装了某个应用程序,往往需要更改这个PATH环境变量,才可以正常运行这个应用程序。

所以,我们可以通过在用户级别设置这个PATH环境变量,来限制其可用的应用程序。如我们可能只允许用户使用邮件、PIS(一种即时聊天工具)等应用程序。系统工程师可以先建立一个文件夹,然后将这个文件夹下建立这些应用程序可执行文件的连接。最后把PATH目录指定到这个新建立的文件夹中即可。由于操作系统执行命令的时候,会从PATH环境变量指定的目录中去查找可执行文件。如果找不到的话,则就会提示错误信息。为此通过这种方式可以定义用户可以使用命令的集合。当然,系统工程师也可以通过为用户设置可执行文件的权限来实现。不过相对来说,还是这种方法简单、直观一点。

三、利用vipw命令来代替vi命令。

通常情况下,用户的帐号信息都是保存在passwd文件中。注意这个文件名字看起来好像是保存用户密码的。其实用户的密码并不是保存在这个文件中,而是保存在shadow等类似的文件中。这主要是为了提高密码的安全性。不过在passwd文件中也留有一些蛛丝马迹。如果某个用户的密码为空,则这个用户对应的记录密码字段就为空白。如果用户设置了密码,则这个密码就会以X等字符来代替。而真正的密码就以加密的形式保存在其他文件中。

通常情况下,其他用户可以修改自己的密码。此时就会用到这个passwd文件。如果当系统工程师利用vi命令来编辑这个文件,而恰巧这个时候有某个用户正在更改密码,此时用户更改密码的操作就会被拒绝。系统可能不会提示错误信息,但是最终用户的更改不会被保存到这个文件中。为了避免这种情况,笔者建系统工程师在修改这些比较特殊文件的时候,则最好能够使用vipw命令。这个命令会把一个passwd文件拷贝为passwd.tmp 文件,然后会对原有的文件进行锁定。如果此时有一个用户需要更改密码的话,则就会被提示某个文件正在被使用。当修改完成之后,系统会根据某些规则来检查这些临时文件。如果没有问题的话,则就会将这个临时文件的内容同步到原文件中,并解除对原文件的锁定。

虽然这最终的结果是一样的。用户与系统工程师不能够同时对Passwd文件进行更改。但是后者能够给用户提供一个出错的信息,能够让用户明白错在哪里。而采用vi命令的话,则操作系统会不声不响的拒绝用户的操作,这不是很好。

四、为类似的用户提供相同的权限。

由于Unix操作系统是一个真正的多任务多用户操作系统,其允许在同一个时刻内多人共用一台操作系统。此时系统工程师就遇到了一个挑战。即不同的用户其使用同一台电脑上的文件、应用程序,那么如何来保障其工作的相对独立性,特别是其自身的文件不会被其他用户意外删除或者修改呢?但是,这个规则也不是决定的。如果同属于一个部门的用户,在其可以共享彼此的文件,可以修改等等。遇到这种情况的话,系统工程师该如何处理?

其实这个处理也比较简单,就是可以根据用户性质,为其设置不同的组。如把几个销售员归属于销售员组。然后对这个组设置相关的权限,允许这个组内的成员彼此可以修改对方的文件,甚至可以进行删除(这个删除是可行的,但是需要慎重)。同时设置不同组的成员只可以查看对方的文件,而不能够进行删除或者修改。当然也可以设置连查看都不行。设置好之后,只需要把用户加入到特定的组中,则这个用户默认情况下就会具有这个组的相关权限。而不需要再为用户进行一一的设置。也就是说,在大部分情况下,系统工程师需要学会在组的级别上为类似的用户设置权限。而尽量减少为个别用户设置权限。对组进行权限控制,要比针对用户进行权限设置方便的多,也安全的多。

总而言之,系统工程师可以通过环境变量、组权限控制等手段,来根据需要定义用户的工作环境。Windows操作系统中可以实现的用户环境定义,在Unix操作系统中都可以通过以上手段来实现。而且其控制的范围更加的齐全。如在Unix操作系统中,可以控制用户所使用的终端类型;可以在不删除应用程序的情况下,把用户可以使用的应用程序限制在最小的范围之内。但是Windows操作系统则不行,或者说实现起来很困难。

标签: Unix系统