- 论坛徽章:
- 13
|
@肥虾怎样建一个只能重启和关机的帐户?
摘自《UNIX系统基础》 陈慧蓉 编著
1998年2月第一版 1998年10月第三次印刷
第219页 选段
通常只有超级用户有权执行关机操作。为了避免别人知道超级用户的口令以至滥
用超级用户的巨大权力,可以建立一个专门关机“超级用户”,例如。建一个名
为halt的用户,使其在 /etc/passwd 中的登记项为
halt::0:1 : account for halt : / : /etc/halt
在此,我们让halt用户注册后,不输入口令,系统遍直接执行/etc/halt关机命令
,而不是去执行某一种shell。如果考虑到不破坏正在上机的用户进行中的工作,
以及避免网络上的远程用户执行关机操作,我们可以让halt用户注册后执行某个
shell程序或某个自行编写的二进制程序。例如,使/etc/passwd中的登记项为:
halt::0:1 account for halt :/:/home/adm/halt
下面给出我们用与SunOS 4.1.x(BSD UNIX)上的/home/adm/halt程序的一个参考
版本
#! /bin/csh
#例6.1 --halt
#专门关机的超级用户执行的shell程序
#
#如遇在执行中被打断, goto Intonintr Int
#是否还有其他用户在上机
if ('who |wc -l' = = 1) then
#只有主控制台或接在串口a口的终端可以关机
if ('tty'= = /dev/console | | 'tty'= = /dev/ttya ) then
/etc/umount -t nfs
/etc/halt
else echo Terminal is not previleged !!
endif
else
echo ''
echo '--Login users are------'
who
wall -a << endoffile
The system is coming down. Please logout.
endoffile
endif
exit
Int:
echo "Interruptted"
exit
这是一个专门关机的超级用户。在所有的系统中,只允许建立普通用户帐号,这
就需要利用setuid,使建立关机的用户的进程在关机时暂时变成超级用户来执行关
机操作。但是,setuid的使用一定要非常慎重.
#抄写书上的校验过2次,如有错误请大家原谅
由于是抄写书上的,本人的只是初学者,这些都看不明白,所以
有关问题请不要问我 ^o^
感谢分享 很赞! ^_^ |
|