口令问题:
1.重设CentOS5和CentOS6的root口令
当我们忘记root口令而无法进入系统时,可以使用下面的方法重设root口令:
开机出现进度条时快速按任意键,按a键进入编辑状态,此时输入1、S、s或者single等都可进入单用户模式,进入之后输入:
#passwd root
输入两边密码后重启即可
2.为grub菜单加密防止单用户操作(此口令仅对进入单用户模式有效)
#vim /boot/grub/grub.conf
title 前写入:password PASSWORD
其中PASSWORD的生成有以下3种方法:
1).明文:直接写明文密码
2).md5加密:
#grub-md5-crypt
输入密码产生md5值,将这个md5值写进title前:
password --md5 $1$f52CF/$TzksbVRC.dahPpfRN4h3C0
3).sha512加密:
#grub-crypt
输入密码产生sha512值,将这个值写进title前:
password --encrypted $6$50YpSTdKKyWyZNO1$n1dYZeSqNszNwnqJxS5siwJFDThxXmRRPWmtsCA37QUd08/nkWz8Y4pSULpWCgvDop/9hyFVzcj8Sbd24bg0q/
破解grub密码:
重启进入光盘救援模式删除/boot/grub/grub.conf中的密码
系统文件人为破坏后的修复方式:
实验一:破坏MBR bootloader程序并恢复(1stage)
1).破坏引导程序
#dd if=/dev/zero of=/dev/sda bs=1 count=446
2).重启进入光盘救援模式
3).切根
#chroot /mnt/sysimage
4). 法一:
安装grub stage1和stage1_5到/dev/DISK磁盘上,并复制GRUB相关文件到/boot目录下
#grub-install --root-directory=DIR /dev/sda (如果已经切换到根下可省略--root-directory=DIR)
法二:
切根后输入:
#grub #grub> root (hd0,0) #grub> setup (hd0) #grub> quit
5).重启
实验二:破坏1.5stage并修复
1).破坏1.5stage程序
#dd if=/dev/zero of=/dev/sda bs=1 count=10240 seek=512
2).重启进入光盘救援模式
3).
#chroot /mnt/sysimage
4). 法一:
#grub-install /dev/sda
法二:
#grub #grub> root (hd0,0) #grub> setup (hd0) #grub> quit
5).重启
实验三:破坏或者删除grub.conf后的恢复
1).重启系统后系统会进入grub>
之后输入以下即可:
#grub> kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2 #grub> initrd /initramfs-2.6.32-642.el6.x86_64.img #grub> boot
在上述步骤中由于vmlinuz-2.6.32-642.el6.x86_64和initramfs-2.6.32-642.el6.x86_64.img并没有被破坏,所以输入时可补全
2).重启成功后在/boot/grub/下编辑grub.conf:
#vi /boot/grub/grub.conf default=0 timeout=3 title linux #title后可任意填写 root (hd0,0) #此项可以不写,默认是在首块磁盘里查找 kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2 initrd /initramfs-2.6.32-642.el6.x86_64.img
实验四:破坏或者删除/boot/grub目录并恢复
#rm -rf /boot/grub
此实验类似于实验二破坏1.5stage阶段,恢复方法同实验二
1).重启进入光盘救援模式
2).
#chroot /mnt/sysimage
3).
#grub-install /dev/sda
重启进入:
#grub> #grub> kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2 #grub> initrd /initramfs-2.6.32-642.el6.x86_64.img #grub> boot
重启系统,编辑/boot/grub/grub.conf
#vi /boot/grub/grub.conf default=0 timeout=3 title linux #title后可任意填写 root (hd0,0) #此项可以不写,默认是在首块磁盘里查找 kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2 initrd /initramfs-2.6.32-642.el6.x86_64.img
实验五:破坏或者删除/boot目录下的所有文件
#rm -rf /boot/*
进入光盘救援模式
1).
#chroot /mnt/sysimage
2).
#mount /dev/sr0 /mnt
将光盘临时挂载到/mnt上
3).
#rpm -ivh /mnt/Packages/kernel-2.6.32-642.el6.x86_64.rpm --force|replacepkgs 或者: #cp /mnt/isolinux/vmlinuz /boot/ #mkinitrd /boot/initrmfs-`uname -r`.img `uname -r`
第一种方法是将光盘中的内核包进行安装;第二种比较简单,直接将光盘中的内核文件vmlinuz复制过来,再用mkinitrd脚本生成initrmfs文件
4).恢复了内核文件和initrmfs文件后接着恢复grub目录,方法同实验实验四:
#grub-install /dev/sda
重启进入:
#grub> #grub> kernel /vmlinuz root=/dev/sda2 #注意:与实验6不同的是,此阶段从光盘复制过来的内核文件只有文件名而无版本号 #grub> initrd /initramfs-2.6.32-642.el6.x86_64.img #grub> boot
重启系统,编辑/boot/grub/grub.conf
#vi /boot/grub/grub.conf default=0 timeout=3 title linux #title后可任意填写 root (hd0,0) #此项可以不写,默认是在首块磁盘里查找 kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2 initrd /initramfs-2.6.32-642.el6.x86_64.img
实验六:当系统安装在分区上时同时删除/boot/* /etc/fstab并恢复
#rm -rf /boot/* /etc/fstab
进入光盘救援模式
1).恢复fstab文件
#fdisk -l #查看哪个分区最有可能挂载在根上 #mkdir /mnt/root #建立一个挂载根分区的临时目录 #mount /dev/sda2 /mnt/root #假设此前sda2是挂载在根上的,将sda2挂载到临时目录上 #ls /mnt/root #再次查看并确认,如果没有看到根下的那些目录可尝试将sda3,sda4分别挂载,直到成功为止
挂载成功后编辑fatab文件
#vi /mnt/root/etc/fstab /dev/sda2 / ext4 defaults 0 /dev/sda1 /boot ext4 defaults 0 #reboot
之后重启即可
2).接下来恢复/boot/目录,方法同实验五
进入光盘救援模式
1).
#chroot /mnt/sysimage
2).
#mount /dev/sr0 /mnt
3).
#rpm -ivh /mnt/Packages/kernel-2.6.32-642.el6.x86_64.rpm --force|replacepkgs 两个选项二选一
或者:
#cp /mnt/isolinux/vmlinuz /boot/ #mkinitrd /boot/initrmfs-`uname -r`.img `uname -r`
4).恢复了内核文件和initrmfs文件后接着恢复grub目录,方法同实验四:
#grub-install /dev/sda
重启进入:
#grub> #grub> kernel /vmlinuz root=/dev/sda2 #注意:在3)中如果是安装内核rpm包方式,vmlinuz是可以补全版本号的,而用复制isolinux/vmlinuz的方式时,内核文件只有文件名而无版本号 #grub> initrd /initramfs-2.6.32-642.el6.x86_64.img #grub> boot
恢复grub目录后,方法同三:
启动成功后在/boot/grub/下编辑grub.conf:
#vi /boot/grub/grub.conf default=0 timeout=3 title linux root (hd0,0) #此项可以不写,默认实在首块磁盘里查找 kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2 initrd /initramfs-2.6.32-642.el6.x86_64.img
实验七:当系统安装在逻辑卷上时同时删除/boot/*、/etc/fstab并恢复
#rm -rf /boot/* /etc/fstab
光盘救援模式
1).恢复fstab文件
#fdisk -l #查看根最有可能的挂载逻辑卷 #lvs
#lvdisplay #列出所有逻辑卷 #vgchange -ay #激活所有卷组 #mount /dev/vg0/root /mnt/sysimage #将根挂载在根目录上 #ls /mnt/sysimage #查看根上的文件
接下来编辑fstab文件
#vim /mnt/sysimage/etc/fstab /dev/vg0/root / ext4 defaults 0 0 /dev/vg0/var /var ext4 defaults 0 0 /dev/vg0/usr /usr ext4 defaults 0 0 /dev/vg0/swap swap swap defaults 0 0 /dev/sda1 /boot ext4 defaults 0 0 #reboot
2).重启再次进入光盘救援模式
#chroot /mnt/sysimage #grub-install /dev/sda #rpm -ivh /mnt/cdrom/Package/kernel-2.6.32-642.el6.x86_64.rpm
或者
#cp /mnt/isolinux/vmlinuz /boot/ #mkinitrd /boot/initramfs-`uname -r`.img `uname -r`
重启系统进入:
#grub> #grub> kernel /vmlinuz root=/dev/sda2 #grub> initrd /initramfs-2.6.32-642.el6.x86_64.img #grub> boot
重启系统后编辑grub.conf文件
3).编辑grub.conf文件
#vi /boot/grub/grub.conf default=0 timeout=3 title mageinux kernel /vmlinuz root=/dev/sda2 initrd /initramfs.img