Linux下灾难恢复

系统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加上密。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Linux忘记root密码又忘记grub密码怎么办

用rescue重置密码

当我们忘记root密码时,如果GRUB没有设置密码(或者知道GRUB密码时)我们可以用单用户方法来修改密码,当GRUB密码也忘记了,这时我们就得用光盘修改root密码。

  1. 将系统光盘放入光驱,设置光驱引导。
  2. 选择F2进入系统修复,输入命令:linux rescue
  3. 以下出现的几个选择和安装系统时一样。
  4. 当出现这个提示的时候应该记住,他提示的命令:chroot /mnt/sysimage
  5. 下一步就是进入修改密码,我们先行:chroot /mnt/sysimage 不然不能进入可写模式。
  6. 最后运行命令:passwd重置root密码
  7. 重启计算机

设置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
    • 对GRUB界面加密,同时对被引导的系统加密:
      • 在timeout一行下面加一行:password --md5 PASSWORD
      • 在title一行下面加一行:lock
    • 同时存在多个被引导系统,针对特定的系统实例分别加密(不对GRUB操作界面加密):
      • 在title一行下面加一行:lock
      • 在lock一行下面紧贴着再加一行:password ——md5 PASSWORD(注:lock不能单独使用)

以自编程序替代root

vim 2.c
gcc 
reboot 按e进入编辑模式
kali ///linux    init=/目录/
CentOs //
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MBR修复
CIH病毒

备份MBR dd if=/dev/sda of=/mnt/sda.mbr  bs=512 count=1
破坏MBR dd if =/dev/zero of=/dev/sda  bs=1 count=64 skip=446 seek=446
修复mount /dev/sdb1/usb
       dd if=/usb/sda.mbr of=/dev/sda bs count=64 skip=446 seek=446

重启后按ESC,挂载CD。。。选recuse
一路OK

——挂载新硬盘
ls /dev/sd*
sudo fdisk /dev/sdb
n
p
1
w
 sudo mkfs.ext3 /dev/sdb1 //格式化
sudo mount /dev/sdb1 /mnt/sdambr/ //挂在sdb1到sdambr
sudo dd if=/dev/sda of=/mnt/sdambr/sda.mbr bs=512 count=1 /备份
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

 mount /dev/sdb1 /mnt/sysimage

dd if=/mnt/sysimage/sda.mbr of=/dev/sda bs=1 count=64 skip=446 seek=446


1破坏GRUB
dd if=/dev/zero of=/dev/sda bs=446 count=1
2挂载修复光盘
bash-1#chroot /mnt/sysimage
sh-4.1#grub
grub>root(hd0,0)
grub>setup(hd0)
grub>quit

破坏kernel并且恢复
mv /boot/vml(tab) /root
reboot

按住esc 选recuse
一路回车确定
bash-1#chroot /mnt/sysimage
mount /dev/sr0 /media
cd /media/Packages
rpm -ivh —force kernel-2.6(tab) 
ls /boot

破坏init并且恢复
mv /boot/initrd-(tab) /root/
reboot

恢复:
挂载
1 挂载系统安装盘进入援救模式 , 检查 /boot 目录下发现没有镜像文件。
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
■ (CentOS6.0以下版本) sh-4.1# mkinit ( 有的是 mkinitrd)
 ■ sh-4.1# ls

           (CentOS6.0以上版本)解决方案

以下部分内容转载自: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 使用是执行的以下脚本实现的:
sh /path/to/kernel-source/linux-3.0.32/arch/x86/boot/install.sh 3.0.32 arch/x86/boot/bzImage System.map "/boot"

查阅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 
是一个基于ramblock device,是一个大小固定的内存块,可像disk一样格式化和挂载。Ramdisk像所有的block device一样,它需要一个文件系统驱动。此外还有一些弊端,比如如果ramdisk没有满,那么它占有的额外内存不能被使用;如果满了,那么不能进行扩展。
由于cachingramdisk浪费了更多的内存。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会做一些设置,然后返回到kernelInitramfs中的init不会返回到kernel,它可能通过exec转到其他根文件系统。
(4)当转到其他根设备时,initrdpivot_root然后umount ramdisk。但是initramfsrootfs,记不需要pivot_root,又不需要umount,只需要释放所有空间,然后转到其他rootfs即可。
总之,initrd使用了ramdiskinitramfs使用了ramfsInitramfs机制比initrd机制要优越,是一种新的实现方式,我PC用的Ubuntu14.04 Linux 3.16,按道理用的是initramfs,但是名字是initrd.img。
参考:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值