免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2410 | 回复: 9
打印 上一主题 下一主题

[分享]在solaris下,让普通用户执行root的脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2002-09-10 10:12 |只看该作者 |倒序浏览
[这个贴子最后由wangrujun在 2002/09/10 03:15pm 编辑]

说明:本文参考并引用了http://www.fanqiang.com/a1/b1/20010611/090400464.html,其原作者是:Jeff Nieusma和David Hieb。

问题:在solaris下,文件的suid位的特性,只对binary的程序有效,现在要求实现我们编写的脚本,也具有类似的功能。

一、系统需求:
1、支持的平台
简单的说:主流的unix都支持。如果要查看更多的细节,请查看sudo网站上的说明
2、需要gcc、gzip
  
二、下载sudo-1.6.6.tar.gz
下载地址:http://www.rge.com/pub/admin/sudo/sudo-1.6.6.tar.gz
我下载到solaris的/usr/loca/src目录下,下面以此目录为基准做讲解。
   
三、解压缩:
# pwd
/usr/local/src
# tar zxf sudo-1.6.6.tar.gz
   
四、编译与安装:
请查看sudo自带的README和INSTALL,其中有许多安装选项,默认的安装如下:
# cd /usr/local/src/sudo-1.6.6
# ./configure
# ./make
# ./make install
   
五、系统配置:
1、主要文件
/etc/sudoers                 经授权的使用者档案。  
/etc/stmp                    visudo 的 lock file 。  
/usr/local/bin/sudo          sudo 的执行档。  
/usr/local/etc/visudo        修改 sudoers 档案的工具。

2、主配置文件sudoers的介绍
Sudo 允许经过同意的使用者以超级使用者的身分执行指令。 Sudo 参考/etc/sudoers 这个档案来判定谁是被授权的使用者。Sudo 将会提示使用者输入密码来启始一段 N 分钟的允许时间(其中 N 是在安装的时候定义的且预设值为 5 分钟)。
Sudoers 这个档案是由一个选择性的主机别名 (host alias) 节区,一个选择性的指令别名 (command alias) 节区以及使用者说明 (user specification)节区所组成的。所有的指令别名或主机别名必须需以他们自己的关键字作为开始 (Host_Alias/Cmnd_Alias)。注意,只有第一次使用者(在使用者说明节区里有记录的使用者)使用时会有说明。  
  
使用者说明节区格式:  
使用者接取群组 [: 接取群组 ] ...  
          接取群组 ::= 主机象徵 = [op]指令象徵 [,[op]指令象徵] ...  
          主机象徵 ::= 一个小写的主机名称或主机别名。  
          指令象徵 ::= 一个指令或指令别名。  
                  op ::= 逻辑的 '!' 否定运算元。   
主机别名节区格式:  
Host_Alias 主机别名 = 主机列表  
  
Host_Alias ::= 这是一个关键字。  
主机别名 ::= 一个大写的别名。  
主机列表 ::= 以逗号间隔的一些主机名称。  
  
指令别名节区格式:  
Cmnd_Alias 指令别名 = 指令列表  
  
Cmnd_Alias ::= 这是一个关键字。  
指令别名 ::= 一个大写的别名。  
指令列表 ::= 以逗号间隔的一些指令。  
  
所有在 '#' 符号後面的文字都会被当作是注解。  
太长的行可以使用倒斜线 '\' 字元来分成新的行。  
保留的别名 'ALL' 在 {Host,Cmnd}_Alias' 里都可以使用。  
不要用 'ALL' 来定义一个别名,这个别名无效。  
注意到 'ALL' 暗示全部的主机跟指令。  
你可以使用这个语法从整个范围中减掉一些项目:  
  
user  host=ALL,!ALIAS1,!/etc/halt...  
  
范例  
  
# Host alias specification  
Host_Alias  HUB=houdini.rootgroup.com:\  
                        REMOTE=merlin,kodiakthorn,spirit  
Host_Alias  MACHINES=kalkan,alpo,milkbones  
Host_Alias  SERVERS=houdini,merlin,kodiakthorn,spirit  
  
# Command alias specification  
Cmnd_Alias  LPCS=/usr/etc/lpc,/usr/ucb/lprm  
Cmnd_Alias  SHELLS=/bin/sh,/bin/csh,/bin/tcsh  
Cmnd_Alias  MISC=/bin/rm,/bin/cat:\  
                        SHUTDOWN=/etc/halt,/etc/shutdown  
  
# User specification  
britt       REMOTE=SHUTDOWN:ALL=LPCS  
robh        ALL=ALL,!SHELLS  
nieusma     SERVERS=SHUTDOWN,/etc/reboot:\  
                        HUB=ALL,!SHELLS  
