一种安全的UNIX/XENIX系统关机方法

Author: 罗升、陈洪森 Date: 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 press<inter>return"
        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版本。