三、输出中不带有相应的表头。
利用命令who可以显示当前登陆用户的详细信息,如用户名、登陆的途径、登陆时间等内容。在Linux系统中也有类似的功能。不过两个系统有差异。
在Unix系统中如果执行了who命令之后,会以如下类似的格式显示。
这个结果表示当前系统的登陆者有两个,都为Oracle(操作系统允许同一个账户通过不同的渠道登陆到操作系统,这也是Unix系统的一个特性。在Linux操作系统中也可以实线类似的功能,但是在微软操作系统中好像不行。)后面会显示用户登录的途径、登陆系统的时间等等。但是让很多Unix系统的初学者感到困扰的就是,在输出结果中竟然没有一个相应的表头来说明各个列的含义。这一点可能让人看起来觉得Unix操作系统不怎么友好,但是却可以保障Unix系统的安全性。如一些Unix系统的高级安全策略都是基于这个特性所实现的。
另外,由于这个用户信息具有非常重要的价值,故对此进行一些安全的防护就具有更大的现实意义。如系统管理员可以从who命令的输出结果中抽取一部分数据供下一个命令使用。如笔者笔者经常利用这个内容给系统当前登陆的用户发送邮件。为此笔者设计了一个小程序,在每个星期五的时候(利用date命令从输出结果中抽取每个星期五的日期)向系统当前登陆的账户(利用who命令抽取其中的user-id一列的数值),然后通过mailx命令可以给当前所有已登陆的账户发送邮件。系统工程师可以通过一些简单的命令实现类似负责的维护功能,这也是Unix系统跟其他操作系统的优势所在。
除了发送邮件,系统工程师还可以利用这个who命令显示的结果实现其他一些功能,如发送信息给当前登陆用户要求起保存当前作业并注销操作系统、甚至强制断开用户与本机的连接等等。故如果不对who的结果信息作一定程度的保护的话,那么就将给Unix系统带来很大的安全威胁。
其实除了who命令之外,Unix系统类似的情况还有很多。正是这一个个的细节考虑,才保障了整个Unix系统的安全。从这一方面来说,Unix系统有时候即使牺牲了界面的友好性,来实现系统的安全性,也是可以接受的。