一种安全的UNIX/XENIX系统关机方法 罗升、陈洪森 1994-01-07 (1):在letc/passw注册文件中增加一行: halt::o:o::/etc/haltsys:/bin/sh 将/etc/passwd存盘后,只需在login:注册画当面下输入halt回车则可关机。 (2):利用mkuser命令生成一关机用户halt无口令,再将/etc/passwd文件中包含halt的一行修改为:halt::o:o::/usr/haltsys:/bin/sh;即将画横线的uid(用户标识)、gid(组标识)改为特权用户O.O,然后在 halt用户的。profile文件中增加一条shell语句/etc/haltsys存盘,即可在login:注册状态下输入halt回车,关闭系统。 以上介绍的各种方法虽然可行,但存在一些问题:如盲目性、即当输入关机命令时无论机器上有无其它用户,也不论其在干什么都强行关机,可能给其它用户带来损失;另外还具有不安全性,因为利用以上办法有可能使普通用户进入特权用户环境,对系统的安全构成威协。 本人通过增加一关机用户,在用户.profile文件中编制shell程序,较好地解决了这个问题。具体解决方法如下: (1)生成关机用户halt,用mkuser建立无口令用户halt。 (2)用Vi编辑程序对/etc/passwd修改halt用户行,将uid及gid都改为O,而使halt成为特权用户。改为:halt::o:o::/usr/halt:/bin/sh:/usr/halt/halt (3)在用户P halt的环境文件。profile中增加二行即trap''12 3 15和halt(关机shell程序)。 (4)编制halt关机shell程序: #关机shell程序,本程序能查询未退出系统 #用户终端号,并可决定是否关机。及无 #用户工作自动关闭系统。 #Author:罗升、陈洪森 #date:6-05-1989 today=`date' echo"$today" echo'\n-------------' echo'\n HALTSYS MAIN' echo'\n-------------' echo'\n 0.exit.' echo' 1.force strong haltsys.' echo' 2.halt system.' echo'\n-------------' echo"\n\007 please option:\c" read option rest case $ option in 0) break ;; 1) sync sync haltsys ;; 2)number=`who|wc-1' if then sync sync haltsys else clear who echo "\n\OOT Terminal not all logout can not haltsys!" echo`n please pressreturn" read option rest fi ;; *);; esac clear exit o 存盘后,用chmod 777 halt改为可执行,再将uid改为bin即chown bin halt;将gid改为goup即chgrp goup halt。互此,就构成了一个关机用户。当输入1时则强行关闭系统,而不考虑机器中是否有其它用户,输入2时,首先检查机器系统中用户是否都退出如果退出则关机,否则列出所有的用户及注册终端,不关闭系统。这种办法有效地解决了特权用户的负担,又起到安全、不盲目的目的,经过近几年来的使用,效果显著。 以上程序及办法在Olivetti/M380,ZJ386/33,HP386/33以及浪潮LC386/33等机器上运行通过,操作系统为XENIX Systlem V2,3,2版本。