jill        houdini.rootgroup.com=/etc/shutdown,MISC  
markm       HUB=ALL,!MISC,!/etc/shutdown,!/etc/halt  
billp       ALL=/usr/local/bin/top:MACHINES=SHELLS  
davehieb    merlin=ALL:SERVERS=/etc/halt:\  
                        kodiakthorn=ALL  
  
上面的 sudoers 说明档案是由 4 个主机别名说明,4 个指令别名说明以及 7 个使用者说明所组成的。Britt 被允许在远端机器 (merlin, kodiakthorn, 还有 spirit) 上执行 /etc/halt, /etc/shutdown, /usr/etc/lpc 以及/usr/ucb/lprm 。Rohn 被允许在任何机器上执行除了 SHELL 指令群以外的任何指令。Jill 被允许在 houdini 上执行 /etc/shotdown, /bin/rm, 以及/bin/cat 。Davehieb 可以在 merlin 以及 kodiakthorn 上执行任何指令并且可以 halt SERVERS 。  
  
  
Sudo 被设计成经由 4.3 BSD syslogging 来记录,但是如果真的想要的话还是可以记录到一个档案来取代。  
  
如果一个没有被授权的使用者执行了 sudo 的话,将会有一封 mail 从该使用者寄送到当地的授权者处(在安装的时候定义的)。  
  
所有的设定都是在安装的时后定义的,从 sudo.h 含入档及 Makefile 取得。  

六、如何使用

可执行文件:      
1、sudo - 以超级使用者 (superuser&#59; root) 的身分执行指令   
sudo command  
2、visudo - 编辑 sudoers 档案  
Sudoers 档案应该用 visudo 指令编辑,它会锁住该档并且做文法检查。这提供了一个可以避免愚蠢文法错误的机制。visudo默认的位置是:/usr/local/sbin,只要直接执行/usr/local/sbin/visudo,就可以对sudoers文件进行编辑。

七、警告   
如果使用者可以存取 shell scripts 指令群或允许 shell escapes 的话,没有简单的办法可以防止使用者得到 root shell。  
    另外,sudo象任何一种软件一样,它也会有bug。如果是对安全性要求高的机器,请谨慎使用sudo。

论坛徽章:
0
2 [报告]
发表于 2002-09-10 10:16 |只看该作者

[分享]在solaris下,让普通用户执行root的脚本

这样的水要多点才好:)
bear也好久没写好东西了。。。。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2002-09-10 10:21 |只看该作者

[分享]在solaris下,让普通用户执行root的脚本

你这篇该叫【推荐】【分享】,不该叫【灌水】 :)

论坛徽章:
0
4 [报告]
发表于 2002-09-10 10:24 |只看该作者

[分享]在solaris下,让普通用户执行root的脚本

不好意思,多贴了一次。上面的贴子中下面一段重复了。

论坛徽章:
0
5 [报告]
发表于 2002-09-10 10:25 |只看该作者

[分享]在solaris下,让普通用户执行root的脚本

你编辑一下不就完了?在发帖时间的左边。

论坛徽章:
0
6 [报告]
发表于 2002-09-10 10:26 |只看该作者

[分享]在solaris下,让普通用户执行root的脚本

很好的技术。可是我在想,他可以用在什么地方呢?

论坛徽章:
0
7 [报告]
发表于 2002-09-10 10:36 |只看该作者

[分享]在solaris下,让普通用户执行root的脚本

谢谢 ultra-guest  ,已经编辑过了。以前不知道能这样做。:)
pech:我把它用在重新启动tomcat。我用root安装的tomcat,开发组经常需要重新启动它。如果不这样做,我得重新用tomcat用户来安装tomcat。因为这台开发服务器对安全要求不高,所以为了省事,我就用了sudo.

论坛徽章:
0
8 [报告]
发表于 2002-09-10 13:31 |只看该作者

[分享]在solaris下,让普通用户执行root的脚本

两个问题,
1,如何设定密码,我使用sudo command的时候系统提示要求密码
2,如何设置该用户获得超级用户权限的时间?
多谢

论坛徽章:
0
9 [报告]
发表于 2002-09-10 14:58 |只看该作者

[分享]在solaris下,让普通用户执行root的脚本

好东东

论坛徽章:
0
10 [报告]
发表于 2002-09-10 15:03 |只看该作者

[分享]在solaris下,让普通用户执行root的脚本

密码就是该用户的登录密码。
获得超级用户的时间,默认是5分钟。如果需要改动,我记得是要重新编译。在./configure时可以设置。你可以到看它的README。我用的是默认安装。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP