CentOS7下实验之手动删除动态链接库文件并用光盘救援模式恢复系统实验

1.实验说明

        Linux下的链接库文件分为静态链接库和动态链接库的文件;静态链接库的特点是把程序对应的依赖库复制一份到包并嵌入程序包,在Linux中一般为.a后缀的文件,升级难,需要重新编译,占用较多空间,迁移容易;动态链接库的特点是只把依赖加做一个动态链接,占用较少空间,升级方便,在Linux中一般为.so后缀的文件;通过本实验加深对动态链接库文件的作用理解和初步了解CentOS7的光盘救援模式的使用。

2.实验环境

  VMware Workstation 12.0.0 build-2985596 CentOS-7-x86_64-Everything-1611.iso

3.正文

  • 1.使用type命令查看命令ls、mv、cp的命令类型及命令执行路径
[root@centos7 ~]# type -a ls mv cp # 这三个命令都是别名,其原始命令是外部命令
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls
mv is aliased to `mv -i'
mv is /usr/bin/mv
cp is aliased to `cp -i'
cp is /usr/bin/cp
  • 2.使用ldd命令查看命令ls、 mv、cp运行需要依赖那些动态链接文件
[root@centos7 ~]# ldd /usr/bin/ls /usr/bin/mv /usr/bin/cp
/usr/bin/ls:
    linux-vdso.so.1 =>  (0x00007ffcc9b87000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fbdcad4e000)
    libcap.so.2 => /lib64/libcap.so.2 (0x00007fbdcab49000)
    libacl.so.1 => /lib64/libacl.so.1 (0x00007fbdca93f000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fbdca57e000)
    ...(中间省略)...
/usr/bin/mv:
    linux-vdso.so.1 =>  (0x00007ffe297ea000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fddb46fc000)
    libacl.so.1 => /lib64/libacl.so.1 (0x00007fddb44f3000)
    libattr.so.1 => /lib64/libattr.so.1 (0x00007fddb42ed000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fddb3f2c000)
    ...(中间省略)...
/usr/bin/cp:
    linux-vdso.so.1 =>  (0x00007ffc2728b000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f39f6fd0000)
    libacl.so.1 => /lib64/libacl.so.1 (0x00007f39f6dc7000)
    libattr.so.1 => /lib64/libattr.so.1 (0x00007f39f6bc1000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f39f6800000)
    ...(后面省略)...
  • 3.从上面实验,我们可以发现ls、mv、cp命令的运行都需要依赖/lib64/libc.so.6文件,我们可以对此文件进行操作,将其移动到/tmp目录下,看下系统有什么反应。
[root@centos7 ~]# mv /lib64/libc.so.6 /tmp
[root@centos7 ~]# cd /lib64
[root@centos7 lib64]# ls
ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
[root@centos7 lib64]# bash
bash: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
[root@centos7 lib64]# reboot
reboot: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
[root@centos7 lib64]# poweroff
poweroff: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
  • 4.从上面实验,我们可以发现一些我们平时常用的命令都运行不了,连关机都关不了,用VM关闭CentOS7,虚拟机(M)–>电源–>关机(O),然后通过VM开启CentOS7.会发现系统一直出现

  • 5.虚拟机的虚拟光驱加载CentOS7安装盘,虚拟机(M)–>设置(Ctrl+D)–>硬件–>CD/DVD(IDE)–>连接勾选使用ISO镜像(M)–>浏览选择已下载的CentOS系统镜像–>设备状态勾选已连接(C)、启动时连接(O).

  • 6.重启虚拟机系统,先按鼠标进入虚拟机中CentOS7系统,快速按Esc键,进入系统Bios设置,进光盘启动。
    CentOS7下实验之手动删除动态链接库文件并用光盘救援模式恢复系统实验_第1张图片
  • 7.选择“3 CD-ROM Drive”,进入以下界面
    CentOS7下实验之手动删除动态链接库文件并用光盘救援模式恢复系统实验_第2张图片
  • 8.选择”Troubleshooting”,进入以下界面
    CentOS7下实验之手动删除动态链接库文件并用光盘救援模式恢复系统实验_第3张图片
  • 9.选择“Rescue a CentOS Linux system”,进入以下界面
    CentOS7下实验之手动删除动态链接库文件并用光盘救援模式恢复系统实验_第4张图片
  • 10.输入1,出现以下提示
    CentOS7下实验之手动删除动态链接库文件并用光盘救援模式恢复系统实验_第5张图片
  • 11.输入df命令,我们可以发现光盘加载的救援系统,将我们以前的盘符都挂载在/mnt/sysimage/目录下
    CentOS7下实验之手动删除动态链接库文件并用光盘救援模式恢复系统实验_第6张图片
  • 12.查看/mnt/sysimage/tmp/libc.so.6文件,并将其移动到/mnt/sysimage/lib64下,重启系统
  • 13.重启系统后,可以发现可以正常进入系统。

4. 备注:

        其实如果我们移动libc.so.6文件时,还有一个终端以GNOME界面登录的,移动libc.so.6文件后,此图形终端还可以使用鼠标来移动文件,所以我们可以直接使用鼠标将libc.so.6移动到原来位置,经过实验得出CentOS7.3支持此操作,CentOS 6.9在移动libc.so.6后图形终端就崩溃了不可用。

你可能感兴趣的:(CentOS的破坏小实验)