1.单用户模式:
Linux 中的单用户模式可以类比一下 Windows 中的安全模式。在单用户模式下很常用的功能是修改 root 密码。如何进入单用户模式:
重启Linux,3秒钟内按一下回车键,进入新画面。如果 grub 加密,需要先按 p 键, 输入 grub 密码。之后按 e 键,选择第二行,再按 e 键,在内容的最后面加上 1 或 single 或 s,回车后按 b 启动,即可进入单用户模式。
[root@localhost ~]# passwd
进行修改,重启即可。这里补充一下如何为 grub 加密:
[root@localhost ~]# grub-crypt --md5
Password: 111111
Retype password: 111111
$1$sqoKZg6F$cej0v.Vrvf6M3cajAdE8G/
将加密后的密码复制,修改如下文件:
[root@localhost ~]# vim /etc/grub.conf //或者 vim /boot/grub/grub.conf 软链接的关系
图-1 /boot/grub/grub.conf 文件
如图 1 所示,在 hiddenmenu 和 title 行中间添加一行, password=111111 可以指定明文密码, password --encrypted 粘贴生成的 MD5 密码,指定非明文密码。grub 还可以采用两种加密形式:
[root@localhost ~]# grub-crypt --sha-256
[root@localhost ~]# grub-crypt --sha-512 //默认形式,等同于 grub-crypt
方法相同,将生成的密码粘贴到 /boot/grub/grub.conf 文件中即可。
2.救援模式:
救援模式可以类比 Windows PE ,在系统不能正常启动时进入可以通过救援模式提取数据或者进行修复。如何进入救援模式:
重启 Linux,在重启过程中按 F2 ,进入 BIOS 设置,调整 BOOT 启动顺序,从 CD-ROM Drive 启动(光盘启动),之后按 F10 保存并重新启动。选择第三行 Rescue installed system ,进入救援模式。期间会让你选择语言、键盘类型、是否开启网卡、是只读进入还是读写进入(建议选择Continue,即以读写形式进入)。之后原 Linux 系统会被挂载到 /mnt/sysimage 下。之后显示如图2界面:
图-2 救援模式进入形式
第一行为直接进入 shell,第二行进入诊断模式(暂时不知道进入的具体作用是什么),第三行重启。选择第一行,进入后通过
chroot /mnt/sysimage
命令即可进入原 Linux 系统的文件系统中,可以做修改。完成后不能直接重启,通过 logout 或 Ctrl + d 返回,之后通过 reboot 或 shutdown -r now 或 init 6 命令重新启动即可。
3.系统运行级别:
Linux 系统有 7 种运行级别:
0 - 关机
1 - 单用户
2 - 无网络服务的多用户模式
3 - 标准的多用户模式 //即 shell
4 - 保留级别
5 - 图形化界面
6 - 重新启动
系统开机默认进入的运行级别在如下文件中修改:
[root@localhost ~]# vim /etc/inittab
id:3:initdefault:
修改 id 后的数字即可。切记不可把 0 和 6 两个级别设为默认值,否则系统不能正常启动,需要进入单用户模式将运行级别修改回来。通常我们使用标准的多用户模式作为运行级别。
使用下述命令可以查看系统上一次和本次的运行级别:
[root@localhost ~]# runlevel
N 3 //上次未知,本次运行级别为 3
4.Linux 启动流程:
理解 Linux 启动流程有助于我们在遇到系统无法启动的问题时快速寻找并定位原因以解决问题。先来看一张启动流程图,如图 3:
图-3 Linux 启动流程
这张图已经说的很明白了,用文字描述一下:
(1)系统通电
(2)初始化硬件(显卡,内存,硬盘,时间等)
(3)寻找启动介质(CD-ROM, HDD, USB, PXE等)
(4)MBR(主引导记录,包括三部分:引导程序,即 bootloader, 446字节;分区信息,64字节,校验码, 2字节(这两个字节为55 aa,对于所有MBR都是相同的,了解一下)。总共 512 字节)。查看 MBR 内容:
[root@localhost ~]# touch mbr
[root@localhost ~]# dd if=/dev/sda of=./mbr bs=1 count=512
[root@localhost ~]# hexdump -C ./mbr
即可查看。注意 MBR 中是 16 进制,不能通过 cat , head , tail 等命令查看。
bootloader 分为 grub 和 lilo, 现在基本已经不再使用 lilo。
补充:MBR, bootloader 和 grub 的关系――
MBR 是 /boot 所在分区所属硬盘的第一个扇区中的前 512 个字节,这 512 个字节中的 446 个字节就是 bootloader,前面提到了,bootloader 与 grub 的关系,这里不再赘述。
(5)进入 /boot/grub/ 目录,其中最重要的是三类文件 stage1, stage1_5 和 stage2 ,其中 stage2 是 grub 核心映像。
(6)/boot/grub/grub.conf 通过该文件启动 kernel
(7)/sbin/init
(8)/etc/inittab 决定采用哪种系统运行级别,以系统运行级别为 3 来举例,确定后进入 /etc/rc3.d/ 目录中,查看其中的文件(目录中全部为权限为 777 的软链接文件),如下所示:
K10saslauthd K80kdump S10network S55sshd S95atd
K50dnsmasq K84wpa_supplicant S11auditd S63tomcat S99local
K50netconsole K87restorecond S12rsyslog S64tomcat_test
K73winbind K89rdisc S15mdmonitor S80postfix
K74ntpd S08ip6tables S25netfs S81apache
K75ntpdate S08iptables S26udev-post S90crond
其中,文件名以 K 开头的代表系统启动时需要停止的服务,文件名以 S 开头的代表系统启动时需要启动的服务,文件名中的数字越小,代表其优先级越高,数字之后的英文代表服务的名称。
(9)/etc/rc.sysinit 或 /etc/rc.d/rc.sysinit 启动网络,检测SELinux,设置系统时间,开启交换分区等。
(10)/etc/rc.local 或 /etc/rc.d/rc.local ,系统启动完成后第一个运行的文件,允许用户进行个性化配置,比如挂载硬盘,或者开机启动 nginx 服务等。
(11)/bin/login 进入可登录状态。
5.用户登录时用到的文件:
(1)全局文件:即无论哪个用户登录都要加载的文件
[root@localhost ~]# vim /etc/profile
[root@localhost ~]# vim /etc/bashrc
举个例子,修改 /etc/bashrc ,在其最下面加上一行: alias cls='clear' ,可以为所有用户添加 clear 命令的别名。
(2)非全局文件:针对每个不同的登录用户单独加载的文件
[root@localhost ~]# vim ~/.bash_profile
[root@localhost ~]# vim ~/.bashrc
举个例子,修改 /root/.bashrc , 在其最下面加上一行: stty -echoctl , 可以为 root 用户隐藏在使用 Ctrl + c 时出现的 ^C 标记。
注:profile、 .bash_profile 为用户第一次登录时执行一次,bashrc、 .bashrc 为开启一个 shell 时执行一次。在前者中通常配置环境变量,在后者中通常配置别名。
如果用户家目录下的 .bash_profile 和 .bashrc 被删,则登录会异常,解决方法:
[root@localhost ~]# cp -p /etc/skel/.bash* /root //-p 参数,复制用户、用户组和权限
即可。(需要单用户模式或救援模式)