目录
2.12 Linux远程管理工具(PuTTY和SecureCRT)
2.9 使用系统光盘修复Linux系统
如果系统错误已经导致单用户模式不能进入了,那么是否需要重新安装 Linux 系统?不用着急,为了应对单用户模式也无法修复的错误,Linux 系统提供了 rescue 救援(光盘修复)模式。
rescue 救援模式的原理是不再使用硬盘中的文件系统启动 Linux,而是使用光盘中的文件系统启动 Linux。这样,就算硬盘中的 Linux 系统已经不能登录了(单用户也不能登录),rescue 救援还是可以使用的。当然,此模式也不是万能的,这时就只能重新安装 Linux 系统了。
如何进入rescue模式
首先需要有系统光盘或系统修复光盘。这里只需要把 CentOS 6.x 的第一张光盘放入光驱,然后重启系统,修改 BIOS 的启动顺序,让系统从光盘启动,就会看到如图 1 所示的光盘启动界面。
图 1 光盘启动界面
在这个界面上选择 "Rescue installed system" 进入rescue 救援,然后系统就会提示选择语言,如图 2 所示。
图 2 语言选择界面
选择 "English",接下来就会让我们选择键盘,如图 3 所示。
图 3 键盘选择界面
选择 "US",即美式标准键盘,之后会进入选择修复模式所在介质界面,如图 4 所示。
图 4 选择修复模式所在介质界面
选择光盘介质,然后确定,就会进入网络配置界面,如图 5 所示。
图 5 网络配置界面
选择"No",即不启用网络配置,就会进入 Rescue 模式选择界面,如图 6 所示。
图 6 Rescue模式
选择 "Continue" 进入光盘修复模式,在之后弹出的界面中选择 "OK",就会进入启动功能选择界面,如图 7 所示。
图 7 启动功能选择界面
选择 "shell Start shell",就会进入光盘修复模式,看到命令提示符。
rescue模式常见的错误修复
利用 rescue 救援模式,主要可以修复什么错误呢?其实能在单用户模式中修复的错误都能在该模式中修复,当然还可以修复一些在单用户模式中无法修复的错误。
1) 多系统并存,GRUB被覆盖
还记得在前面章节中讲解的手工安装 GRUB 吗?有一种情况就是先安装 Linux,后安装 Windows,导致 MBR 中的启动引导程序被 Windows 引导程序覆盖,需要重新安装 GRUB 引导程序。
重新安装 GRUB 的过程已经讲过了,但是重新安装 GRUB 的命令需要在 rescue 模式中执行。我们重新写一遍覆盖安装 GRUB 的过程,如下:
#放入光盘重启,进入 rescue 模式
sh-4.1#grub
#启动GRUB交互界面。注意到了吗?提示符不一样了,那是因为从光盘启动了系统,所以环境变量配件文件没有生效
gmb> root (hd0.0)
#设置GRUB的主目录
grub>setup (hd0)
#因为直接把GRUB安装到MBR中,所以不需要指定分区
grub> quit
#退出
这样GRUB覆盖安装的实验才算完成了。
2) 重要系统文件丢失,导致系统无法启动
如果系统中的重要系统文件丢失,则会导致系统无法正常启动,这时也可以利用 rescue 模式来进行修复。我们假设 /etc/inittab 文件丟失了,通过系统启动过程知道这个文件是于定义系统默认运行级别的,如果丟失了这个文件,那么系统当然不能正常启动,这时就需要进入 rescue 模式中,然后执行 chroot 命令。命令格式如下:
[root@localhost ~]#chroot 目录名
chroot 命令的作用是改变系统根目录,也就是可以把根目录暂时移动到某个目录当中。我们是通过光盘启动的 rescue 模式,所以我们现在所在的根目录并不是真正的系统根目录,而是光盘的模拟根目录,真正的系统根目录被当成外来设备放在了 /mnt/sysimage/ 目录中。
这时,就需要使用 chroot 命令把我们现在所在的根目录改成真正的系统根目录。命令如下:
bash-4.1# chroot /mnt/sysimage
执行这条命令之后,当前的根目录就是真正的系统根目录了。如果系统有任何错误,则可以直接修复。比如 /etc/inittab 文件丟失了。这时如果我们备份过系统重要文件,那么只需要把备份文件复制到 /etc/ 目录下即可。如果没有备份的文件,就需要从 RPM 包中提取 inittab 文件,然后复制。具体命令如下:
bash-4.1# chroot /mnt/sysimage
#改变主目录
sh-4.1#cd/root
#进入root目录。因为默认进入的是/目录,所以如果不进入root目录,那么一会提取的inittab文件会报错
sh-4.1# rpm -qf /etc/inittab
initscripts-9.03.31-2.el6.centos.i686
#查询一下/etc/inittab文件属于哪个包。如果系统中文件丢失不能查询,则需要通过其他Linux系统查询
sh-4.1# mkdir /mnt/cdrom
#建立挂载点
sh-4.1# mount /dev/sr0 /mnt/cdrom
#挂载光盘
sh-4.1# rpm2cpio /mnt/cdrom/Packages/initscripts-9.03.31-2.el6.centos.i686.rpm|cpio -idv ./etc/inittab
#提取inittab文件到当前目录
sh-4.1# cp etc/inittab /etc/inittab
#复制inittab文件到指定位置
注意,在执行此命令时不能将文件直接恢复到 /etc/ 目录,只能提取到当前目录,且恢复的文件名称所在路径要写完整的绝对路径。提取文件成功后,将其复制到根分区所在的 /mnt/sysimage/ 目录下的相应位置即可。
系统修复模式是维护 Linux 的有力武器,本节通过两个例子讲解了它的应用方法,希望能够给读者一点启示。解决 Linux 系统启动的故障,必须充分理解 Linux 的引导过程,才能够对故障进行有效的判断和处理。
2.10 破解密码这么简单,Linux是安全的操作系统吗?
很多人看到系统修复模式这节内容时,都会有所感慨:Linux 的密码破解太容易了,这样的操作系统还安全吗?Linux 不是以安全性著称的吗?
图 1 密码安全
本节,我们结合图 1 解释一下类似的问题。
我们一开始始为了安全,给用户设定密码,但是这样密码可以很容易地被单用户模式破解。我们又想到,进入单用户模式,需要在 GRUB 启动界面上按"e"键,那么我们就给 GRUB 加密,必须输入正确的 GRUB 密码,才能进入 GRUB 的编辑界面,这样就保证了用户密码的安全。
不过,GRUB 加密是可以通过进入光盘修复模式,直接删除 GRUB 配置文件中的 password 行而被破解的。接着我们又想到,进入光盘修复模式,是需要通过光盘启动系统的,那么我们给 BIOS 加密,这样就必须输入正确的 BIOS 密码,才能修改光盘的启动顺序。但是 BIOS 加密是可以通过拔除主板电池而删除的。那我们只能把服务器机箱锁起来,但只是一把锁而已,完全可以被螺丝刀撬开!
其实,这里是大家对概念的理解有误。任何一个需要密码的设备,不论是 Windows、Linux、交换机、路由器,还是一个需要密码的软件,都必须留有破解密码的漏洞。如果我们的计算机没有破解密码的方法,那么万一忘记了计算机的密码,难道要重新买一台吗(如果忘记了 BIOS 密码,又不能破解,当然不能重新安装系统了)?
当然不能是这样的,所以这些漏洞是必须预留的。这些漏洞是不会影响系统安全的,因为我们可以拿到计算机本身。如果我们能够拿到计算机,就认为我们对这台计算机拥有所有权。我们所说的安全性主要是指在对计算机没有所有权时要保证绝对安全。
而且大家要注意,如果 root 没有密码,那么本机登录是没有任何问题的,但是不可能远程登录。所以我们所说的安全性主要针对的是网络安全。
2.11 Linux远程管理协议(4种)
提到远程管理,通常指的是远程管理服务器,而非个人计算机。个人计算机可以随时拿来用,服务器通常放置在机房中,用户无法直接接触到服务器硬件,只能采用远程管理的方式。
远程管理,实际上就是计算机(服务器)之间通过网络进行数据传输(信息交换)的过程,与浏览器需要 HTTP 协议(超文本传输协议)浏览网页一样,远程管理同样需要远程管理协议的支持。
目前,常用的远程管理协议有以下 4 种:
- RDP(remote desktop protocol)协议:远程桌面协议,大部分 Windows 系统都默认支持此协议,Windows 系统中的远程桌面管理就基于该协议。
- RFB(Remote FrameBuffer)协议:图形化远程管理协议,VNC 远程管理工具就基于此协议。
- Telnet:命令行界面远程管理协议,几乎所有的操作系统都默认支持此协议。此协议的特点是,在进行数据传送时使用明文传输的方式,也就是不对数据进行加密。
- SSH(Secure Shell)协议:命令行界面远程管理协议,几乎所有操作系统都默认支持此协议。和 Telnet 不同,该协议在数据传输时会对数据进行加密并压缩,因此使用此协议传输数据既安全速度又快。
RDP 对比 RFB
RDP 协议和 RFB 协议都允许用户通过图形用户界面访问远程系统,但 RFB 协议倾向于传输图像,RDP 协议倾向于传输指令:
- RFB 协议会在服务器端将窗口在显存中画好,然后将图像传给客户端,客户端只需要将得到的图像解码显示即可;
- RDP 会将画图的工作交给客户端,服务器端需要根据客户端的显示能力做适当的调整。
因此,完成相同的操作,使用 RFB 协议传输的数据量会比 RDP 大,而 RDP 对客户端的要求比 RFB 更苛刻,RFB 适用于瘦客户端,而 RDP 适用于低速网络。
瘦客户端是相对于胖客户端