系统CentOS6.5
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
root密码恢复
- 重启系统reboot,按住e进入Grub启动菜单
- 选择第二项,按e
- 找到linux那一行,最后添加 single,然后输入数字1或者按回车返回
- 按b重新启动系统
- 进入系统后passwd修改密码
- reboot重启
Linux下root密码找回方法转载自http://www.cnblogs.com/dying/archive/2013/12/02/3453795.html
============================================================================
linux的root享有至高无上的权力,一旦root密码忘记或者被盗,是一件非常头痛的事情,那么怎么样才能找回root的密码呢,本人把其总结如下:
(一)Linux 系统密码破解
1.在grub选项菜单按e进入编辑模式
2.编辑kernel那行 /init 1 (或/single)
3.按B重启
4.进入后执行下列命令
root@#passwd root (配置root的密码)
Enter new unix password:输入新的密码
root@#init 6
============================================================================
(二)debian linux 系统密码破解
1.在grub选项菜单’Debian GNU/Linux,...(recovery mode)’,按e进入编辑模式
2.编辑kernel那行最后面的 ro single 改成 rw single init=/bin/bash,按b执行重启
3.进入后执行下列命令
root@(none)#mount -a
root@(none)#passwd root
root@(none)#reboot
============================================================================
(三)Freebsd 系统密码破解
1.开机进入引导菜单
2.选择每项(按4)进入单用户模式
3.进入之后输入一列命令
root@#mount -a
root@#fsck -y
root@#passwd(修改密码命令)
root@#root(要破解密码的用户名)
Enter new unix password:
root@#init 6 (重启)
============================================================================
(四)Solaris 系统密码破解 bitscn.com
1.在grub选项菜中选择solaris failasfe 项
2.系统提示Do you wish to have it mounted read-write on /a ?[y,n,?] 选择y
3.就进入单用户模式
4.输入下列命令
#passwd
#New passwd:输入新的密码
#Re-enter New passwd:在次输入新的密码
#init 6 (重启) bitscn.com
============================================================================
(五)NetBsd 系统密码破解
1.开机:当出现提示符号并开始倒数五秒时, 键入以下指令:
> boot -s (进入单用户模式命令)
2.在以下的提示符号中
Enter pathname of shell or RETURN for sh:
按下 Enter。
3.键入以下指令:
# mount -a
# fsck -y
4.使用 passwd 更改 root 的密码。
5.使用 exit 指令进入多人模式。
============================================================================
(六)debian linux系统密码破解
1、在Grub的引导装载程序菜单上,选择你要进入的条目,键入 “e” 来进入编辑模式;
2、在第二行(类似于kernel /vmlinuz-2.6.15 ro root=/dev/hda2 ),键入”e”进入编辑模式;
3、在句末加上”init=/bin/bash”,回车;
4、按“b”启动系统。
这样我们即可获得一个bash的shell,进入shell后,根分区的挂载模式默认是只读,我们要将其改为可写,否则不能更改root密码:
mount -no remount,rw /
passwd root
sync
mount -no remount,ro /
reboot
这样即可成功更改debian的root用户的密码。
============================================================================
(七)
1.在启动linux的时候按Ctrl+X,在bash#提示符下输入linux single 或 linux 1,然后在
bash# 输入 passwd root 就可以更改密码了! 设置完后#init 6 重启 OK.
也可以在:
2.在启动linux的时候按Ctrl+X,在bash#提示符下输入:vi /etc/passwd,找到root,把里面的root:x:....的“x”删掉。就删除了密码!
============================================================================
(八)
一、关于lilo
1. 在出现 lilo: 提示时键入 linux single 画面显示 lilo: linux single
2. 回车可直接进入linux命令行
3. 用password命令修改密码
二、关于 grub
1. 在出现grub画面时,用上下键选中你平时启动linux的那一项,然后按e键
2. 再次用上下键选中你平时启动linux的那一项(类似于kernel/boot/vmlinuz-2.4.18-14 ro root=LABEL=/),然后按e键
3. 修改你现在见到的命令行,加入single,结果如下:
kernel /boot/vmlinuz-2.4.18-14 single ro root=LABEL=/ single
4. 回车返回,然后按b键启动,即可直接进入linux命令行
5.用password命令修改密码
============================================================================
(九)
1、把系统安装光盘插入,重启机器,启动时迅速按下Del键,进入CMOS,把启动顺序改为光盘先启动,这样就启动了Linux安装程序,按F5,按提示打入Linuxrescue回车,进入救援模式,接下来是选择语言及键盘,直接回车即可,程序提示已经把硬盘上的Linux系统安装到了/mnt/sysimage下,然后出现了超级用户提示符#。
2、进入到硬盘etc目录下:cd/mnt/sysimage/etc,先做备份防不测:
cpshadowshadow.old修改shadow文件的属性为可写:chmod+wshadow然后用vi修改之:找到含root用户信息的那一行:root:....:,前两个冒号之间就是加密的密码,把它删除掉(冒号不能删),存盘退出。这样root的密码就为空了。
不会用vi的用户可以采取如下方法:找一张DOS盘插入软驱,把Shadow拷贝到DOS盘上:mcopyshadowa:/然后在Windows下用附件中的记事本修改之,注意打开文件类型一定要选所有文件(*.*),存盘退出。最后再拷回:
mcopya:/shadowmnt/sysimage/etc
3、把Shadow的属性改回只读:chmod-wshadow,最后输入Exit退出,取出光盘。
4、为安全起见,重启后应在终端窗口中再给root加上密。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
用rescue重置密码
当我们忘记root密码时,如果GRUB没有设置密码(或者知道GRUB密码时)我们可以用单用户方法来修改密码,当GRUB密码也忘记了,这时我们就得用光盘修改root密码。
- 将系统光盘放入光驱,设置光驱引导。
- 选择F2进入系统修复,输入命令:
linux rescue
- 以下出现的几个选择和安装系统时一样。
- 当出现这个提示的时候应该记住,他提示的命令:
chroot /mnt/sysimage
- 下一步就是进入修改密码,我们先行:chroot /mnt/sysimage 不然不能进入可写模式。
- 最后运行命令:passwd重置root密码
- 重启计算机
设置grub密码
为grub密分为二种,一是明文,二是采用MD5算法的加密。
- 用grub-md5-crypt成生GRUB的md5密码
通过grub-md5-crypt对GRUB的密码进行加密码运算,比如我们想设置grub的密码是123456,所以我们先要用md5进行对123456这个密码进行加密。
1
2
3
4
5
|
/sbin/grub-md5-crypt
Password: 在这里输入123456
Retype password: 再输入一次123456
$1$7uDL20$eSB.XRPG2A2Fv8AeH34nZ0
|
\(1\)7uDL20$eSB.XRPG2A2Fv8AeH34nZ0
就是通过grub-md5-crypt进行加密码后产生的值。这个值我们要记下来。
- 更改 /etc/grub.conf
所以我要在/etc/grub.conf中加入password --md5 \(1\)7uDL20$eSB.XRPG2A2Fv8AeH34nZ0
这行,以及lock,应该加到哪呢,请看下面的更改实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
default=1
timeout=10
splashimage=(hd0,7)
/boot/grub/splash
.xpm.gz
password --md5 $1$7uDL20$eSB.XRPG2A2Fv8AeH34nZ0
# 增加密码设置
title Fedora Core (2.4.22-1.2061.nptl)
lock
# 增加锁定设置
root (hd0,7)
kernel
/boot/vmlinuz-2
.4.22-1.2061.nptl ro root=LABEL=/
initrd
/boot/initrd-2
.4.22-1.2061.nptl.img
title WindowsXP
rootnoverify (hd0,0)
chainloader +1
|
lock的意思就是把Redhat Fedora锁住了。如果启动时会提示错误。这时就应该按P键,然后输入密码就行了。
- 使用password,lock命令实现几种加密方法如下:
- 单纯对GRUB界面加密,而不对被引导的系统加密:
- 在timeout一行下面加一行:
password --md5 PASSWORD
- 在timeout一行下面加一行:
- 对GRUB界面加密,同时对被引导的系统加密:
- 在timeout一行下面加一行:
password --md5 PASSWORD
- 在title一行下面加一行:
lock
- 在timeout一行下面加一行:
- 同时存在多个被引导系统,针对特定的系统实例分别加密(不对GRUB操作界面加密):
- 在title一行下面加一行:lock
- 在lock一行下面紧贴着再加一行:
password ——md5 PASSWORD
(注:lock不能单独使用)
- 单纯对GRUB界面加密,而不对被引导的系统加密:
125 ls /dev/sd*
126 sudo fdisk /dev/sdb
127 mkfs.ext3 /dev/sdb1
128 sudo mkfs.ext3 /dev/sdb1
129 ls /dev/sd*
130 mount /dev/sdb1 /mnt/sdambr/
131 sudo mount /dev/sdb1 /mnt/sdambr/
132 df -kh /mnt/sdambr/
133 history
|
■ bash-4.1# chroot /mnt/sysimage
■ sh-4.1# ls /boot
■ 2 重新生成镜像文件 initramfs-2.6.32-71.el6.x86_64.img 。
sh-4.1# cd /boot
■ sh-4.1# ls
以下部分内容转载自:http://blog.sina.com.cn/s/blog_553c6d4e0101gboo.html centos 6下自己编译linux内核,完了创建initrd文件,依据以前的的经验mkinitrd #mkinitrd -v ../initramfs-3.0.32.img 3.0.32 但是输出的消息却与以前的版本不太一样,好像打包进去了很多模块,生成花费时间也很长,完成后,看initramfs文件有100多M,OMG,这么大的文件 /boot目录可放不下(/boot挂在单独的分区下,该分区只有100M大小)。 经过N久的折腾,才发现原来redhat/centos6不再使用原来的mkinitrd,而是使用dracut代替了,mkinitrd实际上只是调用dracut的功能。研究dracut才弄明白,如果只是生成用于grub引导本地硬盘上的linux,需要使用一个参数--hostonly ,这样dracut就不会把过多不必要的模块加载到initramfs.img里,如下 dracut -f -v --hostonly -k '/lib/modules/3.0.32' ../initramfs-3.0.32.img 3.0.32 这是通过查阅kernel 编译安装的 make install 使用是执行的以下脚本实现的: 查阅arch/x86/boot/install.sh 文件, 它调用/sbin/installkernel ,然后是/sbin/new-kernel-pkg ,接着是/sbin/dracut 通过分析 /sbin/new-kernel-pkg ,其中290行有如下代码 if [ -n "$dracut" ]; then tool="/sbin/dracut $dracuthostonly -f $initrdfile $version" else tool="/sbin/mkinitrd --allow-missing -f $initrdfile $version" fi
其中变量$dracuthostonly的值是 -H ,在dracut参数里与 --hostonly 同义。
|
以下内容转载自:http://blog.csdn.net/fickyou/article/details/51331911
问题:
当Linux内核启动时,必须找到并执行第一个用户程序,通常是init。用户程序存放在文件系统,故Linux必须找到并挂载第一个文件系统。
通常,可用的文件系统都列在/etc/fstab,所以mount可以找到它们。但是/etc/fstab本身存在与文件系统中。因此,这类似鸡生蛋蛋生鸡的问题。
为解决该问题,内核开发者建立了内核命令列表选项root=,用来制定root文件系统存在于哪个设备上。
之前root通常位于软盘和硬盘上的分区。如今root文件系统可存在于各种不同类型的硬件中,如flash等等。同时root文件系统也可能被进行各种形式的压缩,加密等等。
如果在内核中加入所有这些特殊案例,可以做到,但是就像用汇编语言写web软件。
解决方法 Linux2.6将一个小的ram-based initial root filesystem (initramfs)包进内核,如果这个文件系统包含一个init程序,内核将执行它。寻找其他文件系统并执行其他程序不再是内核的事情,而是新程序的工作。 Initramfs不需要很多功能。
Ramdisk
是一个基于ram的block device,是一个大小固定的内存块,可像disk一样格式化和挂载。Ramdisk像所有的block device一样,它需要一个文件系统驱动。此外还有一些弊端,比如如果ramdisk没有满,那么它占有的额外内存不能被使用;如果满了,那么不能进行扩展。
由于caching,ramdisk浪费了更多的内存。Linux设计为缓存所有从block device中读取或写入的文件和目录,ramdisk(实际上也是在内存里)和caching一起,浪费很多内存。
Initrd
Boot loader Init Ram disk缩写,是一种机制,装载一个临时根文件系统到内存中,作为Linux startup process的一部分,为实际根文件系统的加载做准备的
对于2.4或更早的kernel来说,使用的是该方法。
Ramfs
后续Linus Torvalds有一个巧妙的想法:Linux的缓存是否可以被挂载为一个文件系统,只要保持文件在缓存中,且不将它们清除,直到它们被删除或系统重启。Linus写了一小段程序将缓存包起来,称为ramfs,其他kernel的开发者建立一个加强版本称为 tmpfs(它可以写数据到 swap,及限制挂载点的大小),initramfs 就是 tmpfs 的一个实例。
Initramfs
Init ramfs缩写,是一种机制,装载一个临时根文件系统到内存中,作为Linux startup process的一部分,为实际根文件系统的加载做准备。
比较:
(1)initrd 通常是一个单独的文件,initramfs通常和linux kernel映像在一起。
(2)Initrd进行了gzip压缩,有文件系统格式,比如ext2,需要kernel包含对于的驱动。然而initramfs是一个gzip cpio压缩,类似tar不过更简单。内核的cpio提取代码非常小。
(3)Initrd中的init会做一些设置,然后返回到kernel。Initramfs中的init不会返回到kernel,它可能通过exec转到其他根文件系统。
(4)当转到其他根设备时,initrd将pivot_root然后umount ramdisk。但是initramfs是rootfs,记不需要pivot_root,又不需要umount,只需要释放所有空间,然后转到其他rootfs即可。
总之,initrd使用了ramdisk,initramfs使用了ramfs。Initramfs机制比initrd机制要优越,是一种新的实现方式,我PC用的Ubuntu14.04 Linux 3.16,按道理用的是initramfs,但是名字是initrd.img。
参考:
|