历史档案-我为Sun打补丁

下面的短文是大概98年什么时候写的,那时候刚开始接受几台Sun Solaris机器的安全维护,”菜鸟”上路,边学边练,倒也开心,感觉天天都有新的收获。这个短文是为中计报的工程师手记专栏写的,但是没有发表。翻出来也挺有意思。98年时候的电信机房还是Sun的天下,工程师学的、用的都是Solaris。现在不同了,IBM签下越来越多的移动公司,HP也斩获大部分市场份额,Sun节节败退的感觉。

给系统打补丁是管理员的日常工作,尤其是选择了SUN工作站和Solaris以后,在获得了易用性的同时,也将自己和“补丁(patch)”“补丁包(patch-cluster)”紧紧联系在了一起。系统已经有半年多没有打过新补丁了,然而期间报导的系统漏洞却一个接一个地不停,尤其是几个关键系统程序的安全漏洞,像rpc.statd,automountd,rpc.ttdbserver,in.named等,并且我们的几个服务器在检查中连续出现被攻击甚至入侵的征兆。我感到越来越不安,决定下载一个最新的补丁包给系统们升升级,也安慰安慰自己。

事情决定以后,立刻就干了起来。打开浏览器,访问SUN公司的系统补丁专门站点http://sunsolve.sun.com,找到系统的相应版本Solaris2.5.1对应的补丁包,一看5月27日。不错,够新,立即下载。一个多小时以后,补丁到了我的主机上。在系统临时目录/tmp下开包,进入补丁包目录2.5.1_Recommended,敲入命令./install-cluster,然后按照系统提示键入yes。接下去就是等待了。打补丁是一个漫长的过程。需要耐心。然而,半个多小时以后,我发现苗头不对,补丁安装一个一个全部失败。本来,有几个补丁安装失败是正常的,但是现在,肯定是出了问题。本来认为很顺利的事情现在有麻烦了。

按照往常的经验,我决定重新读一下补丁包附带的安装指导文件,选择一个典型补丁103663-15(in.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。一段时间过去后,我终于看到了屏幕上出现了一个又一个补丁安装成功的提示。

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

7 Responses to 历史档案-我为Sun打补丁

  1. Why says:

    恩,那时我刚会用 Windows 95。

  2. 我老了 says:

    这次爬峨眉山,几步台阶就气喘吁吁的、腿酸软的动不了。

  3. romemeteor says:

    我两个月爬了四次香山
    倒也不是很累
    不过在爬华山的时候着实被朋友羞赧了一下,几个女孩子都比我爬得快!:(爬至四分之三,我就已经手足并用,她们说我是站着思考,爬着走路的动物;不过想想也对,人类不就这么起源的么?再说了,返璞归真一下也没有什么大错!:)

  4. romemeteor says:

    98年的时候刚读大学二年级,面对着离散数学、高等数学之类的学科,意犹未尽啊!不过那个时候比较怀念的是文字mud游戏,天可怜见啊!我总是被GM kick my ass。
    现在不会被kick了,因为我只玩windows 扫雷!

  5. zhaol says:

    锻炼身体、提高警惕、保卫祖国

  6. wang_angela says:

    对SUN的加固是最有快感的一件事情。哈哈

%d bloggers like this: