在使用了很久的Unix系统后,我们应该知道在Unix系统中,超级用户掌握着系统的所有权限。但在某些情况下,我们希望普通用户也能执行关机命令,而不具备其它的超级权限。
为了使普通用户具备关机权限,我们需要创建一个专门进行关机的用户,将它的sh修改为我们指定的关机程序。具体操作如下:
首先,我们在Unix系统中正常建立一halt用户,在建立时我们可以设置该用户为无口令用户。然后,用 vi 编辑器修改 /etc/passwd 文件。将我们刚建立的 halt 用户一行的内容修改为:
halt:0:1:/etc:/etc/halt
即该用户具有超级用户权限,但是它的启动目录为/etc,执行的sh为我们指定的可执行程序/etc/halt,该执行文件的内容如下:
- HALT_TERMINAL=`tty`
- case "$HALT_TERMINAL"
- in
- /dev/tty0[1-9]|/dev/tty1[012])
- w-h | fgrep -v halt >; /dev/null
- if [ $? = 0 ]
- then
- clear
- echo "\n\n\n\n\n\n"
- setcolor red black
- echo " [ 普通用户关机程序 ] ** 警告** "
- setcolor yellow black
- echo "以下用户未退出Unix系统无法自动关机。请选择关机方式:\n"
- echo " 注册用户注册终端号"
- w -h | fgrep -v halt | awk '{print " " $1 " " $2}'
- echo " \n\n "
- echo " 1: 中断关机程序。"
- echo " 2: 系统强行关闭计算机。(可能会造成数据丢失)\n\n"
- while true
- do
- echo -n " 请选择:"
- read select
- if test"$select"= 1
- then
- setcolor white black
- clear
- exit 1
- else
- if test "$select"=2
- then
- setcolor white black
- /etc/haltsys
- fi
- fi
- done
- else
- cd /usr/tmp
- rm -f *
- cd
- /etc/haltsys
- fi
- echo "\n\n 普通用户关机程序不能在终端上运行!!"
- esac
- exit
将以上内容用vi编辑器编辑保存为 /etc/halt,并将该文件的权限修改为一般用户可读可执行即可。
这样,一般用户只需在“Login:”状态下输入halt 用户名,即可实现系统的自动关闭。当然,若此时系统中有其它用户尚未退出,则会给出提示信息,而不会自动强行关闭Unix系统。另外该关机用户在终端上不能关闭系统,这也提高了Unix系统的安全性。
【编辑推荐】