CentOS 6或7 啟動故障修復及root密碼破解
CentOS 6啟動流程修復:
實驗一:刪除initramfs-2.6.32-754.el6.x86_64.img
進行恢復
該文件很重要initramfs-2.6.32-754.el6.x86_64.img,作為啟動系統的重要文件,加載文件系統的驅動。
開機按esc進入救援模式
chroot /mnt/sysimage # 切換根
mkinitrd /boot/ininramfs-`uname -r`.img `uname -r` # 修復此文件
sync sync sync # 同步到磁盤中
exit
reboot
實驗二:破壞扇區的446字節,進行修復
准備
dd if=/dev/zero of=/dev/sda bs=1 count=446 # 破壞扇區的446字節
hexdump -C /dev/sda -n 512 -v # 查詢出前446字節已被破壞
開機按esc進入救援模式
chroot /mnt/sysimage # 切換根
grub-install /dev/sda # 修復sda磁盤設備
sync sync sync # 同步到磁盤中
exit
reboot
實驗三:破解CentOS 6密碼
1.啟動grub界面
2.輸入e 添加1 進入單用戶模式
3.輸入passwd根據提示修改密碼
4 reboot
CentOS 6添加單用戶模式密碼,無法破解:
[root@centos6 ~]# grub-crypt #創建單用戶模式密碼
Password: #輸入口令
Retype password: #輸入口令
$6$9M4MYaaShQLTXYAU$cIFuNc7SpKZw1NLCBG3/yoi6UHAWiMNxzBtDl3TGYzsmx3lRDjNRoRbNLEN8v8UsWldud2HHFRVqhbSFsqdly0
光盤破解CentOS 6密碼:
進入救援模式
chroot /mnt/sysimage
vim /boot/gub/grub.conf # 注釋掉passwd行即可
reboot
實驗四:刪除grub.conf
- 開機錯誤提示直接跳入到grub界面去輸入內容:
kernel /vmlinuz-2.6.32-2754.e16.x86_64 root=/dev/sda2
initrd /initramfs-2.6.32-275.e16.86_64.img
- 臨時進入機器內,修改配置文件,保存:
# vim /boot/grub/grub.conf
default=0
timeout=3
kernel /vmlinuz-2.6.32-2754.e16.x86_64 root=/dev/sda2
initrd /initramfs-2.6.32-275.e16.86_64.img
- 保存退出,修復完畢。
實驗五:刪除/boot/
下的所有文件,需要光盤修復
- 開機按esc進入救援模式:去修復內核啟動相關文件
mkdir /mnt/cdrom # 新建臨時掛載文件
mount /dev/sr0 /mnt/cdrom # 掛載光盤
rpm -ivh /mnt/cdrom/Packages/kernel.... --root=/mnt/sysimage(指定安裝路徑) --force(強制安裝)
- 修復grub文件
chroot /mnt/sysimage # 切換根
grub-install /dev/sda # 修復此文件
sync sync sync # 同步到磁盤中
exit
reboot
- 修復grub.conf文件
# vim /boot/grub/grub,conf
default=0
timeout=3
kernel /vmlinuz-內核版本 root=/dev/sda2
initrd /initramfs-內核版本.img
- 保存退出,修復完畢。
實驗六:刪除/boot/
下的所有文件,且沒有/etc/fstab
文件,需要光盤修復
-
開機按esc進入救援模式:去修復
/etc/fstab
文件 -
mkdir /mnt/rootfs
新建臨時掛載文件 -
將設備分別掛載,確定root根分區:
mount /dev/sda1 /mnt/rootfs # 確定/dev/sda1為boot分區
mount /dev/sda2 /mnt/rootfs # 確定/dev/sda2為/分區
mount /dev/sda3 /mnt/rootfs # 確定/dev/sda3為data分區
mount /dev/sda5 /mnt/rootfs # 確定/dev/sda5為swap分區
-
最后確定/dev/sda2為根分區進行掛載
-
mount /dev/sda2 /mnt/rootfs
掛載/dev/sda2設備 -
添加文件內容:
# vim /mnt/rootfs/etc/fstab
/dev/sda1 /boot ext4 defaults 0 0
/dev/sda2 / ext4 defaults 0 0
/dev/sda3 /data ext4 defaults 0 0
/dev/sda5 swap swap defaults 0 0
- 重啟按esc進入救援模式:去修復內核啟動相關文件
mkdir /mnt/cdrom # 新建臨時掛載文件
mount /dev/sr0 /mnt/cdrom # 掛載光盤
rpm -ivh /mnt/cdrom/Packages/kernel.... --root=/mnt/sysimage(指定安裝路徑) --force(強制安裝)
- 修復grub文件
chroot /mnt/sysimage # 切換根
grub-install /dev/sda # 修復此文件
sync sync sync # 同步到磁盤中
exit
reboot
- 修復grub.conf文件
# vim /boot/grub/grub,conf
default=0
timeout=3
kernel /vmlinuz-內核版本 root=/dev/sda2
initrd /initramfs-內核版本.img
- 保存退出,修復完畢。
CentOS 7故障修復流程:
實驗一:刪除/boot/grub2/
下的文件進行修復:
-
進入救援模式:
-
然后切換根目錄:
chroot /mnt/sysimage
- 生成grub2文件
grub2-install /dev/sda
- 將grub.cfg啟動配置文件生成
grub2-mkconfig -o /boot/grub2/grub.cfg
-
sync sync sync sync 同步寫入磁盤中
-
reboot
實驗二:刪除/boot/
下的所有文件,需要光盤修復
-
進入救援模式rescue
-
切換根目錄:
chroot /mnt/sysimage
- 進行臨時掛載
mount /dev/sr0 /mnt
- 修復內核里邊的相關啟動文件
rpm -ivh /mnt/Packages/kernel-3.10.0-957.el7.x86_64.rpm --force
- 修復grub2文件內容
grub2-install /dev/sda
- 最后修復grub.cfg啟動的相關配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
-
sync sync sync sync 寫入磁盤保存
-
reboot重啟。
實驗三:破解CentOS 7密碼
- 首先重啟,在grub菜單界面,按
↑↓
鍵,選擇第一項,同時按下e
鍵進行編輯。
- 在此界面找到
ro
替換為rw init=/sysroot/bin/sh
,修改完成之后,按下Ctrl+x
進入緊急模式
原理:啟動一個shell環境,系統並沒有真正啟動。
- 切換根目錄
chroot /sysroot
,修改密碼。
Linux命令需要在根目錄下執行。
chroot,即 change root directory (更改 root 目錄),在使用 chroot 之后,系統的目錄結構將以指定的位置作為/
位置,系統讀取到的目錄和文件將不在是舊系統根下的而是新根下(即被指定的新的位置)的目錄結構和文件。
修改密碼后,如果開啟了selinux服務,需要在根下創建文件/.autorelabel
,最后退出跟系統,重啟。
chroot /sysroot
passwd
touch /.autorelabel
exit
reboot
改進方法:
-
將
ro
替換為rw init=/bin/bash
,刪除rhgb quiet
-
按
Ctrl+X
進入緊急模式 -
如果亂碼設置
LANG=en
-
passwd
修改密碼 -
如果開啟selinux,需要創建文件
touch /.autorelable
-
exec /sbin/init
直接啟動系統
CentOS 7添加grub引導加載程序密碼,無法破解:
[root@centos7 ~]# grub2-setpassword # 創建密碼命令
[root@centos7 ~]# cat /boot/grub2/user.cfg # 保存密碼的文件位置
GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.978E5C106D6A102F6912FF51C37CE674483C0AAE52B84EC4DBB6C08AF818CE83BCA8A9743F31A72AA0BD0AB644A66D34AA774EEDDF913DE22C71A6C4A2826860.2B0701EF272ADE6E518EAA613F966F3C1F5C1150B2F61A04FCC34D2588A1FAB2F75922AB8A5DC5C02AA1A84F5EEE919F8C3DE5526FBCB46EA85082EE98CD6919
[root@centos7 ~]# mv /boot/grub2/user.cfg /root # 移走密碼文件,密碼即失效。