重启CentOS后,会出现如图2-27所示的黑框,提示我们登录。这个登录界面没有出现任何图形,因为我们没有安装与图形相关的程序包。如果你想使用图形,可以在进入系统后安装图形套件,然后切换到图形界面就可以了。
图2-27 登录
在如图2-27所示的黑框里点击鼠标,在localhost login:后面输入root并回车,然后输入先前设置的ROOT密码,进入CentOS系统,如图2-28所示。
图2-28 进入系统
在图2-28中,倒数第2行提示我们上一次root用户登录系统的时间以及终端(tty1)。在命令行模式下,默认有6个终端,即tty1,tty2…tty6;以图形形式登录会显示tty7;如果是通过远程登录的,那会显示pts/0,pts/1,pts/2……。
给Linux设置网络是为了使用yum工具安装图形套件,然后启动图形界面。下面请跟阿铭一起来给你的CentOS 7设置网络,使其可以上网。前面创建虚拟机时,我们已经将这台机器设置成NAT网络模式。所以,下面的操作都是基于NAT模式来的。桥接模式和NAT模式类似,这里就不再演示了。
(1) 在登录黑框中输入如下命令,让CentOS 7自动获取一个IP地址:
# dhclient
这里阿铭需要先声明:以后所有的命令都会以#开头,命令下面是执行该命令的结果。输入命令后回车,稍等几秒钟就可以获取IP地址了。
(2) 正常情况下是不会有任何输出内容的。如果你的CentOS 7返回一些信息,那说明你的操作有问题,请到阿铭论坛发帖,或者通过阿铭的微信进行求助。那获取到的IP地址是什么样的呢?我们如何查看?请运行如下命令:
# ip addr
它将返回如图2-29所示的信息。
图2-29 IP地址
ip addr命令就是用来查看IP地址的。这里请大家注意英文字母的大小写,Linux操作系统是区分大小写的。从图2-29中可以看出,这台机器有两个IP地址。第一个地址127.0.0.1是回环地址,网卡名字叫作lo,Windows操作系统也有该地址,用来自己和自己通信。第二个地址192.168.188.128就是刚刚我们自动获取到的IP地址,其中ens33就是网卡的名字。你获取到的IP地址和阿铭的可能不一样,这是因为VMware分配的地址段不一样,请大家放心,这并不是你没有配置对。另外,你的网卡名字也不一定是ens33,这个也是没有关系的。下面阿铭教你怎么看VMware NAT网络模式的网段是多少。
首先同时按下Ctrl和Alt这两个键,释放你的鼠标,然后点击VMware虚拟机左上角菜单栏中的“编辑”,选择“虚拟网络编辑器”,此时会弹出如图2-30所示的界面。
图2-30 虚拟网络编辑器
选中VMnet8(NAT模式),此时下面就可以看到子网IP为192.168.188.0,子网掩码为255.255.255.0,我们获取到的那个IP就在这个子网里面。然后点击右侧的“NAT 设置”按钮,此时会出现如图2-31所示的界面。
图2-31 NAT 设置
在这个界面中,我们会看到网关为192.168.188.2。请大家记住这个网关地址,因为接下来还会用到它。
(3) 自动获取IP地址后,我们先来测试一下CentOS 7是否可以联网。请大家注意,你的CentOS 7能联网的前提是你的物理机可以联网。输入如下命令进行测试:
# ping -c 4 www.aminglinux.com
运行结果如图2-32所示。
图2-32 测试网络
ping命令相信很多朋友都用过,它是用来检测网络的工具。图2-32的结果表示本机是可以联网的。如果你的结果和阿铭的不同,那很有可能说明你的设置有问题,请添加阿铭微信获取帮助。
(4) 虽然CentOS 7已经可以联网,但阿铭觉得这还不够,因为你还不会手动给CentOS 7设置IP地址。在日常的运维工作中,我们是需要手动给Linux系统设置IP地址的。下面阿铭教你如何手动设置IP地址。输入如下命令:
# vi /etc/sysconfig/network-scripts/ifcfg-ens33
请大家注意,在Linux系统下,命令后面是需要带空格的,这里的vi是一个用来编辑文本的命令,第7章会详细介绍它。它后面跟一个空格(当然跟多个空格也没错),再后面是一个文件的路径。这个文件就是网卡的配置文件,要修改IP地址,就得编辑这个文件。你的网卡配置文件名字(ifcfg-ens33)可能和阿铭的不一样,这个主要是看你的网卡名字是什么。回车后,进入如图2-33所示的界面。
图2-33 网卡配置
进入网卡配置文件后,我们可以使用上、下、左、右方向键去移动光标,但不能直接去修改文件内容。要想修改文件内容,只需按字母i键。我们需要修改的内容有,将ONBOOT=no改为ONBOOT=yes,将BOOTPROTO=dhcp改为BOOTPROTO=static,并增加如下几行字符:
IPADDR=192.168.188.128
NETMASK=255.255.255.0
GATEWAY=192.168.188.2
DNS1=119.29.29.29
这里需要说明的是,ONBOOT设置为yes,表示网卡随系统一同启动。BOOTPROTO用来设置网卡的启动类型,dhcp表示自动获取IP地址,static表示手动设置静态IP地址。IPADDR指定IP地址(请不要设置的和阿铭的一样,你的IP地址取决于前面你自动获取到的地址),NETMASK指定子网掩码,GATEWAY指定网关(这个网关就是刚刚阿铭让大家记住的网关地址),DNS1指定上网用的DNS IP地址,这个119.29.29.29是国内DNSpod公司提供的一个公共DNS。完成以上的更改后,按一下Esc键,紧接着输入“:wq”并回车,退出刚才的文档。然后重启网络服务,运行如下命令:
# systemctl restart network.service
然后再查看一下IP地址:
# ip addr
如果正确的话,你看到的结果依然如图2-29所示。当然,还需要再测试一下网络连通性,此时输入如下命令:
# ping -c 4 www.aminglinux.com
如果网络没有问题,可以运行如下命令来安装图形界面:
# yum groupinstall –y “GNOME Desktop”
这里需要说明的是,yum命令是CentOS系统里用来安装软件包的工具,9.2节会讲到它。这个过程会需要一段时间,因为它需要下载网络资源,耐心等待即可。等安装完成后,输入如下命令:
# init 5
等待几秒钟后,就会出现如图2-34所示的页面。
图2-34 初始化设置
这里要做一下初始化设置,比如要设置一个普通用户,目的是为了拿这个普通用户登录图形界面。在它的提示下面,我们输入数字1并回车,将出现License information,其中有两个选项,1表示阅读这个许可,2表示直接同意这个许可。我们输入数字2并回车,再输入字母c继续。此时又再次跳出之前的Initialsetup界面,和之前有变化的是,第1项多了一个[x],这表示这一项我们已经设置过了,如图2-35所示。
图2-35 许可信息
设置完第1项后,输入数字2并回车,此时会出现User creation的提示。不过这里只有1项提示,所以没得选,直接输入数字1并回车。此时将会出现6项关于创建用户的列表,如图2-36所示。
图2-36 创建用户
第1项不用管,输入数字2并回车,设置Fullname为aming,回车后发现第3项也自动设置为了aming,如图2-37所示。
图2-37 Fullname
再输入数字4,回车后,它自动会在数字4后面加个[x],说明接下来要设置密码。此时,你会发现又多出来一项。再输入数字5,回车,它会让我们输入aming用户的密码,连续输入两次密码。这里请尽量把密码设置得复杂一些(包括大小写字母,长度不低于8位),否则会提醒我们密码太简单。
图2-38 设置密码
继续输入数字6并回车,此时在数字6后面多一个[x],如图2-39所示。
图2-39 Administrator
这表示将aming用户设置为管理员。再输入数字7并回车,设置aming用户的组,组名为aming。其实,aming用户已经属于wheel组,这样它又多了一个组,如图2-40所示。
图2-40 设置组
最后输入字母c,回车后又回到最初的Initial setup界面,你会发现2数字后面也有个[x],说明这一项已经设置。然后再次输入字母c,回车后就会进入登录界面,如图2-41所示。
点击aming并输入密码,最终进入图形化界面。然后它会弹出一个欢迎界面,让我们设置键盘、语言等信息。直接点击右上角的“下一步”→“下一步”→“跳过”按钮,最终会弹出如图2-42所示的界面,点击“开始使用 CentOS Linux”按钮即可。
图2-41 登录界面
图2-42 开始使用
接下来,就进入CentOS 7的图形界面,你可以用鼠标点着操作了。对比一下,和咱们熟悉的Windows操作系统有什么不同吧。阿铭觉得,这个操作系统和苹果的macOS还是有些像的。不过,话说回来,很少有人拿CentOS操作系统作为办公使用,而绝大多数作为服务器,所以几乎没有人使用它的图形化界面。
刚才我们启动了图形界面,那么在图形模式下如何切换到命令行模式呢?有两种方法可以实现。
❑ 同时按Ctrl、Alt以及F2(或者F3-F6)这3个键切换到命令行模式,按Ctrl+Alt+F1组合键切回图形界面。
❑ 在图形界面下,点击左上角的“应用程序”按钮,选择“终端”选项,如图2-43所示。
图2-43 终端
然后在终端窗口下输入如下命令init 3,然后输入aming用户的密码,从而关闭图形服务,进入命令行模式:
# init 3
另外,在命令行模式下,比如在终端tty1,可以使用Alt+F2组合键切换到终端tty2。同理,使用Alt+F3组合键可以切换到终端tty3,使用Alt+F7组合键可以切换到图形模式,但前提是已开启图形服务。也就是说,tty1-tty6为命令行的终端,而tty7为图形的终端。但在此处,咱们刚刚做的实验有些特殊,因为刚才启动的图形服务,是在tty1的基础上起来的,所以tty1在刚才是图形界面。
切换回命令行界面后,我们继续下面的学习。在日常运维管理工作中,快捷键可以大大提高工作效率。在Linux系统中,常用的快捷键如下。
❑ Ctrl+C :结束(终止)当前命令。如果你输入了一大串字符,但不想运行,可以按Ctrl+C组合键,此时光标将跳入下一行,而在刚刚的光标处会留下一个^C的标记,如图2-44所示。
图2-44 取消命令
❑ Tab :实现自动补全功能。这个键比较重要,使用频率也很高。当你输入命令、文件或目录的前几个字符时,它会自动帮你补全。比如,前面阿铭教大家编辑网卡的配置文件时文件路径很长,这时结合Tab键就会很轻松。
❑ Ctrl+D :退出当前终端。同样,你也可以输入命令exit实现该功能。
❑ Ctrl+Z :暂停当前进程。这和Ctrl+C是有去区别的,暂停后,使用fg命令恢复该进程,该知识点会在第10章中介绍到。
❑ Ctrl+L :清屏,使光标移动到屏幕的第一行。当命令和显示的结果占满整个屏幕时,我们每运行一个命令,都会在最后一行显示,这样看起来不太方便,此时就可以使用这个快捷键,让光标移动到屏幕第一行,也就是所谓的清屏。
❑ Ctrl+A :可以让光标移动到命令的最前面。有时候一条命令很长,快敲完时发现前面某个字母不对,此时可以直接用这个快捷键把光标定位到行首,然后再用左右方向键微调光标的位置。
❑ Ctrl+E :可以让光标移动到最后面,作用同上。
man命令用于查看命令的帮助文档,其格式为man 命令 。例如,输入如下命令:
# man ls
这样可以查看ls命令的帮助文档,如图2-45所示。
图2-45 man命令
如果屏幕不能显示完整,可以按空格键下翻,或者按上下方向键前后移动文本。若想退出帮助文档,按字母键q。当然,想要看明白这个文档,还需要你有一定的英文阅读能力。这个man命令非常实用。尤其是对于初学者来讲,我们刚刚学一个命令时,总是记不住它的各个选项的用法,记不清时,随手man一下,就可以看到了,非常方便!同时,阿铭相信经常查看英文的文档也会提升你的英文阅读能力。
登录Linux系统后,在当前命令窗口下输入如下命令:
# ls /
此时将会出现如图2-46所示的界面。
图2-46 ls根
你的结果可能和阿铭的有所不同,不要紧,目前我们探讨的并不是差异,而是相同的地方。其中,ls是list的缩写,该命令用于列出指定目录或者文件。/是Linux操作系统里面最核心的一个目录,所有的文件和目录全部在它下面,所以称它为“根目录”。前面讲磁盘分区时,阿铭也是单独给它分了一个区的。大家要逐渐适应Linux系统的特性,毕竟它和Windows有太多的差异。
通过上一节中提到的命令man ls,可以了解ls命令具体的用法。对于ls这个最常用的命令,阿铭在这里举几个简单的例子帮你快速掌握其用法:
说明:其中以#开头的行都是运行的命令,它下面的内容是命令运行后的结果。可能你的结果和阿铭的有所不同,但不要紧,这是因为你的系统和阿铭的系统是存在一些差异的。如果有任何异议,请联系阿铭获取帮助。下面阿铭来讲解一下以上几个小案例的含义。
❑ 后面不加任何选项也不跟目录名或者文件名: 会列出当前目录下的文件和目录,不包含隐藏文件。
❑ 后面加 -a 选项、不加目录名或者文件名 :会列出当前目录下所有文件和目录,含有隐藏文件。
❑ 后面加-l选项、不加目录名或者文件名 :会列出当前目录下除隐藏文件外的所有文件和目录的详细信息,包含其权限、所属主、所属组以及文件创建日期和时间。
❑ 后面不加选项、只跟文件名 :会列出该文件,使用时通常都是加上-l选项,用来查看该文件的详细信息。
❑ 后面不加选项、只跟目录名 :会列出指定目录下的文件和目录。
其实,ls命令的可用项还有很多,不过阿铭只介绍了最常用的选项。因为在日常工作和学习中,这些已经足够。如果实在遇到不懂的选项,可以用man命令来查看帮助文档。
下面我们接着来讨论Linux的目录结构。
❑ /bin :bin是Binary的缩写,该目录下存放的是最常用的命令。
❑ /boot :该目录下存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
❑ /dev :dev是Device(设备)的缩写。该目录下存放的是Linux的外部设备。在Linux中,访问设备的方式和访问文件的方式是相同的。
❑ /etc :该目录下存放的是所有系统管理所需要的配置文件和子目录。
❑ /home :这是用户的家目录。在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
❑ /lib 和 /lib64 :这两个目录下存放的是系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库。其中/lib64为64位的软件包的库文件所在目录。
❑ /media :系统会自动识别一些设备(如U盘、光驱等),当识别后,Linux会把识别的设备挂载到该目录下。
❑ /mnt :系统提供该目录是为了让用户临时挂载别的文件系统。我们可以将光驱挂载到/mnt/上,然后进入该目录查看光驱里的内容。
❑ /opt :这是给主机额外安装软件所设置的目录,该目录默认为空。比如,你要安装一个Oracle数据库,可以放到该目录下。
❑ /proc :该目录是一个虚拟目录,是系统内存的映射,可以直接访问它来获取系统信息。该目录的内容在内存里,我们可以直接修改里面的某些文件。比如可以通过下面的命令来屏蔽主机的ping命令,使其他人无法ping你的机器。在日常工作中,你会经常用到类似的用法:
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
❑ /root :该目录是系统管理员的用户家目录。
❑ /run :这个目录其实和/var/run是同一个目录,这里面存放的是一些服务的pid。一个服务启动完后,是有一个pid文件的。至于为什么说是同一个目录,Linux是如何做到的,4.9节会详细介绍。
❑ /sbin :s就是Super User的意思,该目录存放的是系统管理员使用的系统管理程序。
❑ /srv :该目录存放的是一些服务启动之后需要提取的数据。
❑ /sys :该目录存放的是与硬件驱动程序相关的信息。
❑ /tmp :该目录用来存放一些临时文件。
❑ /usr :这是一个非常重要的目录,类似于Windows下的Program Files目录,用户的很多应用程序和文件都存放在该目录下。后面的章节中,我们会多次用到这个目录。
❑ /usr/bin :该目录存放的是系统用户使用的应用程序。
❑ /usr/sbin :该目录存放的是超级用户使用的比较高级的管理程序和系统守护程序。
❑ /usr/src :该目录是内核源代码默认的放置目录。
❑ /var :该目录存放的是不断扩充且经常修改的目录,包括各种日志文件或者pid文件,其中刚刚提到的/var/run就是在这个目录下面。
在Linux系统中,有几个重要的目录需要注意,不要误删除或者随意更改其内部文件。下面阿铭再简单总结一下这几个重要的目录。
❑ /etc目录下是系统的配置文件,如果更改了该目录下的某个文件,可能会导致系统无法正常启动。
❑ /bin、/sbin、/usr/bin和/usr/sbin目录是系统预设的执行文件的放置目录,其中/bin和/usr/bin目录下是供系统用户使用的指令(除root外的通用账户),而/sbin和/usr/sbin目录下则是供root使用的指令。比如,ls指令就存放在/bin/目录下。
❑ /var也是一个非常重要的目录,系统上运行各个程序时所产生的日志都被记录在该目录下(即/var/log目录中)。另外mail指令的预设也放置在这里。
Linux主要用在服务器领域,而在服务器上执行一项服务是永无止境的,除非遇到特殊情况,否则不会关机。和Windows不同,在 Linux系统下,很多进程都是在后台执行的。在屏幕背后,可能有很多人同时在工作。如果直接按下电源开关关机,其他人的数据可能就此中断。更严重的是,若不正常关机,严重的话,可能会造成文件系统损坏,从而导致数据丢失。
如果要关机,必须要保证当前系统中没有其他用户在登录系统。我们可以使用who命令查看是否还有其他人在登录,或者使用命令ps -aux 查看是否还有后台进程运行。shutdown、halt、poweroff都为关机的命令,我们可以使用命令man shutdown查看其帮助文档。例如,可以运行如下命令关机(//符号后面的内容为解释性文字):
不管是重启系统还是关闭系统,首先要运行sync命令,它可以把当前内存中的数据写入磁盘中,防止数据丢失。
再来总结一下,关机的命令有shutdown -h now、halt、poweroff和init 0,重启系统的命令有shutdown-r now、reboot和init 6。
以前阿铭忘记了Windows的管理员密码,当时不会用光盘清除密码,最后只能重装系统。现在想来那是多么愚笨的一件事情。同样,如果你忘记了Linux系统的root密码,该怎么办呢?重新安装系统吗?当然不用!你只需要进入emergency mode更改root密码即可。这个模式有人也叫作单用户模式,因为在CentOS 6时,我们是进入单用户模式修改root密码的。其实在CentOS 7已经没有单用户模式了,而是这个emergency模式,具体操作步骤如下。
1. 重启系统
3秒钟内按向下的方向键,目的是为了不让它进入系统,而是停留在开机界面,如图2-47所示。
图2-47 开机界面
按方向键移动光标,定位在第一行,按字母e编辑它,然后进入另外一个界面,此时会出来很多字符,这些都是CentOS 7启动选项,那么这些字符有什么用呢?我们暂时先放一放不用太过关心。移动向下的方向键,把光标定位到linux16开头的行,如图2-48所示。
图2-48 编辑启动项
2. 进入emergency模式
按向右的方向键,将光标移动到ro这里,把ro改成rw init=/sysroot/bin/bash,如图2-49所示。
图2-49 修改ro
然后同时按Ctrl和x这两个键,系统就会进入如图2-50所示的界面,这样就正式进入emergency模式。
图2-50 emergency模式
3. 修改root密码
首先切换到原始系统,然后再修改密码,操作过程如图2-51所示。
图2-51 修改密码
其中chroot命令用来切换系统,后面的/sysroot目录就是原始系统(也就是我们的CentOS 7系统),在这个下面才可以修改root密码。passwd命令就是修改root密码的命令,后续章节还会介绍它。但运行后,返回的结果很奇怪,出现了很多小方块,俗称乱码。其实这些小方块本来是汉字的,但是在VMware里面它并不支持中文。如果大家知道这个命令的用法,此时你连续输入两次新密码就ok了。但作为新用户,第一次看到肯定会不知所措。没有关系,阿铭教你如何把方块变成你能认识的字符。那就是设置语言。请跟着阿铭一起输入LANG=en,这个命令就是把当前终端的语言设置为英文。再次运行passwd命令,就可以正常显示字符了。
密码虽然修改完了,但是还需要一个额外的操作,相关命令如下:
# touch /.autorelabel
注意,这个文件名字一定要写对,否则更改的密码将不能生效。执行这一步的作用是让SELinux生效,如果不执行,则我们修改的密码是不会生效的。也就是说,即使你输对了密码,也无法登录。至于SELinux是什么,13.4.1节会详细介绍。执行完该命令后,同时按Ctrl+D这两个键,再输入命令reboot,这样系统会重启,等待几秒后,出现登录界面,此时使用我们新设置的密码登录即可。
救援模式即rescue模式,这个模式主要应用于系统无法进入的情况,比如grub损坏或者某一个配置文件修改出错。那么,如何使用rescue模式呢?具体的操作方法如下。
1. 光盘启动
首先检查你的光驱是否是开机启动。具体方法是把鼠标挪到VMware右下角的小光盘图标处,点击它,此时会出现两个选项,选择“设置”选项,会弹出“虚拟机设置”对话框,看一下右侧的“设备状态”,要保证两个对勾都是打上的,如图2-52所示。
图2-52 设备状态
但此时,重启系统并不会进入光驱启动界面,这还需要我们设置一个VMware的BIOS。由于VMware启动很快,往往我们还没有来得及按F2键(要进入BIOS,需要按F2键),它就已经进入系统的启动界面了。这里有一个技巧,首先把CentOS 7关机,然后在VMware左侧选中这台虚拟机并右击,从中选择“电源”→“启动时进入 BIOS”,如图2-53所示。
进入BIOS后,按向右方向键,选择Boot,然后按-或者+调节各个启动对象,其中有硬盘、光驱、网卡等,总之让CD-ROM在最前面,也就是让它第一个启动。最终的结果如图2-54所示。
图2-53 进入BIOS
图2-54 BIOS
设置完这步之后,直接按F10键保存设置并退出。
2. 进入rescue模式
随后进入光驱启动界面,使用上下方向键选择Troubleshooting,如图2-55所示。
图2-55 Troubleshooting
回车后,又出现如图2-56所示的界面,使用向下方向键选择Rescue a CentOS Linux system。
图2-56 选择Rescue a CentOS Linux system
连续敲两次回车,会出现如图2-57所示的界面。
图2-57 rescue selection
其中有一些提示,它告诉我们,初始系统在/mnt/sysimage下面,其实这和上一节的/sysroot类似。这里有4个选项:选择第1项将会继续往下走;选择第2项将会把初始的系统挂载为只读模式,我们不能写磁盘,也就意味着不能再修改配置文件,也不能更改root密码;选择第3项会直接出现一个shell;而选择第4项则会重启。
这里选择第1项,所以输入数字“1”,回车后,再次回车,如图2-58所示。它又再一次告诉我们:初始系统已经挂载到了/mnt/sysimage下面,要想进入初始系统下面,需要执行chroot /mnt/sysimage命令。
图2-58 获取shell
进入初始系统后,执行修改root密码的命令passwd,如图2-59所示。
图2-59 修改密码
其实,执行完chroot命令之后,你会发现命令行前后有一处变化,即原来的sh-4.2变成了bash-4.2,这就是因为环境变量发生了变化,第10章再讨论这个知识点。当然,救援模式并非只有改root密码这么简单的作用,我们还可以在救援模式下处理一些故障、修复数据等。要想退出救援模式也很简单,先使用Ctrl+D组合键退出原始系统,然后执行reboot命令即可。但是重启后你会发现,它依然进入光驱启动界面。所以,我们还需要再设置一遍BIOS,让硬盘第一个启动。这里还有一种方法,设置VMware,关闭光驱即可。