SCO UnixWare 7操作系统在银行、证券、电信等部门的关键业务中有着广泛的应用。由于各种原因,有时会出现root用户口令遗失的情况,如果不能正确处理,就只能重新安装系统。这样,一方面浪费了大量的时间,并造成业务中断;另一方面还可能引起数据丢失,造成无法挽回的损失。本文介绍笔者在工作实践中总结出的一套解决root用户口令遗失的方法。该方法的基本思路是先进入系统,然后修改或删除root用户口令。
进入系统
在遗失root用户口令的情况下,根据日常的准备工作,有4种可以进入系统的方法。
1. 应急恢复盘法
应急恢复盘由两张软盘组成。先后插入两张应急恢复盘,在出现提示“The hard disk is sane, Press ENTER to continue”时,按回车键,系统显示如下菜单:
Emergency Recovery Menu
Mount File System
Umount File System
Access UnixWare Shell
Restore Disk(s)
Reboot
选择Mount File System后,系统将硬盘的根文件系统装载到/mnt目录下。再选择Access UnixWare Shell,系统出现#提示符,进入系统成功。
2. 使用boot盘法
首先用第一张引导软盘引导系统(对支持光驱引导的机器也可以从安装光盘引导系统),并根据提示插入第二张软盘。然后按以下步骤执行:
● 按F8推迟许可软件,即不输入license号。
● 加载UnixWare HBA 盘。
● 如果有必要进入DCU进行设置(或按F10继续)。
● 当出现“System node name”提示时,插入安装光盘(若从光盘引导则不必插入光盘)。
● 按Ctrl+Alt+Esc组合键切换到虚屏VT0(按Ctrl+Alt+F1组合键可切换回系统安装界面)。
● 在VT0中,执行下面的命令安装CD-ROM:
mount -F cdfs -r /dev/cdrom1 /cd-rom
● 注册vxfs文件系统的模数(UnixWare 7 根文件系统的类型通常为vxfs):
modreg 4 vxfs
● 加载vxfs文件系统的模数:
modadmin -l /cd-rom/.extra.d/etc/conf/mod.d/vxfs
如果系统返回以下信息,表示加载成功:
UX:modadmin:INFO:module /cd-rom/
.extra.d/etc/conf/mod.d/vxfs loaded,ID=1
● 检查硬盘的根文件系统。假设系统硬盘使用的控制器为0,bus为 0,ID为 0,LUN为0,root的分片为1:
/cd-rom/.extra.d/etc/fs/vxfs/fsck -F vxfs /dev/dsk/c0b0t0d0s1
● 将硬盘的根文件系统安装到/mnt目录下:
mount -F vxfs /dev/dsk/c0b0t0d0s1 /mnt
● 为使命令正确运行,重新设定搜索路径:
PATH=:/usr/bin:/sbin:/usr/sbin; export PATH
3. 第二硬盘法
● 将遗失口令的系统硬盘取下,将硬盘跳线调整为Slave,加挂到另一个UnixWare 7系统中。
● 检查第二硬盘的根文件系统。假设系统硬盘使用的控制器为0,bus为 0,ID为 1,LUN为0,root的分片为1:
fsck -F vxfs /dev/dsk/c0b0t1d0s1
● 将第二硬盘的根文件系统安装到/mnt下:
mount -F vxfs /dev/dsk/c0b0t1d0s1 /mnt
4. 系统拥有者(System Owner)注册法
在安装UnixWare 7系统时,有一个用户(缺省UID为101)被分派为系统拥有者,它具有一般用户所没有的一些特殊权限,可以通过它来修改root用户的口令。如果已知它的口令,以它的用户名注册到系统中即可。
修改/删除口令
进入系统后,根据进入方法不同,一般有5种方法可以实现修改/删除口令。
1. 编辑文件法
● 以1、2、3方法进入系统。
● 编辑shadow文件,将root用户的加密口令删除,然后存盘退出:
#vi /mnt/etc/shadow
● 使安全性数据库一致:
#chroot /mnt creatiadb
● 重新引导系统(对以方法3进入系统的,要将此硬盘还原后重新引导,下同)。再用root用户注册时,系统将不提示输入口令而直接进入系统,然后为root用户定义一个新口令即可。
2. 应用命令法
● 以1、2、3方法进入系统。
● 用passwd命令直接修改root用户的口令:
#chroot /mnt passwd root
● 重新引导系统。再用root用户注册时,系统将不提示输入口令而直接进入系统,然后为root用户重新添加一个口令即可。
3. 文件覆盖法
笔者在实践中发现,在UnixWare 7系统中用户的注册操作完全是由/etc/security/ia/master文件控制的。因此,我们可以采用“偷梁换柱”的办法,用已知口令的系统的master文件来替换遗失口令系统的master文件。步骤如下:
● 以1、2、3方法进入系统。
● 备份系统的master文件:
#cp /mnt/etc/security/ia/master /mnt/etc/security/ia/master.old
● 从另外已知root口令的UnixWare 7系统中拷贝master文件到软盘:
ls /etc/security/ia/master|cpio -ocv >/dev/fd0
● 将软盘中的master文件拷贝到本系统中:
#cd /mnt/etc/security/ia
#cpio -icvBdum</dev/dsk/f03ht
● 重新引导系统。再用root用户注册时,此时的口令即为已知系统的口令。进入系统后,首先恢复原maseter文件:
#cp /etc/security/ia/master.old /etc/security/ia/master
然后修改root用户的口令:
#passwd
也可以用tar命令实现修改/删除口令操作。对于按方法1、2进入系统的情况,由于此时系统不提供tar命令,所以使用硬盘中的tar命令即可:
#PATH=$PATH: /mnt/usr/sbin; export
当以方法3进入系统时,直接使用tar命令即可。
4. 网络特性法
若原机器(设为A机)为Unix局域网中的一台机器,并且支持TCP/IP协议,则可以利用网络中相互信任的用户之间注册对方系统时不需要口令这一特性来修改A机的root用户口令。即将另外一台Unix系统机器(设为B机)的root用户设为A机可信任的用户,再从B机上以rlogin的方式注册到A机(此时已不需要口令),然后修改root用户的口令。具体操作如下:
● 以1、2、3方法进入系统。
● 修改/mnt/. rhosts文件(若无此文件则新建一个),在文件中加入B机的系统名称。
● 打开/mnt/etc/inetd. conf文件和/mnt/etc/services文件,检查是否限制rlogin命令。若有限制,则解除限制。
● 检查/mnt/etc/default/login文件,将限制root用户只能在CONSOLES上注册的参数去掉。即删除或屏蔽掉参数:CONSOLE=YES。
● 在B机上以root用户注册,执行rlogin命令登录到A机,直接进入“#”状态,修改root用户口令:
#passwd
5. 特殊用户法
● 以方法4 进入系统。
● 修改root用户口令:
$/sbin/tfadmin passwd root。
这种方法简单易行,同时也最安全可靠。