新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 用DOS命令解除UNIX管理员密码

用DOS命令解除UNIX管理员密码

作者: 时间:2016-09-12 来源:网络 收藏

对于SCOUNIX操作系统管理员来说,最不可原谅的过失之一就是忘记了 管理员口令(即超级用户口令)。这个过失会导致极其严重的后果,对此凡是具备UNIX 操作系统常识的人都应该知道。然而令人遗憾的是,时至今日铸错者依然大有人在。看 来,对他们固然要责备,但既然问题客观存在,我们就总还须面对现实,想办法去解决才是。

本文引用地址:https://www.eepw.com.cn/article/201609/304592.htm

长期以来,许多人就超级用户口令被忘记的问题发表了各种看法。一部分人认 为,一旦忘记了超级用户口令,只能重装操作系统,此外别无它法。另一部分人则坚决 反对这种重装论,他们提出了一些经过成功实践的解决方案,使得重装论者败下阵来。现在我们可以肯定地说,忘记超级用户口令是有办法解决的。

但同时我们也不得不承认,现行的解决方案有很大的局限性,这些局限性决定了现有方案无论怎样变化和发展也不可能成为一种有着强大生命力的最彻底的解决方案。

传统解决方案的局限性

上面已经谈到,目前有多种针对超级用户口令被忘记问题的解决方案。为了叙述上的方便,本文将这些方案统称为传统解决方案。传统方案乍看起来似乎各不相同,但必须有一套(两张)EmergencyBootFloppy(紧急启动软盘)。这套软盘均为文件系统

格式,必须在SCOUNIX上制作,并且在不同类型机器上制作的紧急启动软盘相互不能通用。用紧急启动软盘启动后,将硬盘根文件系统mount到某个目录下(一般为/mnt目录),然后进入该目录(即进入硬盘根文件系统的根目录),修改相关目录下与超级用户口令有关的信息(各种方案的不同之处主要体现于此)。最后回到软盘根目录,拆卸/dev/hd0root,重启机器。

这些共同点实际上反映了传统方案的局限性:

一、操作平台局限性:要求自始至终必须在SCOUNIX操作系统平台上实施。

二、操作工具局限性:对紧急启动软盘的依赖性太大。万一软盘发生损毁,必须找一台类型相同的机器再制作一套,这就是前面所说的专盘专用的限制。

三、操作对象局限性:必须依靠硬盘根文件系统的支持。即操作者与修改对象(指与超级用户口令有关的信息)被文件系统隔开,操作者不能直接修改对象,只能调用文件系统提供的服务修改。这种方式本是信息科学中倡导的层次化思想的一种体现,在

正常情况下应予称道;但任何事物都是有两面性的,在非常情况下--诸如解决忘记超级用户口令这一类问题时--该方式反而有可能带来麻烦。三大局限性说明了传统解决方案可行性的脆弱和狭窄,也决定了它们作为凌驾于文件系统之上的高层方案所必然具有的弊端。于是,打破这些局限性,探索出一种全新的解决方案,就成为了摆在一切UNIX研究者面前的新课题。

所谓新课题,就是找到一种能够突破传统方案局限性的新方案。究竟从何处下手呢?让我们再来看一看三大局限性。

操作平台局限性似乎不好突破,因为其它操作系统识别不了UNIX的文件系统格式。

操作工具局限性好象就更难了,因为紧急启动软盘既要在UNIX上制作,又要在UNIX上使用,所以如果操作平台局限性突破不了,它就更突破不了。最后看看操作对象局限性。操作对象完全由文件系统管理,操作者必须通过文件系统访问它们。万一文件系统崩溃,那么即使它下面的文件完好无损,操作者也只能认为这些文件已全部丢失--因为文件系统无法访问(例如mount不上来)。其实这个时候还是有办法找到那些文件的,方法就是直接访问物理硬盘。道理很简单:就本质而言,文件系统只不过是一个构筑于物理硬盘之上的逻辑组织,平时我们是通过它来访问物理硬盘的;现在这个组织寿终正寝,不能再为我们服务了,于是我们只好自己动手,丰衣足食。直接访问物理硬盘不但可以使文件失而复得,而且还有另外一个重要意义--突破了操作对象局限性。

操作对象局限性一旦突破,我们就会惊奇地发现突破另外两大局限性简直可以说是顺理成章了。因为虽然其它操作系统识别不了UNIX的文件系统格式,但在任何操作系统上,我们都可以访问物理硬盘;而只要是带有访问物理硬盘功能的软件,都可以成为我们的操作工具。

现在我们要做的仅仅是:找一个大家最熟悉的操作系统和一个最易寻觅的可以访问物理硬盘的软件。

大家最熟悉的操作系统无疑是DOS。可以访问物理硬盘的软件很多,但最易寻觅的莫过DEBUG.EXE。所谓最易寻觅,是因为DEBUG是DOS本身的一条外部命令,可以说只要是在安装了DOS的机器上都可以找到它。对DEBUG略知一二的人可能会指出该命令并

没有提供访问物理硬盘的选项,但请不要忘记DEBUG是DOS提供给用户的一个汇编语言调试程序,我们完全可以利用它编写、调试和执行一个汇编小程序去访问物理硬盘。应该说,这对一个能够取得系统管理员身份的人并不困难。综上所述,在DOS上运行DEBUG来破除UNIX管理员口令,这就是本文提出的解决SCOUNIX超级用户口令被忘记问题的新方案。 新方案的应用新方案已经提出,下面我们来看看它是如何应用于实践的。

----DA0500H表示第一个数据块地址。由于其它12个数据块地址均为0,所以可断定根目录在硬盘上只占了一个数据块。现在我们必须依据DA0500H计算出这个数据块存放在硬盘的第几柱面、第几磁头、第几扇区。计算公式如下:

C=TRUNC(P/(H*S))

C1=C0+C

H1=TRUNC((P-C*H*S)/S)

S1=P-C*H*S-H1*S+1

----其中:

----C1、H1、S1分别为数据块物理地址柱面号、磁头号、扇区号

----P等于数据块地址翻译成十进制数后再乘以2

----H为硬盘磁头数

----S为每磁头扇区数

----C0为根文件系统起始柱面

----C只是一个中间量

----将DA0500H代入上述公式,并根据H=64,S=32,C0=2,可算出C1=3,H1=29,S1=21。因此根目录在硬盘上的物理地址为:3柱面29头21扇。

----用app把它读出来(

CX和DX的赋值应分别改为0315和1D80)。

----读出后用dump命令查看,可以发现偏移1050H至105FH是/etc目录的i-node号和文件名,其中i-node号为22H,即34D。因为每个扇区有8个i-node,所以34号

i-node必定在2柱面0头9扇。


上一页 1 2 下一页

关键词:

评论


相关推荐

技术专区

关闭