4

让UNIX普通用户具备关机权限

 2 years ago
source link: https://os.51cto.com/article/254960.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
让UNIX普通用户具备关机权限-51CTO.COM
让UNIX普通用户具备关机权限
作者:otto 2011-04-12 10:16:18
在UNIX系统中的某些情况下,我们非常希望普通用户也能执行关机命令,而不具备其它的超级权限,本文就是来教用户如何实现上述功能。

UNIX系统中,超级用户掌握着系统的所有权限,关机命令也是其中非常重要的一项权限。但在某些情况下,我们非常希望普通用户也能执行关机命令,而不具备其它的超级权限。

为了使普通用户具备关机权限,我们需要创建一个专门进行关机的用户,将它的sh修改为我们指定的关机程序。具体操作如下:

首先,我们在UNIX系统中正常建立一halt用户,在建立时我们可以设置该用户为无口令用户。然后,用 vi 编辑器修改 /etc/passwd 文件。将我们刚建立的 halt 用户一行的内容修改为:

halt:x: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 "以下用户未退出系统无法自动关机。请选择关机方式:\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 用户名,即可实现系统的自动关闭。当然,若此时系统中有其它用户尚未退出,则会给出提示信息,而不会自动强行关闭系统。另外该关机用户在终端上不能关闭系统,这也提高了系统的安全性。该方法在SCO Open UNIX 5.0操作系统中试验通过。

【编辑推荐】

责任编辑:冯宇 来源: 博客园
zanpc.bd208a1.pngzanpchover.fdd60ba.png
weixin.23cd8b3.png 分享到微信
weibo.16d6b4f.png 分享到微博

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK