• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

给UNIX普通用户关机权限

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 25次 | 进入软件测试论坛讨论

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

 wendy69 回复于:2003-02-20 22:15:56
有人试过吗?我试了一下,不好用,严格按照文中所写操作,halt 文件是用原文copy的,还有什么地方不对呢?

 htldm 回复于:2003-02-20 22:18:02
通过asroot实现也很好。

 sdccf 回复于:2003-02-20 22:30:26
其实最好是用asroot命令.

 wendy69 回复于:2003-02-20 22:37:28
如下修改后即可。

halt:0:3:/usr/halt:/etc/halt

 muzx 回复于:2003-02-20 22:45:58
其实不用这么复杂。
1.按照楼主的办法建一个用户,不过用户的家目录放在/usr下
2.用户的.profile文件中屏蔽掉中断键,
3.直接执行shutdown
4.将这个用户的密码告诉你可信赖的用户。
5.定期修改该用户的密码。

不过现在的服务器好像不常关机,这种方法只是应急使用而已。

 wendy69 回复于:2003-02-20 22:47:59
事实上,在对passwd 中的halt 修改(halt:0:3:/usr/halt:/etc/halt)后,在注册halt 时系统直接执行了/etc/haltsys ,这说明仍不尽人意。

 dot50 回复于:2003-02-20 23:52:38
写.profile:
exec haltsys

 wendy69 回复于:2003-02-21 00:07:30
差不多了!

 Nestle 回复于:2003-02-22 14:47:07
偶用asroot。增加ID为0的用户这种方法,造成安全隐患。

 wendy69 回复于:2003-02-22 14:59:02
没用过asroot,能介绍一下吗?

 lovqing 回复于:2003-02-22 15:03:57
[quote:693e7608bb="muzx"]其实不用这么复杂。
1.按照楼主的办法建一个用户,不过用户的家目录放在/usr下
2.用户的.profile文件中屏蔽掉中断键,
..........[/quote:693e7608bb]

在.profile怎麼屏蔽掉中断键?????

 Nestle 回复于:2003-02-22 15:40:52
[quote:8779d61ea3="lovqing"]

在.profile怎麼屏蔽掉中断键?????[/quote:8779d61ea3]
trap 1 2 3 15  " "
后面那几个是信号, 按需要换成自己要屏蔽的信号就可以了。

 sdccf 回复于:2003-02-22 16:23:26
trap continue 2

 htldm 回复于:2003-02-22 20:53:43
trap "" 1 2 3 15

 muzx 回复于:2003-02-22 21:43:11
stty -istrip -isig

 xyz.me 回复于:2003-03-10 22:34:10
任意建立一个普通用户,通过scoadmin授权给它shutdown权限,把改用户的.profile的最后两行去掉,然后添加
trap exit 2,3
/tcb/bin/asroot shutdown -y -g0

 wzy 回复于:2003-03-12 12:11:31
Unix系统中实现普通用户正常关机
在unix系统中,出于对系统安全的考虑,属于系统管理方面的许多命令,普通用户是不能使用的,其中包括关机命令。但是在某些情况下,我们希望普通用户也能够容易地操作执行关机命令,但不具备其他的系统管理方面命令。为此,系统管理员可以创建一用户,专门实现关机操作。
方法一:先正常创建一普通用户, 假设为off,其次,
    在SCO Unix 3.2 v 4.2环境下:
(1) 使用sysadmsh命令,选择操作过程是:
   Account→User→Examinerivileges
   在屏幕显示中的子系统授权行
Subsystem :Specify[Default]authorizations:[…]
点击Specify,选择shutdown确定
(2) vi  /usr/off/.profile
添加 exec /tcb/bin/asroot  shutdown –y –g0
(3) integrify 对照鉴别数据库检查系统文件
(4) fixmog 自动修正integrity所查出的问题
在SCO Open Server5.0环境下:
(1) usermod –x  “{auths {shutdown}}” off    (二级子系统授权shutdown)
      (2),(3),(4)步设置同SCO Unix 3.2 v 4.2
方法二:正常创建一用户,然后修改/etc/passwd文件,该文件中每行标准格式为:
     username:passwd:UID:GID:comment:directory:program                   
将对应记录行中的用户ID号改为0,用户所使用的shell程序改为 shutdown.
如创建一用户off用于关机:
(1) 建立off用户
(2) 修改/etc/passwd文件.
假设off对应记录行为:off:200:50::/usr/off:/bin/sh
将其改为:
off:0:50::/usr/off:/etc/shutdown
方法三:类似方法二,如增加一关机用户off:
(1) 建立off 用户
(2) 修改/etc/passwd文件。
              假设off对应记录行为:off:200:50::/usr/off:/bin/sh
              将其改为:off:0:50::/usr/off:/bin/sh
        (3)vi  /usr/off/.profile,最后行末添加exec shutdown –y –g0
        off关机用户建成。
(方法二,方法三对于SCO Unix 3.2 v 4.2和SCO Open Server5.0均适用)
只要运用以上方法之一种后,一般用户只需在“Login:”状态下输入off,就能够实现系统自动关闭。

 可怜的笨笨鱼 回复于:2003-07-27 20:18:01
请教trap什么意思,怎么用?

 李宏 回复于:2003-08-16 22:55:33
其实不用修改/etc/passwd文件也可以实现!将/etc下的init文件拷入你建的关机用户下,修改其权限,你就可以在普通用户下执行“init 0”实现关机了。如你的关机用户为“halt”,具体说明如下:
#pwd
   cd /usr/halt
#cp /etc/init .
#chmod 777 init
#chmod a+s init

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网