BBS水木清华站∶精华区
----midi----
Linux中,root口令丢了,完全没必要重装.解决办法:用boot盘和root盘启动,进入到
安装状态,然后把文件系统mount到一个目录里,如/mnt里,随后修改/etc/passwd即可.
======================
上面的是老斑竹收集的,是针对Slackware的用户的。 但是随着其他发布的广泛
应用,相应地就产生了其他的不同的解决方案, 所以现在增补进来。
感谢yanglc, chenl, djq, goqd, scaner他们的问题和答复。 //bow
有很多资料可以到找BootPrompt-HOWTO来看的。
Linuxrat 于1999.11.22
======
1. 如果您使用LILO做引导器:
在LILO boot:提示后面键入linux single或者linux 1. 这个linux指的就是
您给Linux的一个标识名称(lable), 在LILO boot:提示的时候敲打TAB键是
可以看到这个label的。一般默认是linux的。single或者1是表示单用户模式。
这样的话, LILO就会把这个参数传递给/sbin/init这个程序, 然后就进入
单用户模式, 这时一般情况下您是不会看到login:之类的提示的, 而是出现
bash#这样的提示, 证明您已经进入Linux了。然后就passwd来修改root密码了。
或者vi /etc/passwd. 如果您在/etc/目录下还发现有个shadow文件, 那么
您就直接修改/etc/shadow而不要管/etc/passwd. 清除掉root的密码段, 请
看例子:
/etc/passwd:
root:x:0:0:root:/root:/bin/bash
^有这个x就证明您已经使用了影子加密, 可以找到/etc/shadow文件的。
/etc/shadow:
root:Kecg.kcFQZXFY:10875:0:99999:7:-1:-1:134534592
^^^^^^^^^^^^^关键就是两个冒号":"之间的这些字符, 清除掉就行了。
可别忘了存盘了哦。 :-) 很简单吧?
上面说到了,一般强制使用single mode是看不到login:提示的, 但是对于
SuSE, Caderal Open Linux来讲,还是需要密码的, 怎么办呢? 请看第3).
2. 如果不是安装LILO到MBR上, 另外还安装了一个M$-DOG或者M$-Windoze9x
那么您就使用loadlin.exe的办法从硬盘启动。 需要的两个文件是:
loadlin.exe和vmlinuz, 如果可能, 还可以有一个rescue.img文件。这些文件
可以在光盘的dosutils, dosutils/autoboot里面找到, 或者images. 请按照
以下格式运行, 同时保证您指定的文件的路径是符合您的情况的:
loadlin.exe vmlinuz root=/dev/hdXY 1 rw
解释: /dev/hdXY当中的XY是表示您的Linux的根盘所在分区, 也就是root
partition. 比如hda1, hda3, hda6, hdb2, hdc5, hdd5, sda1之类的。
数字 1 的意义就是指定进入单用户模式,跟前面所提到的是一样的, 所以也
可以使用s或者single来代替。 rw呢,就是让系统进去之后能够进行能够读写
(read and write)。 这样的话就能够以单用户模式进入系统了。 root密码的
改法跟步骤1)是一样的。
如果忘了加rw这个参数,那么系统就将磁盘设备设置成为ro(Read-Only)只读
模式。 其实也不必担心,可以不要重新启动机器。 进入单用户模式之后,
运行mount命令, 格式如下:
mount -n -o remount,rw /
这个指令可以在/etc/rc.d/rc.sysinit里面找到,如果忘记了的话,不要害怕,
cd /etc/rc.d; grep 'remount' * 就可以找到了。
接着的步骤就是运行passwd或者vi修改密码文件啦。
3. 指定单用户仍然需要密码的情况, 指定参数为init=/bin/bash
对于SuSE, COL等发行版本来说,无论哪个模式都是需要密码的。预测将来这
个特性会成为标准设置。所以请大家在安装过程当中务必制作安装程序要求
创建的系统盘,“不怕一万,只怕万一”呀。没有系统盘,就试验以下方法:
LILO为引导器的: 在LILO boot:提示后面输入 linux init=/bin/bash rw
使用loadlin为引导器: vmlinuz root=/dev/hdXY rw init=/bin/bash
进入系统之后您就可以执行passwd或者修改密码文件了。
解释:指定内核自检完毕后控制权直接转交给/bin/bash这个命令解释器,绕过
其他的程序,比如/etc/rc.d/rc, /etc/rc.d/rc.sysinit...., 以可读写
状态进入系统。
关于这个参数的使用和原理,可以参见BootPrompt-HOWTO和内核源码。
BBS水木清华站∶精华区