Chinaunix首页 | 论坛 | 博客
  • 博客访问: 100208
  • 博文数量: 27
  • 博客积分: 802
  • 博客等级: 上士
  • 技术积分: 305
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-07 10:39
文章分类
文章存档

2011年(27)

分类: 系统运维

2011-08-08 16:11:08

"补丁(patch""补丁包(patch-cluster"紧紧联系在了一起。系统已经有半年多没有打过新补丁了,然而期间报导的系统漏洞却一个接一个地不停,尤其是几个关键系统程序的安全漏洞,像rpc.statdautomountdrpc.ttdbserverin.named等,打开浏览器,访问SUN公司的系统补丁专门站点

找到系统的相应版本Solaris2.5.1对应的补丁包,立即下载。一个多小时以后,补丁到了主机上。在系统临时目录/tmp下开包,进入补丁包目录2.5.1_Recommended,敲入命令 ./install-cluster,然后按照系统提示键入yes。接下去就是等待了。

按照往常的经验,我决定重新读一下补丁包附带的安装指导文件,选择一个典型补丁103663-15in.named),阅读它的安装script文件installpatch,里面提到了错误返回码的意义。我记得,安装失败时的返回信息大致为checkinstall没有完成,返回代码为5。现在它告诉我,"5"的意思是pkgadd命令失败。这到底是什么原因呢?再回想一下安装过程,我以超级用户身份,解开补丁包,然后以超级用户身份执行安装命令,系统有充足磁盘空间,没有错误。以前的补丁安装也是同样的过程,没有出现过这种现象啊。又认真读了一遍installpatch,发现它只是按照顺序讲解了安装补丁的次序和安装脚本,并没有介绍出错误的原因。同目录下还有一个文件Install.info,发现里面是安装过程在不同系统环境下的一步一步说明,并且,对每一步可能出现的错误提示也作了讲解。 我注意到:

pkgadd: ERROR: checkinstall script did not complete successfully

对,错误提示就是这句话。文件中接下来的提示是:  

The permission for the checkinstall script should not be changed.  

改变checkinstall脚本的权限属性。有点儿费解。怎么改呢?在它前面的一段英文:  

The checkinstall script is executed with its ownership set to

user "install", if there is no user "install" then pkgadd executes

the checkinstall script as nobody.

原来中间还有这么一段过程,还要涉及到nobody用户的权限(我的系统中当然没有install用户),文件属性还必须对nobody用户可读,这下全部明白了。

    安装脚本需要以nobody用户身份运行checkinstall收集系统信息。我当前的umask(权限屏蔽位)为077,这意味着超级用户创建的文件,在缺省情况下其它所有用户都无权读、写、执行,当然nobody也无权读。root原来的umask设置为022(超级用户的文件其它用户缺省不可写),后来为了使系统文件管理更加严格,我将超级用户的umask改为了077。这才导致了两次运行补丁包安装程序执行结果的不一致。

    问题的症结找到了,处理起来就简单了。回到/tmp,将解包后的文件目录全部删除。改变超级用户的umask回到022,重新解包,进入目录,执行install-cluster。一段时间过去后,我终于看到了屏幕上出现了一个又一个补丁安装成功的提示。

    对于系统管理员来说,安装软件时碰到挫折是经常的事。仔细阅读软件包带来的说明文件是解决问题的有效手段。这需要管理员有较好的英语阅读能力,同时有耐心去思考,寻找出错原因。不要急着到其它人那里去寻找答案。

阅读(1375) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~