Linux系统密码防护与系统修复思路

案例1:自己忘记root密码,可进单用户模式进行修改root密码;

Linux系统密码防护与系统修复思路

案例2:服务器在公共场合,为了防止有人进入单用户模式**root密码,可先对grub引导进行加密,为了更加安全可对启动内核也加密:

编辑/etc/grub.conf文件,添加编辑grub启动菜单的密码和启动内核密码:

Linux系统密码防护与系统修复思路

 Linux系统密码防护与系统修复思路

这样在编辑grub启动菜单之前要输入制定密码,启动内核之前也要输入指定密码。

案例3:忘记了grub启动编辑密码和内核启动密码的解决办法:

可通过光盘的救援模式进行修复:

1、  从光盘启动,选择RescueInstalled system进入救援模式;

2、  根据提示选择语言和键盘类型;

3、  选择是否配置网络,不需要配置;

4、  根据硬盘上提示,将文件系统挂载在/mnt/sysimage/下,选continue以读写模式加载;

5、  用chroot /mnt/sysimage命令切换系统根目录;

6、  然后vi/etc/grub.conf修改文件,将密码行删掉,exit退出,重启即可;

Linux系统密码防护与系统修复思路
Linux系统密码防护与系统修复思路

案例4:如果grub被破坏,系统无法启动,则需要用光盘的救援模式进行重装grub:

通过光盘的救援模式进行修复:

1、  从光盘启动,选择RescueInstalled system进入救援模式;

2、  根据提示选择语言和键盘类型;

3、  选择是否配置网络,不需要配置;

4、  根据硬盘上提示,将文件系统挂载在/mnt/sysimage/下,选continue以读写模式加载;

5、  用chroot /mnt/sysimage命令切换系统根目录;

6、  使用fdisk –l /dev/sda命令确认启动程序的安装位置是在/dev/sda;

7、  使用grub-install/dev/sda命令安装grub引导程序到磁盘/dev/sda的mbr扇区;

8、  Exit退出重启。


Linux系统启动故障修复案例:

 

登录linux系统之后,依次执行以下命令人为破坏当前linux系统:

#cd /

#umount /boot

#rm –fr /boot                   删除/boot目录,此目录包含grub有关的文件和内核文件

#rm –fr /etc/inittab              删除init表,此文件定义了系统运行级别;

#rm –fr /etc/rc.d/rc.sysinit        删除init运行级别脚本文件;

#rm –fr /etc/rc.d/rc.local         删除开机脚本文件;

#mv /etc/fstab /etc/fstab.bak     备份系统挂载表fstab文件;

#sync

#reboot

此时,linux系统已经瘫痪,重启已无法正常进行了。。。

 

修复思路:fstab àkernelà grubàinit

通过rhel6光盘引导启动,进入rescue installed system修复模式;

进入修复模式时,选择语言和键盘类型,直接回车;

之后选择是否配置网络,选择否,因为修复系统用不到网络;

然后会提示:Rescue程序将查找当前硬盘上是否有已安装的linux系统,如果找到的话就自动挂载到/mnt/sysimage下,Rescue程序搜索硬盘上的linux分区;搜索结果显示找不到linux分区,这是因为/etc/fstab文件被删除了,所以导致系统无法读取linux分区,此时需要恢复/etc/fstab文件:

#fdisk –l 查看磁盘分区:

在结果中可以看到系统分区有两个/dev/sda1和/dev/sda2。/dev/sda1是/boot分区,/dev/sda2是LVM分区;

#lvm vgchange –ay 命令可告诉系统建立相关的device-mapper,这样就可以看到/dev/mapper/VGname-LVname的设备文件;

从/dev/mapper/VGname-LVname中即可找到根分区;

此时,要挂载/根分区,恢复/etc/fstab文件:

#mkdir test

#mount –t ext4/dev/mapper/vg_redhat6-lv_root /test 挂载根分区到/test目录下;

#cp /test/etc/fstab.bak/test/etc/fstab  还原恢复fstab文件,如果fstab没备份,可现写一个;

#reboot  重启系统;

 重启之后,再次进入Rescue系统,此时Rescue程序会根据fstab文件将linux分区挂载到/mnt/sysimage目录下;

此时,#chroot /mnt/sysimage命令可以切换至原来系统,可操作原系统的文件,以恢复被破坏的文件;

#exit 退回Rescue模式下;

#mount /dev/sr0 /mnt/source 挂载关盘到/mnt/source目录下;

#rpm –ivh /mnt/source/Packages/kernel-2.6.32-573.el6.x86_64.rpm–root=/mnt/sysimage –force 安装kernel文件可以修复三个内核文件;此时修复了内核文件,接下来修复grub程序;

  修复grub程序:

#chroot /mnt/sysimage

#grub-install /dev/sda   安装grub程序到/deb/sda

#ls /boot/grub   查看grub目录下是否存在grub.conf文件,如果没有就手动编辑一个;

#vi /boot/grub/grub.conf 内容如下:

Linux系统密码防护与系统修复思路

保存退出,grub修复完成。

 修复启动脚本文件:

#rpm –qf /etc/inittab      查询包含inittab文件的软件包;

#rpm –qf /etc/rc.d/rc.sysinit  查询包含rc.sysinit文件的软件包;

#rpm –qf /etc/rc.d/rc.local     查询包含rc.local文件的软件包;

查询得知,要修复的文件都包含在initscripts-9.03.49-1.el6.x86_64.rpm这个软件包里;

接下来要把文件从这个RPM包里分离出来,并还原到/etc目录下:

#exit

#cp /mnt/source/Packages/initscripts-9.03.49-1.el6.x86_64.rpm/mnt/sysimage/tmp

#chroot /mnt/sysimage

#cd tmp

#rpm2cpio initscripts-9.03.49-1.el6.x86_64.rpm| cpio –imd  解压软件包到当前目录;

#cd etc

#cp inittab /etc/

#cp rc.sysinit /etc/rc.d/

#cp rc.local /etc/rc.d

此时修复已经完成,重启即可恢复系统;过程中可能有其他未提到的问题,需要视情况上网查询解决。