Linux实用教程(第三版)

Linux实用教程

第一章 Linux系统初步了解

本章内容

1.1 Linux系统简介
1.2 Linux系统的特点和组成
1.3 Linux版本介绍
1.4 Red Hat Linux系统概述

1.1 Linux系统简介

1.1.1 什么是Linux
1.1.2 Linux系统的产生
1.1.3 Linux系统应用领域

1.1.1什么是Linux
        Linux是一个免费的多用户、多任务的操作系统,其运行方式、功能和Unix系统很相似,但Linux系统的稳定性、安全性与网络功能是许多商业操作系统所无法比拟的。Linux系统最大的特色是源代码完全公开,在符合GNU/GPL(通用公共许可证)的原则下,任何人都可以自由取得、散布甚至修改源代码。
       越来越多的大中型企业的服务器选择了Linux作为其操作系统。近几年来,Linux系统又以其友好的图形界面、丰富的应用程序及低廉的价格,在桌面领域得到了较好的发展,受到了普通用户的欢迎。

1.1.2 Linux系统的产生
        Linux系统的内核最早是由芬兰大学生Linus Torvalds开发,并于1991年8月发布。当时由于Unix系统的商业化,Andrew Tannebaum教授开发了Minix操作系统,该系统不受AT&T许可协议的约束,可以发布在Internet上免费给全世界的学生使用,这为教学科研提供了一个操作系统。
        1991年,Linus Torvalds为了给Minix系统用户设计一个比较有效的Unix PC版本,自己动手写了一个类Minix的操作系统,这就是Linux的雏形。
        Linux的兴起可以说是Internet创造的一个奇迹。到1992年1月为止,全世界大约只有1000人在使用Linux系统,但由于它发布在Internet上,互联网上的任何人在任何地方都可以得到它。在这众多热心人的努力下,Linux系统在不到3年的时间里成为了一个功能完善、稳定可靠的操作系统。

1.1.3 Linux系统应用领域

  1. Linux 服务器
  2. 嵌入式Linux系统
  3. 软件开发平台
  4. 桌面应用

Linux的长处主要在于服务器和嵌入式两个领域

1.2 Linux系统的特点和组成

1.2.1 Linux系统的特点
1.2.2 Linux系统的组成

1.2.1 Linux系统的特点

  1. 开放性
  2. 多用户
  3. 多任务
  4. 良好的用户界面
  5. 设备独立性
  6. 丰富的网络功能
  7. 可靠的系统安全
  8. 良好的可移植性

1.2.2 Linux系统的组成

  1. 内核 (内核是操作系统的核心)
  2. Shell (Shell是一个命令解释器)
  3. 文件系统
  4. 应用程序

Linux版本介绍

1.3.1 Linux内核版本
1.3.2 Linux发行版本

1.3.1 Linux内核版本
        内核是一个用来和硬件打交道并为用户程序提供有限服务集的支撑软件,是操作系统中最核心的功能框架部分。一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。
        内核版本是Linux内核在历次修改或增加相应的功能后的版本编号。内核版本号是由点分隔的3段数字组成,比如3.10.0-327。

1.3.2 Linux发行版本
       一些组织和公司,将Linux系统的内核、应用软件和文档包装起来,并提供一些系统安装界面、系统配置设定管理工具,就构成了Linux发行版本。发行版本的版本号每一个发布厂商都不一样,与Linux系统内核的版本号是相对独立的。根据GPL准则,这些发行版本虽然都源自一个内核,但都没有自己的版权。

主流Linux发行版本

  1. Red Hat
  2. SUSE
  3. Oracle
  4. CentO S
  5. Ubnutu
  6. Debian
  7. Mandriva
  8. Gentoo
  9. Slackware
  10. Fedora

Red Hat Linux系统概述

1.4.1 Red Hat Linux系统优点
1.4.2 RHEL 7新特点

1.4.1 Red Hat Linux系统优点

  • 支持和硬件平台多
  • 优秀的安装界面
  • 独特的RPM升级方式
  • 丰富的软件包
  • 安全性能好
  • 方便的系统管理界面
  • 详细而完整的在线文档

1.4.2 RHEL 7新特点(1)

  • 包含Kernel 3.10版本,支持swap内存压缩可保证显著减少I/O并提高性能,采用 NUMA(统一内存访问)的调度和内存分配,支持APIC(高级程序中断控制器)虚拟化,全面的DynTick支持,将内核模块列入黑名单,kpatch动态内核补丁等。
  • 在存储和文件系统方面,RHEL 7使用LIO内核目标子系统,支持快速设备为较慢的块设备提供缓存,引进了LVM缓存,将xfs作为默认的文件系统。
  • 引进网络分组技术作为链路聚集的捆绑备用方法,对NetworkManager进行大量改进,提供动态防火墙守护进程firewalld,加入DNSSEC域名系统安全扩展,附带OpenLMI用来管理Linux系统提供常用的基础设施,引进了可信网络连接功能等。
  • 对KVM(基于内核的虚拟化)提供了大量改进,诸如使用virtio-blk-data-plane提高快 I/O性能 (技术预览),支持PCI桥接,QEMU沙箱,多队列NIC,USB 3.0支持等。

1.4.2 RHEL 7新特点(2)

  • 引入Linux容器Docker。
  • 编译工具链方面,RHEL 7包含GCC 4.8.x、glibc 2.17、GDB 7.6.1。
  • 包含Performance Co-Pilot、SystemTap 2.4、Valgrind 3.9.0 等性能工具。
  • 包含Ruby 2.0.0、Python 2.7.5、Java 7等编程语言。
  • 包含Apache 2.4、MariaDB 5.5、PostgreSQL 9.2等软件包。
  • 在系统和服务方面,RHEL 7使用systemd替换了SysV。
  • 引入Pacemaker集群管理器,同时使用keepalived和HAProxy替换了负载均衡程序 Piranha。
  • 对安装程序Anaconda进行了重新设计和增强,并使用GRUB 2引导装载程序。



第二章 安装Linux系统

本章内容

2.1 准备安装Linux系统
2.2 安装Linux系统
2.3 注销、关闭和重启Linux系统
2.4 FirewallD防火墙


2.1 准备安装Linux系统

2.1.1 安装Linux系统的硬件要求
2.1.2 交换分区
2.1.3 Linux系统硬盘知识


2.1.1 安装Linux系统的硬件要求
(1)CPU:主流计算机和服务器都能达到要求;
(2)内存:安装Linux系统至少需要1GB内存(建议使用2GB甚至更高内存);
(3)硬盘空间:若要安装所有软件包至少需要10GB以上硬盘空间;
(4)显示器和显卡;
(5)4DVD光驱。

硬件兼容性
        硬件兼容性在老式电脑和组装电脑上显得特别重要。Linux系统与最近几年厂家生产的多数硬件相兼容,然而硬件的技术规范每天都在改变,很难保证计算机的硬件会百分之百地兼容。
        要查看Red Hat硬件兼容性可以访问网址https://hardware.redhat.com,查看众多厂家的硬件产品。

交换分区
       直接从物理内存读写数据要比从硬盘读写数据快的多,而物理内存是有限的,这样就使用到了虚拟内存。虚拟内存是为了满足物理内存的不足而提出的一种策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换分区(swap分区)。
       内核会将暂时不用的内存块信息写到交换分区,这样一来,物理内存得到了释放,这块内存就可以用于其它用途,当需要用到原始的内容时,这些信息会被重新从交换分区读入物理内存。
       Linux的内存管理采取的是分页存取机制,为了保证物理内存能得到充分的利用,内核会在适当的时候将物理内存中不经常使用的数据块自动交换到虚拟内存中,而将经常使用的信息保留到物理内存。
       Linux系统会不时的进行页面交换操作,以保持尽可能多的空闲物理内存,即使并没有什么操作需要使用内存,Linux也会交换出暂时不用的内存页面,这可以避免等待交换所需的时间。
       Linux进行页面交换是有条件的,不是所有页面在不用时都交换到虚拟内存,Linux内核根据“最近最常使用”算法,仅仅将一些不经常使用的页面文件交换到虚拟内存。

分区命名方案
      Linux系统使用字母和数字的组合来指代硬盘分区,使用一种更加灵活的分区命名方案,该命名方案是基于文件的,文件名的格式为/dev/xxyN(比如/dev/sda1分区)。
      /dev:这是Linux系统中所有设备文件所在的目录名。因为分区位于硬盘上,而硬盘是设备,所以这些文件代表了在/dev上所有可能的分区;
      xx:分区名的前两个字母表示分区所在设备的类型,通常是hd(IDE硬盘)或sd(SCSI硬盘)。
      y:这个字母表示分区所在的设备。例如,/dev/hda(第1个 IDE 硬盘)或/dev/sdb(第2个SCSI硬盘);
      N:最后的数字N代表分区。前4个分区(主分区或扩展分区)用数字1~4表示,逻辑驱动器从5开始。例如,/dev/hda3是第1个IDE 硬盘上的第3个主分区或扩展分区;/dev/sdb6是第2个SCSI硬盘上的第2个逻辑驱动器。

磁盘分区和挂载目录
      Linux系统中的每一个分区都是构成支持一组文件和目录所必需的存储区的一部分。它是通过挂载来实现的,挂载是将分区关联到某一目录的过程,挂载分区使起始于这个指定目录(称为挂载目录)的存储区能够被使用。
      例如,如果分区/dev/sda5被挂载在目录/usr上,这意味着所有在/usr下的文件和目录在物理上位于/dev/sda5。因此文件/usr/bin/cal被保存在分区/dev/sda5上,而文件/etc/passwd却不是。
      /usr目录下的目录还有可能是其它分区的挂载目录。例如,某个分区(如/dev/sda7)可以被挂载到/usr/local目录下,这意味着文件/usr/local/man/whatis将位于分区/dev/sda7上,而不是分区/dev/sda5上。

硬盘分区规划
    (1)最简单的分区规划
swap分区:即交换分区,实现虚拟内存,建议大小是物理内存的1~2倍;
/boot分区:用来存放与Linux系统启动有关的程序,比如引导装载程序等,最少200MB;
/分区:建议大小至少在10GB以上。

    (2)合理的分区规划
swap分区:实现虚拟内存,建议大小是物理内存的1~2倍。
/boot分区:建议大小最少为200MB;
/usr分区:用来存放Linux系统中的应用程序,其相关数据较多,建议大小最少为8GB;
/var分区:用来存放Linux系统中经常变化的数据以及日志文件,建议大小最少为1GB;
/分区:Linux系统的根目录,所有的目录都挂在这个目录下面,建议大小最少为1GB;
/home分区:存放普通用户的数据,是普通用户的宿主目录,建议大小为剩下的空间。

安装Linux系统

2.2.1 安装Linux 系统的步骤
2.2.2 Liunx 安装后的初始化设备
2.2.3 登陆Linux 系统

2.2.1 安装Linux 系统的步骤

  • 安装引导
    选择Install Red Hat Enterprise Linux 7.2,如果选择第二个的话会要求检查光盘介质MD5SUM信息。
    在这里插入图片描述

  • 开始安装进程
    在这里插入图片描述

  • 选择安装过程语言(中文-简体中文)
    在这里插入图片描述

  • 安装信息摘要
    在这里插入图片描述

  • 时间&日期(亚洲-上海)
    在这里插入图片描述

  • 键盘布局
    在这里插入图片描述

  • 安全策略
    在这里插入图片描述

  • 安装源
    在这里插入图片描述

  • 软件选择
    要注意的是 选择“带GUI的服务器并勾选右侧所有环境的附加选项”
    在这里插入图片描述

  • 安装目标文件

在这里插入图片描述

  • 手动分区界面
    这里小白可以直接点“点击这里自动创建他们(C)。”
    在这里插入图片描述
  • 创建分区

在这里插入图片描述

  • 最终分区效果界面

在这里插入图片描述

  • KDUMP
    在这里插入图片描述
  • 设置计算机主机名
    在这里插入图片描述
  • 设置IPv4地址
    在这里插入图片描述
  • 开始安装LInux系统
    在这里插入图片描述
  • 设置根用户密码
    一定要设置自己能记住的密码
    在这里插入图片描述
  • 创建用户
    这里可以创建也可以不创建,无所谓~
    在这里插入图片描述
  • Linux安装完毕(从开始到结束正常时间大约半小时)
    在这里插入图片描述
    2.2.2 Linux安装后的初始化配置
  • 重新引导文件
    在这里插入图片描述
  • 初始设置
    在这里插入图片描述
  • 许可信息
    在这里插入图片描述
  • 注册信息
    在这里插入图片描述
    2.2.3 登陆Linux系统
            登录Linux系统实际上是一个验证用户身份的过程,如果用户输入了错误的用户账户名或密码,就会出现错误信息从而不能登录系统。Linux系统使用用户账户来管理特权和维护安全,不是所有的账户都具有相同的权限,某些账户所拥有的文件访问权限和服务要比其它账户少。
  • 输入用户名
    在这里插入图片描述
  • 输入密码
    在这里插入图片描述
  • GNOME图形化桌面
    在这里插入图片描述

2.3注销、关闭和重启Linux系统

2.3.1 注销Linux 系统
2.3.2 关闭和重启Linux系统

2.3.1 注销Linux 系统
在这里插入图片描述在这里插入图片描述2.3.2 关闭和重启Linux系统
在这里插入图片描述在这里插入图片描述

2.4 FirewallD防火墙

2.4.1 FirewallD防火墙简介
2.4.2 FirewallD防火墙配置

2.4.1 FirewallD防火墙简介
        Linux为增加系统安全性提供了防火墙保护功能。防火墙存在于计算机和网络之间,用于判断网络中的远程用户的访问权限。在RHEL 7系统中默认使用FirewallD防火墙,FirewallD提供了支持网络/防火墙区域定义网络链接以及接口安全等级的动态防火墙管理工具。它支持IPv4、IPv6防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项。它也支持允许服务或者应用程序直接添加防火墙规则的接口。以前的iptables防火墙是静态的,每次修改都要求防火墙完全重启。现在FirewallD可以动态管理防火墙,支持动态配置,不用重启服务。
        通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略,以此来控制不同程度区域间传送的数据流。比如互联网是不可信任的区域,而内部网络是高度信任的区域。数据包进入到内核必须要通过区域,而不同的区域定义的规则是不一样的。可以根据网卡所连接的网络的安全性来判断,这块网卡的流量到底使用哪个区域。可以把这些区域想象成进入火车站的安检,不同的入口检测的严格度不一样。默认情况下FirewallD防火墙的连接区域为public,public在公共区域内使用,指定外部连接可以进入内部网络或主机。

2.4.2 FirewallD防火墙配置

  • [防火墙配置]界面
    在这里插入图片描述
  • 添加可信服务
    在这里插入图片描述
  • 添加端口
    在这里插入图片描述
  • 伪装
    在这里插入图片描述
  • 端口转发
    在这里插入图片描述

第三章 字符界面操作基础

本章内容

3.1 字符界面简介
3.2 在Linux系统下获取帮助
3.3 Shell基础知识
3.4 使用bash
3.5 Shell实用功能
3.6 重定向
3.7 vi编辑器

字符界面简介

3.1.1 进入Linux字符界面
3.1.2 关闭和重启Linux系统
3.1.3 目标

3.1.1 进入Linux字符界面

  1. Linux字符界面
  2. 使用终端
  3. 使用虚拟操控台

字符界面登陆提示
在这里插入图片描述

  1. 终端
    在这里插入图片描述
  2. 虚拟操控台
            在字符界面下,虚拟控制台的选择可以通过按下[Alt]键和一个功能键来实现,通常使用F1~F6键。比如用户登录后,按下[Alt+F2]键,用户可以看到“login:”提示符,说明用户进入了第二个虚拟控制台。然后只需按[Alt+F1]键,就可以回到第一个虚拟控制台。
            如果用户在图形界面下,那么可以使用[Ctrl+ Alt+F2]~[Ctrl+ Alt+F6]键切换字符虚拟控制台,使用[Ctrl+Alt+F1]可以切换到图形界面。

3.1.2 关闭和重启Linux系统

  1. shutdown命令
  2. halt命令
  3. reboot命令

3.1.3 目标
        在RHEL 7之前的版本,使用运行级别代表特定的操作模式。运行级别被定义为七个级别,用数字0到6表示,每个运行级别可以启动特定的一些服务。RHEL 7使用目标(target)替换运行级别。目标使用目标单元文件描述,目标单位文件扩展名是.target,目标单元文件的唯一目标是将其他systemd单元文件通过一连串的依赖关系组织在一起。比如graphical.target单元,用于启动一个图形会话,systemd会启动像GNOME显示管理(gdm.service)、帐号服务(axxounts-daemon)这样的服务,并且会激活multi-user.target单元。相似的multi-user.target单元,会启动必不可少的NetworkManager.service、dbus.service服务,并激活basic.target单元。
        每一个目标都有名字和独特的功能,并且能够同时启用多个。一些目标继承其他目标的服务,并启动新服务。systemd 提供了一些模仿System V init启动级别的目标,仍可以使用旧的telinit启动级别命令切换。

预定义目标和运行级别对应关系

运行级别目标目录的链接文件功能
0power off.targetrunlevel0.target关闭系统
1rescue.targetrunlevel1.target进入救援模式
2multi-user.targetrunlevel2.target进入非图形界面的多用户方式
3multi-user.targetrunlevel3.target进入非图形界面的多用户方式
4mulit-user.targetrunlevel4.target进入非图形界面的多用户方式
5graphical.targetrunlevel5.target进入图形界面的多用户方式
6reboot.targetrunlevel6.target重启系统

在Linux系统下获取帮助

3.2.1 使用man手册
3.2.2 使用—help选项获取帮助

3.2.1 使用man手册
      一般情况下,Linux系统中所有的资源都会随操作系统一起发行,包括内核源代码。而在线手册是操作系统所有资源的一本很好的使用手册。有不懂的命令时可以用man查看这个命令,写程序时有不会用的函数可以用man查看这个函数,有不懂的文件时也可以用man查看文件。
      一般情况下man手册页的资源主要位于/usr/share/man目录下。

类型手册页类型
1用户命令
2系统调用
3C语言函数库
4设备和特殊文件
5文件格式和约定
6游戏程序
7杂记
8系统管理工具
9Linux内核API(内核调用)
  • man命令

       man命令格式化并显示在线的手册页。通常使用者只要在命令man后,输入想要获取的命令的名称,man就会列出一份完整的说明,其内容包括命令语法、各选项的意义以及相关命令等。

命令语法:
man [选项] [名称]

  • 使用—help选项获取帮助

       使用–help选项可以显示命令的使用方法以及命令选项的含义。只要在所需要显示的命令后面输入“–help”选项,然后就可以看到所查命令的帮助内容了。

命令语法:
[命令] --help

Shell基础知识

3.3.1 Shell简介
3.3.2 bash简介
3.3.3 bash命令

3.3.1 Shell简介
       在AT&T工作的Dennis Ritchie和Ken Thompson两人在设计Unix操作系统的时候,想要为用户创建一种与Unix系统交流的方法。那时的操作系统带有命令解释器。命令解释器接受用户的命令,然后解释它们,因而计算机可以使用这些命令。
       Ritchie和Thompson想要提供比当时的命令解释器具备更优异功能的工具。这导致了Bourne Shell(通称为sh)的开发,由S.R.Bourne创建。自从Bourne Shell出现以后,其它类型Shell也被一一开发,比如C Shell(csh)和Korn Shell(ksh)。
       Shell接收用户命令,然后调用相应的应用程序,同时它还是一种程序设计语言, 是系统管理维护时的重要工具。 作为命令语言,它交互式的解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令。作为程序设计语言,它可以定义各种变量和参数,并提供了许多在高级语言中才具有的控制结构(循环和分支)。
       Shell命令重新初始化用户的登录会话。当给出该命令时,就会重新设置进程的控制终端的端口特征,并取消对端口的所有访问。然后Shell命令为用户把进程凭证和环境重新设置为缺省值,并执行用户的初始程序。根据调用进程的登录用户标识建立所有的凭证和环境。
       目前流行的Shell 有sh、csh 、ksh、tcsh 和bash等。大部分Linux系统的默认Shell类型为bash。

3.3.2 bash简介
       bash(Bourne-Again Shell)最早是在1987年由布莱恩·福克斯开发的一个为GNU计划编写的Unix Shell。bash目前是大多数Linux系统默认的Shell,它还能运行于大多数Unix风格的操作系统上。
       bash的命令语法是Bourne shell命令语法的超集。数量庞大的Bourne shell脚本大多不经过修改就可以在bash中执行,只有那些引用了Bourne特殊变量或使用了Bourne内置命令的脚本才需要修改。bash的命令语法很多来自ksh和csh,比如命令行编辑、命令历史、目录栈、 R A N D O M 变 量 、 RANDOM变量、 RANDOMPPID变量以及POSIX命令置换语法。

3.3.3 bash命令
       Linux系统的标准提示符包括了用户登录名、登录的主机名、当前所在的工作目录路径和提示符号。

以普通用户zhangsan登录名为rhel的主机,他的工作目录是/home/zhangsan。
[zhangsan@rhel ~]$

以root用户登录系统的提示符。
[root@rhel ~]#

Shell命令一般格式
命令语法:
[Shell命令][选项][参数]

       所有选项在该命令的man手册页中都有详细的介绍,而参数则由用户提供。选项决定命令如何工作,而参数则用于确定命令作用的目标。选项有短命令行选项和长命令选项两种。

Linux系统命令分类

  • bash 内置的命令
  • 应用程序

3.4使用bash

3.4.1 常用控制组合键
3.4.2 光标操作
3.4.3 特殊字符
3.4.4 通配符

3.4.1 常用控制组合键
在这里插入图片描述3.4.2 光标操作(1)
在这里插入图片描述3.4.2 光标操作(2)
在这里插入图片描述3.4.3特殊字符
在这里插入图片描述3.4.4通配符
在这里插入图片描述

3.5Shell实用功能

3.5.1 命令行自动补全
3.5.2 命令历史记录
3.5.3 命令排列
3.5.4 命令替换
3.5.5 命令别名
3.5.6 文件名匹配
3.5.7 管道

3.5.1 命令行自动补全
       在Linux系统中,有太多的命令和文件名称需要记忆,使用命令行补全功能可以快速的写出文件名和命令名。

3.5.2 命令历史记录
       在操作Linux系统的时候,每一个操作的命令都会记录到命令历史中,在以后可以通过命令历史查看和使用以前操作的命令。
       bash启动的时候会读取/.bash_history文件,并将其载入到内存中,$HISTFILE变量就用于设置/.bash_history文件,bash退出时也会把内存中的历史记录回写到~/.bash_history文件中。
       使用history命令可以查看命令历史记录,每一条命令前面都会有一个序列号标示。

命令语法:
history [选项]

使用命令历史举例
在这里插入图片描述搜索历史命令
在这里插入图片描述3.5.3 命令排列
       如果希望一次执行多个命令,Shell允许在不同的命令之间,放上特殊的排列字符。

(1)使用“;”
使用“;”命令时先执行命令1,不管命令1是否出错,接下来就执行命令2。

 命令语法:
 命令1; 命令2

(2)使用“&&”
使用“&&”命令时只有当命令1正确运行完毕后,才能执行命令2 。

命令语法:
命令1&&命令2

3.5.4 命令替换
       在Linux系统中,Shell命令的参数可以由另外一个命令的结果来替代,这种称之为命令替换。

1.使用“$( )”

命令语法:
命令1 $(命令2) 

2.使用“``”

命令语法:
命令1 `命令2`

3.5.5 命令别名
       在需要执行某一个非常长的命令时,所有的命令以及命令的选项、参数都要一一输入,很枯燥也容易出现错误。可以为常用命令定义快捷方式,这些快捷方式可以用比较简单的命令别名来定义。

1.创建别名
使用alias命令可以为命令定义别名。如果命令中有空格的话,就需要使用双引号(比如在命令与选项之间就有空格)。

命令语法:
alias [别名]=[需要定义别名的命令] 

2.取消别名
当用户需要取消别名的定义时,可以使用unalias命令。

命令语法:
unalias [别名] 

3.5.6 文件名匹配
       文件名匹配使得用户不必一一写出文件名称就可以指定多个文件。这将用到一些特殊的字符,称之为通配符。

1.通配符“ * ”
“ * ”可匹配一个或多个字符。

2.通配符“?”
在匹配时,一个问号只能代表一个字符。

3.5.7管道
       Linux系统的理念是汇集许多小程序,每个程序都有特殊的专长。复杂的任务不是由大型软件完成,而是运用Shell 的机制,组合许多小程序共同完成。管道就在其中发挥着重要的作用,它可以将某个命令的输出信息当作某个命令的输入,由管道符号“|”来标识。

命令语法:
[命令1]|[ 命令2]|[ 命令3]

3.6重定向

3.6.1 输出重定向
3.6.2 输入重定向
3.6.3 错误重定向
3.6.4 同时实现输出和错误重定向

重定向简介
       希望将命令的输出结果保存到文件中,或者以文件内容作为命令的参数,这时就需要用到重定向。重定向不使用系统的标准输入端口、标准输出端口或是标准错误端口,而是进行重新的指定。
       重定向有四种方式:输出重定向、输入重定向、错误重定向以及同时实现输出和错误的重定向。

3.6.1 输出重定向
       输出重定向,即将某一命令执行的输出保存到文件中,如果已经存在相同的文件,那么覆盖源文件中的内容。

命令语法:
[命令] > [文件]

       另外一种特殊的输出重定向是输出追加重定向,即将某一命令执行的输出添加到已经存在的文件中。

命令语法:
[命令] >> [文件]

3.6.2 输入重定向
        输入重定向,即将某一文件的内容作为命令的输入。

命令语法;
[命令] < [文件]

       另外一种特殊的输入重定向是输入追加重定向,这种输入重定向告诉Shell,当前标准输入来自命令行的一对分隔符之间的内容。

命令语法;
[命令] << [分隔符]
 > [文本内容]
 > [分隔符]

3.6.3 错误重定向
       错误重定向,即将某一命令执行的出错信息输出到指定文件中。

命令语法:
[命令] 2> [文件]

       另外一种特殊的错误重定向是错误追加重定向,即将某一命令执行的出错信息添加到已经存在的文件中。

命令语法:
[命令] 2>> [文件]

3.6.4 同时实现输出和错误重定向
       同时实现输出和错误的重定向,即可以同时实现输出重定向和错误重定向的功能。

命令语法:
[命令] &> [文件]

3.7 vi编辑器

3.7.1 vi编辑器工作模式
3.7.2 进入插入模式
3.7.3 光标移动
3.7.4 命令模式操作
3.7.5 末行模式操作

vi编辑器简介
       vi编辑器是Linux系统字符界面下最常使用的文本编辑器,用于编辑任何ASCII文本,对于编辑源程序尤其有用。vi编辑器功能非常强大,通过使用vi编辑器,可以对文本进行创建、查找、替换、删除、复制和粘贴等操作。
在Linux系统Shell提示符下输入vi和文件名称后,就进入vi编辑界面。如果系统内还不存在该文件,就意味着创建文件,如果系统内存在该文件,就意味着编辑该文件。

3.7.1 vi编辑器工作模式

  1. 命令模式
  2. 插入模式
  3. 末日模式

3.7.2 进入插入模式
在这里插入图片描述

光标移动(1)
在这里插入图片描述光标移动(2)
在这里插入图片描述光标移动(3)
在这里插入图片描述
光标移动(4)
在这里插入图片描述

命令模式命令

在这里插入图片描述在这里插入图片描述在这里插入图片描述

末行模式命令

末行模式命令(1)末行模式命令(2)末行模式命令(3)

第四章 目录和文件管理

本章内容
4.1 Linux文件类型
4.2 Linux目录结构
4.3 文件和目录操作
4.4 链接文件

4.1 Linux文件类型

       在Linux系统中除了一般文件之外,所有的目录和设备(如光驱、硬盘等)都是以文件的形式存在的。 Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。通过一般应用程序创建的文件,比如file.txt、file.tar.gz,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多称之为普通文件。
1.普通文件
2.目录文件
3.设备文件
(1)块设备文件
(2)字符设备文件
4.管道文件
5.链接文件
(1)软链接文件
(2)硬链接文件

Linux目录结构

       在LinuxLinux系统都有根文件系统,它包含系统引导和使其它文件系统得以挂载所必要的文件。
       在LinuxLinux系统的目录结构是分层的树形结构,都是挂载在根文件系统“/”下。

Linux目录结构
在这里插入图片描述在这里插入图片描述

文件和目录操作

4.3.1 pwd:显示工作目录路径
显示当前用户所处的工作目录的绝对路径。

命令语法:
pwd [选项] 

4.3.2 cd:更改工作目录路径
更改用户的工作目录路径。工作目录路径可以使用绝对路径名或相对路径名,绝对路径从/(根)开始,然后循序到所需的目录下,相对路径从当前目录开始。

命令语法:
cd [选项] [目录]  

4.3.3 ls:列出目录和文件信息
对于目录而言将列出其中的所有子目录与文件信息;对于文件而言将输出其文件名以及所要求的其它信息。

命令语法:
ls [选项] [目录|文件] 

ls命令显示的详细信息
在这里插入图片描述
4.3.4 touch:创建空文件、更改文件时间
创建空文件以及更改文件的时间(atime和mtime)。

命令语法:
touch [选项] [文件] 

4.3.5 mkdir:创建目录
在Linux系统中创建目录。

命令语法:
mkdir [选项] [目录] 

4.3.6 rmdir:删除空目录
在Linux系统中删除空目录。

命令语法:
rmdir [选项] [目录] 

4.3.7 cp:复制文件和目录
复制文件和目录到其它目录中。如果同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息。

命令语法:
cp [选项] [源文件|目录] [目标文件|目录] 

4.3.8 mv:文件和目录改名、移动文件和目录路径
对文件和目录更改名称以及移动文件和目录的路径。

命令语法:
mv [选项] [源文件|目录] [目标文件|目录] 

4.3.9 rm:删除文件或目录
删除系统中的文件或目录。

命令语法:
rm [选项] [文件|目录] 

4.3.10 wc:统计文件行数、单词数和字节数和字符数
统计指定文件的行数、单词数、字节数和字符数,并将统计结果显示输出到屏幕。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。单词是由空格字符区分开的最大字符串。输出列的顺序和数目不受选项的顺序和数目的影响。总是按行数、单词数、字节数、文件的顺序显示每项信息。

命令语法:
wc [选项] [文件]

4.4链接文件

4.4.1 链接文件简介
4.4.2 创建和使用链接文件

4.4.1 链接文件简介
       链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的方法。Linux系统中包括硬链接和软链接(也被称为符号链接)两种。

硬链接
       硬链接是一个指针,指向文件inode,系统并不为它重新分配inode,两文件具有相同的inode。硬链接节省空间,也是Linux系统整合文件系统的传统方式。

软连接
       软链接也叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件,和Windows下的快捷方式相似。链接文件甚至可以链接不存在的文件,这就产生一般称之为“断链”的问题,链接文件甚至可以循环链接自己。

硬链接和软链接的区别
       硬链接记录的是目标的inode,软链接记录的是目标的路径。软链接就像是快捷方式,而硬链接就像是备份。软链接可以做跨分区的链接,而硬链接由于inode的缘故,只能在本分区中做链接。所以软链接的使用频率要高得多。

创建和使用链接文件
使用ln命令可以创建链接文件(包括软链接文件和硬链接文件)。

命令语法:
ln [选项] [源文件名] [链接文件名]

第五章 Linux常用操作命令

本章内容
5.1 文本内容显示
5.2 文本内容处理
5.3 文件和命令查找
5.4 系统信息显示
5.5 日期和时间
5.6 信息交流
5.7 其他命令

5.1 文本内容显示

5.1.1 cat:显示文本文件
5.1.2 more:分页显示文本文件
5.1.3 less:回卷显示文本文件
5.1.4 head:显示指定文件前若干行
5.1.5 tail:查看文件末尾数据

5.1.1 cat:显示文本文件
显示文本文件的内容,也可以把几个文件内容附加到另一个文件中。如果没有指定文件,或者文件为“-”,那么就从标准输入读取。
命令语法:
cat [选项] [文件]


5.1.2 more:分页显示文本文件
分页显示文本文件的内容。类似于cat命令,不过是以分页方式显示文件内容,方便使用者逐页阅读,其最基本的按键就是按空格键就显示下一页内容,按[b]键返回显示上一页内容。
命令语法:
more [选项] [文件名]

5.1.3 less:回卷显示文本文件
回卷显示文本文件的内容。less命令的作用与more十分相似,都可以用来浏览文本文件的内容,不同的是less命令允许使用者往回卷动。
命令语法:
less [选项] [文件名]

5.1.4 head:显示指定文件前若干行
显示指定文件的前若干行文件内容。如果没有给出具体行数值,默认缺省设置为10行。如果没有指定文件,head就从标准输入读取。

命令语法:
head[选项][文件]

5.1.5 tail:查看文件末尾数据
查看文件的末尾数据,默认显示指定文件的最后10 行到标准输出。如果指定了多个文件,tail会在每段输出的开始添加相应文件名作为头。如果不指定文件或文件为“-” ,则从标准输入读取数据。

命令语法:
tail [选项] [文件名]

5.2 文件内容的处理

5.2.1 sort:对文件中的数据进行排序
5.2.2 uniq:将重复行从输出文件中删除
5.2.3 cut:从文件每行中显示出选定的字节、字符或字段
5.2.4 comm:逐行比较两个已排过序的文件
5.2.5 diff:逐行比较两个文本文件,列出其不同之处

5.2.1 sort:对文件中的数据进行排序
对文件中的数据进行排序,并将结果显示在标准输出上。

命令语法:
sort [选项] [文件]


5.2.2 uniq:将重复行从输出文件中删除

将文件内的重复行数据从输出文件中删除,只留下每条记录的惟一样本。

命令语法:
uniq [选项] [文件]


5.2.3 cut:从文件每行中显示出选定的字节、字符或字段

从文件的每行中输出选定的字节、字符或字段(域)。只能使用-b、-c或-f选项中的一个。每一个列表都是专门为一个类别作出的,或者可以用逗号隔开要同时显示的不同类别。输入顺序将作为读取顺序,每个仅能输入一次。

命令语法:
cut [选项] [ 文件 ]


5.2.4 comm:逐行比较两个已排过序的文件

比较两个已排过序的文件,并将其结果显示出来。

命令语法:
comm [选项] [文件1] [文件2]


5.2.5 diff:逐行比较两个文本文件,列出其不同之处

逐行比较两个文本文件,列出其不同之处。它比comm命令能完成更复杂的检查,它对给出的文件进行系统的检查,并显示出两个文件中所有不同的行,不要求事先对文件进行排序。

命令语法:
diff [选项] [文件1] [文件2]

5.3 文件和命令查找

5.3.1 grep:查找文件中符合条件的字符串
5.3.2 find:列出文件系统内符合条件的文件
5.3.3 locate:在数据库中查找文件
5.3.1 grep:查找文件中符合条件的字符串
5.3.2 find:列出文件系统内符合条件的文件
5.3.3 locate:在数据库中查找文件

5.3.1 grep:查找文件中符合条件的字符串
查找文件内符合条件的字符串。
命令语法:
grep [选项] [查找模式] [文件名]


5.3.2 find:列出文件系统内符合条件的文件

将文件系统内符合条件的文件列出来,可以指定文件的名称、类别、时间、大小以及权限等不同信息的组合,只有完全相符的文件才会被列出来。

命令语法:
find [路径] [选项]


5.3.3 locate:在数据库中查找文件

使用locate命令可以通过数据库(/var/lib/mlocate/mlocate.db文件)来查找文件,这个数据库每天由cron程序来建立。当创建好这个数据库后,就可以方便地搜寻所需文件了,它比find命令的搜索速度还要快。

命令语法:
locate [选项][范本样式]

5.4系统信息显示

5.4.1 uname:显示计算机及操作系统相关信息
5.4.2 hostname:显示或修改计算机主机名
5.4.3 free:查看内存信息
5.4.4 du:显示目录或文件的磁盘占用量

5.4.1 uname:显示计算机及操作系统相关信息
显示计算机以及操作系统的相关信息,比如计算机硬件架构、内核发行号、操作系统名称、计算机主机名等。

命令语法:
uname [选项]


5.4.2 hostname:显示或修改计算机主机名

显示或修改计算机的主机名。

命令语法:
hostname [选项] [主机名|-F <文件>] 设置主机名
hostname [选项] 显示格式化主机名


5.4.3 free:查看内存信息

显示系统的物理内存和swap的使用情况。

命令语法:
free [选项]


5.4.4 du:显示目录或文件的磁盘占用量

显示目录或文件的磁盘占用量。逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块的情况。如果没有给出文件或目录名称,那么就对当前目录进行统计。

命令语法:
du [选项] [文件|目录]


5.5日期和时间

5.5.1 cal:显示日历信息
5.5.2 date:显示和设置系统日期和时间
5.5.3 hwclock:查看和设置硬件时钟

5.5.1 cal:显示日历信息
显示计算机系统的日历。

命令语法:
cal [选项] [[[日] 月] 年]


5.5.2 date:显示和设置系统日期和时间

显示和设置计算机系统的日期和时间。只有超级用户才有权限使用date命令设置日期和时间,而一般用户只能使用date命令显示日期和时间。

命令语法:
date [选项] [显示时间格式](以+开头,后面接格式)


5.5.3 hwclock:查看和设置硬件时钟

查看和设置硬件时钟(RTC),可以显示现在时钟,调整硬件时钟,将系统时间设置成与硬件时钟一致,或是把系统时间回存到硬件时钟。

命令语法:
hwclock [选项]


5.6 信息交流

5.6.1 echo:在显示器上显示文字
5.6.2 mesg:允许或拒绝写消息
5.6.3 wall:对全部已登录用户发送信息
5.6.4 write:向用户发送消息

5.6.1 echo:在显示器上显示文字
在计算机显示器上显示一段文字,一般起到一个提示的作用。字符串可以加引号,也可以不加引号。用echo命令输出加引号的字符串时,将字符串按原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分隔。

命令语法:
echo [选项] [字符串]


5.6.2 mesg:允许或拒绝写消息

控制系统中的其它用户是否能够用 write 命令或 talk 命令向您发送消息。不带选项的情况下,mesg 命令显示当前主机消息许可设置。

命令语法:
mesg [选项]


5.6.3 wall:对全部已登录用户发送信息

对全部已登录的用户发送信息。

命令语法:
wall [消息]


5.6.4 write:向用户发送消息

向用户发送消息。

命令语法:
write [用户] [终端名称]

5.7 其他命令

5.7.1 clear:清除计算机屏幕信息
5.7.2 uptime:显示系统已经运行的时间

5.7.1 clear:清除计算机屏幕信息
清除屏幕上的信息,该命令类似于Windows系统命令行中的cls命令。

命令语法:
clear


5.7.2 uptime:显示系统已经运行的时间

显示系统已经运行了多长时间,它依次显示下列信息:现在时间、系统已经运行了多长时间、目前有多少登录用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

命令语法:
uptime [选项]


第六章 shell编程

6.1 熟悉Shell程序的创建

6.1.1 语法基本介绍
6.1.2 Shell程序的创建过程

6.1.1 语法基本介绍
1.开头
2.注释
3.执行命令


6.1.2 Shell程序的创建过程

1.创建文件
2.设置可执行权限
3.执行Shell程序
4.使用bash命令执行程序


6.2 shell变量

6.2.1 Shell定义的环境变量
6.2.2 用户定义的变量
6.2.3 位置参数
6.2.4 预定义变量
6.2.5 参数置换的变量

6.2.1 Shell定义的环境变量
Shell在开始执行时就已经定义了一些与系统的工作环境有关的变量,用户还可以重新定义这些变量。


常用的shell变量
在这里插入图片描述6.2.2 用户定义的变量
用户可以按照下面的语法规则定义自己的变量。
变量名=变量值

在定义变量时,变量名前不应该加符号“ ” , 在 引 用 变 量 的 内 容 时 则 应 在 变 量 名 前 加 符 号 “ ”,在引用变量的内容时则应在变量名前加符号“ ”。在给变量赋值时,等号两边一定不能留空格,若变量中本身就包含了空格,则整个字符串都要用双引号括起来。在编写Shell程序时,为了使变量名和命令名相区别,建议所有的变量名都用大写字母来表示。


6.2.3 位置参数

位置参数是一种在调用Shell程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数。位置参数之间用空格分隔,Shell取第一个位置参数替换程序文件中的$1,第二个替换$2,依次类推。$0是一个特殊的变量,它的内容是当前这个Shell程序的文件名,所以$0不是一个位置参数,在显示当前所有的位置参数时是不包括$0的。


6.2.4 预定义变量

预定义变量和环境变量相类似,也是在Shell一开始时就定义了的变量。所不同的是,用户只能根据Shell的定义来使用这些变量,所有预定义变量都是由符号“$”和另一个符号组成的。


常用的shell预定义变量

在这里插入图片描述
6.2.5 参数置换的变量

Shell提供了参数置换功能以便用户可以根据不同的条件来给变量赋不同的值。参数置换的变量有四种,这些变量通常与某一个位置参数相联系,根据指定的位置参数是否已经设置决定变量的取值。
在这里插入图片描述


6.3 变量表达式

6.3.1 字符串比较
6.3.2 数字比较
6.3.3 逻辑测试
6.3.4 文件操作测试

test是Shell程序中的一个表达式,通过和Shell提供的if等条件语句相结合可以方便地测试字符串、文件状态和数字。其语法如下所示。
test [表达式]

表达式所代表的操作符有字符串操作符、数字操作符、逻辑操作符以及文件操作符。其中文件操作符是一种Shell特有的操作符,因为Shell里的变量都是字符串,为了达到对文件进行操作的目的,于是才提供了这样的一种操作符。

6.3.1 字符串比较
字符窜比较是用来测试字符串是否相同、长度是否为0、字符串是否为null。
在这里插入图片描述


6.3.2 数字比较
数字比较是用来测试数字大小的
在这里插入图片描述


6.3.3 逻辑测试
逻辑测试是用来测试文件是否存在
在这里插入图片描述


6.3.4 文件操作测试
文件操作测试表达式通常是为了测试文件的文件操作逻辑。
在这里插入图片描述

6.4 shell条件判断语句

6.4.1 if条件语句
6.4.2 case条件语句

6.4.1 if条件语句
Shell程序中的条件分支是通过if条件语句来实现的,其语法格式有if-then-fi语句和if-then-else-fi语句两种。
if-then-fi语句
语法格式:
if 命令行1
then
命令行2
fi

if-then-else-fi语句
语法格式:
if
命令行1
then
命令行2
else
命令行3
fi


6.4.2 case条件语句
语法格式:
if 命令行1
then
命令行2
fi

6.5 Shell循环控制语句

6.5.1 for循环语句
6.5.2 while循环语句
6.5.3 until循环语句

6.5.1 for循环语句
for循环语句对一个变量的可能的值都执行一个命令序列。赋给变量的几个数值既可以在程序中以数值列表的形式提供,也可以在程序以外以位置参数的形式提供。

for循环语句的语法格式如下所示。
  for 变量名  [in数值列表]
  do
   若干个命令行
  done


6.5.2 while循环语句

While语句是用命令的返回状态值来控制循环的。

语法格式:
  while
   若干个命令行1
  do
   若干个命令行2
  done


6.5.3 until循环语句

until循环语句是另外一种循环结构,它和while语句相类似。

语句格式:
  until
   若干个命令行1
  do
   若干个命令行2
  done


第7章 用户和组群账户管理

7.1 用户账户简介
7.2 用户账户设置
7.3 组群账户简介
7.4 组群账户设置
7.5 用户和组群账户维护

7.1 用户账户简介

7.1.1 用户账户分类
7.1.2 /etc/passwd文件
7.1.3 /etc/shadow文件

7.1.1 用户账户分类
用户账户在Linux系统中是分角色的,由于角色不同,每个用户的权限和所能完成的任务也不同。而在实际的管理中,用户的角色是通过UID(用户ID号)来标识的,每个用户的UID都是不同的。
1.root用户
2.系统用户
3.普通用户

7.1.2 /etc/passwd文件
/etc/passwd文件是系统识别用户的一个重要文件,Linux系统中所有的用户都记录在该文件中。假设用户以账户zhangsan登录系统时,系统首先会检查/etc/passwd文件,看是否有zhangsan这个账户,然后确定用户zhangsan的UID,通过UID来确认用户的身份,如果存在则读取/etc/shadow文件中所对应的密码。如果密码核实无误则登录系统,读取用户的配置文件。
任何用户都可以读取/etc/passwd文件内容,在/etc/passwd文件中,每一行表示的是一个用户账户的信息,一行有7个段位,每个段位用“:”分隔。
在这里插入图片描述
7.1.3 /etc/shadow文件
/etc/shadow文件是/etc/passwd的影子文件,这个文件并不是由/etc/passwd文件产生,这两个文件应该是对应互补的。/etc/shadow文件内容包括用户及被加密的密码以及其它/etc/passwd不能包括的信息,比如用户账户的有效期限等。
/etc/shadow文件只有root用可以读取和操作,文件的权限不能随便更改为其它用户可读,这样做是非常危险的。如果发现这个文件的权限变成了其它组群或用户可读了,要进行检查,以防系统安全问题的发生。
/etc/shadow文件的内容包括9个段位,每个段位之间用“:”分隔。
在这里插入图片描述

7.2用户账户设置

7.2.1 创建用户账户
7.2.2 修改用户账户
7.2.3 删除用户账户

7.2.1 创建用户账户
创建用户账户就是在系统中创建一个新账户,为新账户分配用户UID、组群、主目录和登录Shell等资源,新创建的用户账户默认是被锁定的,无法使用,需要使用passwd命令设置密码以后才能使用。创建用户账户就是在/etc/passwd文件中为新用户增加一条记录,同时更新/etc/shadow和/etc/group文件。

使用useradd命令都可以在Linux系统中创建用户账户。

命令语法:
useradd [选项] [用户名]

7.2.2 修改用户账户

使用usermod命令可以更改用户的Shell类型、所属的组群、用户密码的有效期,还能更改用户的登录名。

命令语法:
usermod [选项][用户名]

7.2.3 删除用户账户

使用userdel命令可以在Linux系统中删除用户账户,甚至连用户的主目录也一起删除。

命令语法:
userdel [选项][用户名]

7.3组群账户简介

7.3.1 组群账户分类
7.3.2 /etc/group文件
7.3.3 /etc/gshadow文件

7.3.1 组群账户分类
具有某种共同特征的用户集合就是组群。通过组群可以集中设置访问权限和分配管理任务。
在Linux系统中,有两种组群分类方法,一种方法将组群分为私有组群和标准组群。
1.私有组群
2.标准组群
另外一种方法将组群分为主要组群和次要组群。
1.主要组群
2.次要组群

7.3.2 /etc/group文件
/etc/group文件是组群的配置文件,内容包括用户和组群,并且能显示出用户是归属哪个组群或哪几个组群。一个用户可以归属一个或多个不同的组群,同一组群的用户之间具有相似的特征。比如把某一用户加入到root组群,那么这个用户就可以浏览root用户主目录的文件,如果root用户把某个文件的读写执行权限开放,root组群的所有用户都可以修改此文件;如果是可执行的文件,root组群的用户也是可以执行的。
组群的特性在系统管理中为系统管理员提供了极大的方便,但安全性也是值得关注的,如某个用户有对系统管理有最重要的内容,最好让用户拥有独立的组群,或者把用户的文件的权限设置为完全私有。
/etc/group文件的内容包括组群名、组群密码、GID及该组群所包含的用户,每个组群一条记录,一行有4个段位,每个段位用“:”分隔。
在这里插入图片描述组群GID和UID类似,是一个从0开始的正整数,GID为0的组群是root组群。Linux系统会预留GID号1~999给系统虚拟组群使用,创建的新组群GID是从1000开始的,查看系统创建组群默认的GID范围应该查看/etc/login.defs中的GID_MIN和GID_MAX值,可以使用以下命令查看。

7.3.3 /etc/gshadow文件
/etc/gshadow是/etc/group的加密文件,组群密码就是存放在这个文件中。/etc/gshadow和/etc/group是互补的两个文件;对于大型服务器,针对很多用户和组群,定制一些关系结构比较复杂的权限模型,设置组群密码是很有必要的。比如不想让一些非组群成员永久拥有组群的权限和特性,可以通过密码验证的方式来让某些用户临时拥有一些组群特性,这时就要用到组群密码。
/etc/gshadow文件中每个组群都有一条记录。一行有4个段位,每个段位用“:”分隔。
在这里插入图片描述

7.4组群账户设置

7.4.1 创建组群账户
7.4.2 修改组群账户
7.4.3 删除组群账户

7.4.1 创建组群账户
使用groupadd命令可以在Linux系统中创建组群账户。

命令语法:
groupadd [选项] [组群名]

7.4.2 修改组群账户
使用groupmod命令可以在Linux系统中修改组群账户,比如组群名称、GID等。

命令语法:
groupmod [选项][组群名]

7.4.3 删除组群账户
使用groupdel命令可以在Linux系统中删除组群账户。如果该组群中仍旧包括某些用户,那么必须先删除这些用户后,才能删除组群。

命令语法:
groupdel [组群名]

7.5 用户和组群账户维护

7.5.1 passwd命令
7.5.2 gpasswd命令
7.5.3 su命令
7.5.4 newgrp命令
7.5.5 groups 命令
7.5.6 id命令

7.5.1 passwd命令
设置或修改用户的密码,普通用户和超级权限用户都可以运行passwd,普通用户只能更改自己的用户密码,root用户可以设置或修改任何用户的密码。如果passwd 命令后面不接任何选项或用户名,则表示修改当前用户的密码。

命令语法:
passwd [选项] [用户名]

7.5.2 gpasswd命令
设置一个组群的组群密码,或者是在组群中添加、删除用户。

命令语法:
gpasswd [选项] [组群名]

7.5.3 su命令
使用su命令可以切换到其它用户账户进行登录。如果su命令不加任何选项,默认为切换到root用户,并且不改变Shell环境。

命令语法:
su [选项] [用户]

7.5.4 newgrp命令
让用户账户以另一个组群的身份进行登录。newgrp命令是以相同的账户名,不同的组群身份登录系统。如果要使用newgrp命令切换组群,用户必须是该组群的用户,否则将无法登录指定的组群。单一用户如果要同时隶属多个组群,需要利用交替用户的设置。如果不指定组群名称,则newgrp命令会登录该用户名称的预设组群。

命令语法:
newgrp [组群名]

7.5.5 groups 命令
使用groups命令可以显示指定用户账户的组群成员身份。

命令语法:
groups [用户名]

7.5.6 id命令
使用id命令可以显示用户的UID以及该用户所属组群的GID。

命令语法:
id [选项] [用户名]


# 第8章 磁盘分区和文件系统管理 8.1 磁盘分区和格式化简介 8.2 Linux磁盘分区 8.3 创建文件系统 8.4 挂载和卸载文件系统 8.5 开机自动挂载文件系统 8.6 使用交换空间

8.1 磁盘分区和格式化简介

8.1.1 什么是磁盘分区
8.1.2 什么是格式化

8.1.1 什么是磁盘分区
磁盘分区是指对硬盘物理介质的逻辑划分。将磁盘分成多个分区,不仅仅利于对文件的管理,而且不同的分区可以建立不同的文件系统,这样才能在不同的分区上安装不同的操作系统。
分区就是磁盘的“段落”,如果用户希望在计算机上安装多个操作系统,将需要更多的分区。假设需要同时安装Windows 10和Windows Server 2012系统,那么至少需要两个分区,原因是不同的操作系统原则上采用不同的文件系统。如果几个操作系统都支持相同的文件系统,通常为了避免在一个分区下有相同的系统目录,也将它们安装在不同的磁盘分区上。在Linux系统中,情况又有所不同,它本身又需要更多的磁盘分区,比如根分区“/”和swap分区。
磁盘分区一共有三种:主分区、扩展分区和逻辑驱动器。扩展分区只不过是逻辑驱动器的“容器”,实际上只有主分区和逻辑驱动器才能进行数据存储。在一块磁盘上最多只能有四个主分区,可以另外建立一个扩展分区来代替四个主分区的其中一个,然后在扩展分区下可以建立更多的逻辑驱动器。 
在Linux系统中进行分区可以使用fdisk和parted等命令,或者使用相同功能的图形界面程序。

8.1.2 什么是格式化
磁盘经过分区之后,下一个步骤就是要对磁盘分区进行格式化的工作(也就是创建文件系统的工作)。格式化是指对磁盘分区进行初始化的一种操作,这种操作通常会导致现有的分区中所有的数据被清除。简单说,就是把一张空白的磁盘划分成一个个小区域并编号,供计算机储存和读取数据使用。
格式化是在磁盘中建立磁道和扇区,建立好之后,计算机才可以使用磁盘来储存数据。格式化的动作通常是在磁盘的开端写入启动扇区的数据、在根目录记录磁盘卷标、为文件分配表保留一些空间,以及检查磁盘上是否有损坏的扇区,如果有的话则在文件分配表标上损毁的记号,表示该扇区并不用来储存数据。     通过分区当然不能产生任何文件系统。在分区之后只是对磁盘上的磁盘空间进行了保留,还不能直接使用,在此之后分区必须要进行格式化。在Windows系统下可以通过资源管理器下的文件菜单或者format程序来执行,而在Linux系统中大多使用mkfs命令来完成。
Linux系统支持不同的文件系统,目前应用最广泛的就是xfs和ext4。

8.2 Linux磁盘分区

使用fdisk命令可以用来对磁盘进行分区,它采用传统的问答式界面,除此之外还可以用来查看磁盘分区的详细信息,也能为每个分区指定分区的类型。

命令语法:
fdisk [选项] [设备]

  • fdisk交互式操作子命令

在这里插入图片描述

  • Linux常用分区类型

在这里插入图片描述

  • 更新分区表,使内核识别分区

root@rhel ~]# partprobe

8.3 创建文件系统

8.3.1 Linux主流文件系统
8.3.2 创建文件系统

8.3.1 Linux主流文件系统
对一个新的磁盘进行分区以后,还要对这些分区进行格式化并创建文件系统。一个分区只有建立了某种文件系统后,这个分区才能使用。建立文件系统的过程,就是用相应的格式化工具格式化分区的过程,这个过程和在Windows系统中格式化某个分区为NTFS分区的过程类似。
文件系统是指文件在硬盘上的存储方法和排列顺序。在Linux系统中,每个分区都需要一个文件系统,都有自己的目录层次结构。Linux系统最重要特征之一就是支持多种文件系统,这样它更加灵活,并可以和其他种操作系统共存。
随着Linux系统的不断发展,它所支持的文件系统类型也在迅速扩充,其中有XFS、ext4、ReiserFS、JFS、ext2、ext3、ISO9660、MSDOS,VFAT、NFS等。

8.3.2 创建文件系统
如果在计算机上新增加了一块硬盘,需要格式化成 Linux文件系统,最好选择xfs或ext4文件系统。使用mkfs命令可以在分区上创建各种文件系统。mkfs命令本身并不执行建立文件系统的工作,而是去调用相关的程序来执行。这里的文件系统是要指定的,比如xfs、ext4、ext3、vfat或者是msdos等。

命令语法:
mkfs [选项] [设备]

8.4 挂载和卸载文件系统

8.4.1 挂载文件系统
8.4.2 卸载文件系统
8.4.3 查看磁盘分区挂载情况

8.4.1 挂载文件系统
使用mount命令可以将指定分区、光盘、U盘或者是移动硬盘挂载到Linux系统的目录下。

命令语法:
mount [选项] [设备] [挂载目录]

  • mount命令挂载选项
    在这里插入图片描述

8.4.2 卸载文件系统
使用umount命令可以将指定分区、光盘、U盘或者是移动硬盘进行卸载。umount可以卸载目前挂载在Linux目录中的文件系统, 除了直接指定文件系统外,也可以使用设备名称或挂载目录来表示文件系统。

命令语法:
umount [选项] [设备|挂载目录]

8.4.3 查看磁盘分区挂载情况
要查看Linux系统上的磁盘分区挂载情况,可以使用df命令来获取信息。使用df命令可以显示每个文件所在的文件系统的信息,默认是显示所有文件系统。检查文件系统的磁盘空间使用情况,利用该命令获取硬盘使用了多少空间、目前还剩下多少空间等相关信息。

命令语法:
df [选项] [文件]

8.5 开机自动挂载文件系统

8.5.1 /etc/fstab文件简介
8.5.2 设置开机自动挂载文件系统

8.5.1 /etc/fstab文件简介
/etc/fstab文件包含了所有磁盘分区以及存储设备的信息。其中包含了磁盘分区和存储设备如何挂载,以及挂载在什么目录上的信息。/etc/fstab文件是一个简单的文本文件,必须要以root用户登录才可以编辑该文件。
如果在Linux系统中不能访问Windows的分区,或者做为一名普通用户,不能挂载光驱和向软盘中写入数据,或者在管理CD-RW的过程中遇到了问题,就有可能是错误地配置了/etc/fstab文件,通常可以通过编辑/etc/fstab文件来解决前面提到的问题。
由于每一台计算机系统的磁盘分区和设备属性不同,所以/etc/fstab文件也不一样,但是基本的结构总是相似的。每一行都包含着一个设备或磁盘分区的信息,每一行又有多个列的信息。
/etc/fstab文件构成

  1. 设备
  2. 挂载目录
  3. 文件系统类型
  4. 挂载选项
  5. 文件系统检查选项

8.5.2 设置开机自动挂载文件系统

  1. 使用设备名
  2. 使用UUID
  3. 使用卷标

8.6 使用交换空间

8.6.1 使用交换分区
8.6.2 使用交换文件

8.6.1 使用交换分区
Linux系统中的交换空间在物理内存被用完时使用。如果系统需要更多的内存资源,而物理内存已经用完,内存中不活跃的页就会被转移到交换空间中。虽然交换空间可以为带有少量内存的计算机提供帮助,但是这种方法不应该被当做是对内存的取代。
用户有时需要在安装Linux系统后添加更多的交换空间,可以通过添加一个交换分区(推荐优先使用)或添加一个交换文件来实现。交换空间的总大小一般为计算机物理内存的1~2倍左右,计算机物理内存越大,倍数越小。

8.6.2 使用交换文件
添加交换分区

  1. 创建磁盘分区
  2. 创建交换分区
  3. 启用交换分区
  4. 确认已经启用交换分区
  5. 编辑/etc/fstab文件

删除交换分区

  1. 禁用交换分区
  2. 编辑/etc/fstab文件

添加交换文件

  1. 创建/swapfile文件
  2. 创建交换文件
  3. 启用交换文件
  4. 查看交换文件是否启用
  5. 编辑/etc/fatab文件

删除交换文件

  1. 禁用交换文件
  2. 删除/swapfile文件
  3. 编辑/etc/fatab文件

第9章 软件包管理

本章内容
9.1 RPM软件包管理
9.2 使用yum管理RPM软件包
9.3 tar包管理

9.1 RPM软件包管理

9.1.1 RPM软件包简介
9.1.2 管理RPM软件包

9.1.1 RPM软件包简介

什么是RPM软件包
RPM(Red Hat Package Manager,Red Hat软件包管理器)是一种开放的软件包管理系统,按照GPL条款发行,可以运行于各种Linux系统上。
RPM简化了Linux系统安装、卸装、更新和升级的过程,只需要使用简短的命令就可完成。RPM维护一个已经安装软件包和它们的文件的数据库,因此,可以在系统上使用查询和校验软件包功能。
RPM允许把软件编码包装成源码包和程序包,然后提供给终端用户,这个过程非常简单,这种对用户的纯净源码、补丁和建构指令的清晰描述减轻了发行软件新版本所带来的维护负担。Linux系统上的所有软件都被分成可被安装、升级或卸载的RPM软件包。

**RPM软件包管理用途 **

  • 可以安装、删除、升级、刷新和管理RPM软件包;
  • 通过RPM软件包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个RPM软件包;
  • 可以查询系统中的RPM软件包是否安装并查询其安装的版本;
  • 开发者可以把自己的程序打包为RPM软件包并发布;
  • 软件包签名GPG和MD5的导入、验证和签名发布;
  • 依赖性的检查,查看是否有RPM软件包由于不兼容而扰乱系统。

RPM软件包管理基本操作模式
RPM软件包管理主要有安装(添加)、删除(卸载)、刷新、升级、查询这五种基本操作模式,

9.1.2 管理RPM软件包

安装RPM软件包
使用rpm命令可以在Linux系统中安装、删除、刷新、升级、查询RPM软件包。

命令语法:
rpm -ivh [RPM软件包文件名称]

删除RPM软件包
使用rpm -e命令可以在Linux系统中删除RPM软件包。

命令语法:
rpm -e [RPM包名称]

升级RPM软件包
使用rpm -Uvh命令可以在Linux系统中升级RPM软件包,升级软件包实际上是删除和安装的组合。不管该软件包的早期版本是否已被安装,升级选项都会安装该软件包。

命令语法:
rpm -Uvh [RPM软件包文件名称]

刷新软件包
使用rpm -Fvh命令可以在Linux系统中刷新RPM软件包。使用RPM刷新软件包时,系统会比较指定的软件包的版本和系统上已安装的版本。当RPM的刷新选项处理的版本比已安装的版本更新,它就会升级到更新的版本。如果软件包先前没有安装,RPM的刷新选项将不会安装该软件包,这和RPM的升级选项不同。

命令语法:
rpm -Fvh [RPM软件包文件名称]

查询指定RPM软件包是否已经安装
命令语法:
rpm -q [RPM包名称]

查询系统中所有已经安装的RPM软件包
命令语法:
rpm -qa

查询已安装RPM软件包的描述信息
命令语法:
rpm -qi [RPM包名称]

查询指定已安装RPM软件包所包含的文件列表
命令语法:
rpm -ql [RPM包名称]

查询RPM软件包的依赖关系
命令语法:
rpm -qR [RPM包名称]

查询系统中指定文件属于哪个RPM软件包
命令语法:
rpm -qf [文件名]

9.2 使用yum管理RPM软件包

9.2.1 什么是yum
9.2.2 yum软件仓库配置文件
9.2.3 创建本地软件仓库
9.2.4 yum命令使用

什么是yum
在Linux系统中安装软件包使用rpm命令,但是使用rpm命令安装软件包特别的麻烦,原因在于需要手动寻找安装该软件包所需要的一系列依赖关系。当软件包不用时需要卸载的话,由于卸载掉了某个依赖关系而导致其它的软件包不能用。
yum(Yellow dog Updater Modified)起初是由Terra Soft研发,其宗旨是自动化地升级、安装和删除RPM软件包,收集RPM软件包的相关信息,检查依赖性并且一次安装所有依赖的软件包,无须繁琐地一次次安装。
yum的关键之处是要有可靠的软件仓库,软件仓库可以是HTTP站点、FTP站点或者是本地软件池,但必须包含rpm的header,header包括了RPM软件包的各种信息,包括描述、功能、提供的文件以及依赖性等。正是收集了这些header并加以分析,才能自动化地完成余下的任务。

yum特点
可以同时配置多个软件仓库;
简洁的配置文件/etc/yum.conf;
自动解决安装或者删除RPM软件包时遇到的依赖性问题;
使用yum非常方便;
保持与RPM数据库的一致性。

**yum软件仓库配置文件 **
repo文件是Linux系统中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,比如从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用。软件仓库配置文件默认存储在/etc/yum.repos.d目录中。

**创建本地软件仓库 **

  1. 安装软件包
  2. 复制软件包
  3. 创建软件仓库配置文件
  4. 建软件仓库

**yum命令使用 **
使用yum命令可以安装、更新、删除、显示软件包。yum可以自动进行系统更新,基于软件仓库的元数据分析,解决软件包依赖性关系。

命令语法:
yum [选项] [命令]

9.3 tar包管理

9.3.1 tar包简介
9.3.2 tar包使用和管理
9.3.3 tar包的特殊使用

9.3.1 tar包简介
Linux系统中最常使用的归档程序是tar,使用tar程序归档的包称为tar包,tar包文件的名称通常都是以“.tar”结尾的。生成tar包以后,还可以使用其它程序来对tar包进行压缩。tar可以为文件和目录创建备份。利用tar命令,用户可以为某一特定文件创建备份,也可以在备份中改变文件,或者向备份中加入新的文件。
利用tar命令可以把一大堆的文件和目录打包成一个文件,这对于备份文件或是将几个文件组合成为一个文件进行网络传输是非常有用的。
Linux系统中的很多压缩程序只能针对一个文件进行压缩,这样当需要压缩一大堆文件时,就得先借助其它的工具(比如tar)将这一大堆文件先打成一个包,然后再使用压缩程序进行压缩。

9.3.2 tar包使用和管理
使用tar命令可以将许多文件一起保存到一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件。

命令语法:
tar [选项][文件|目录]

9.3.3 tar包的特殊使用
1.tar调用gzip
使用tar命令可以在归档或者是解包的同时调用gzip压缩程序。以“.gz”结尾的文件就是gzip压缩的结果。与gzip相对应的解压缩程序是gunzip,tar命令中使用-z选项来调用gzip。

2.tar调用bzip2
使用tar命令可以在归档或者是解包的同时调用bzip2压缩程序。以“.bz2”结尾的文件就是bzip2压缩的结果。与bzip2相对应的解压缩程序是bunzip2。tar命令中使用-j选项来调用bzip2。

3.tar调用xz
使用tar命令可以在归档或者是解包的同时调用xz压缩程序。以“.xz”结尾的文件就是xz压缩的结果。tar命令中使用-J选项来调用。

第10章 权限和所有者

本章内容
10.1 权限设置
10.2 更改文件和目录所有者

10.1 权限设置

10.1.1 文件和目录权限简介
10.1.2 设置文件和目录基本权限
10.1.3 设置文件和目录特殊权限

10.1.1 文件和目录权限简介
在Linux系统中,用户对一个文件或目录具有访问权限,这些访问权限决定了谁能访问,以及如何访问这些文件和目录。通过设置权限可以限制或允许以下三种用户访问:文件的用户所有者(属主)、文件的组群所有者(用户所在组的同组用户)、系统中的其它用户。
在Linux系统中,每一位用户都有对文件或目录的读取、写入和执行权限。第一套权限控制访问自己的文件权限,即所有者权限。第二套权限控制用户组访问其中一个用户的文件的权限。第三套权限控制其它所有用户访问一个用户的文件的权限。这三套权限赋予用户不同类型(即用户所有者、组群所有者和其它用户)的读取、写入及执行权限,这就构成了一个有九种类型的权限组。
同时,用户能够控制一个给定的文件和目录的访问程度。一个文件和目录可能有读取、写入及执行权限。当创建一个文件时,系统会自动地赋予文件所有者读和写的权限,这样可以允许所有者能够显示文件内容和修改文件。文件所有者可以将这些权限更改为任何权限。一个文件也许只有读权限,禁止任何修改。文件也可能只有执行权限,允许它像一个程序一样执行。
r、w、x、-字符意义
r(读取):对文件而言,该用户具有读取文件内容的权限;对目录来说,该用户具有浏览目录的权限;
w(写入):对文件而言,该用户具有新增、修改文件内容的权限;对目录来说,该用户具有删除、移动目录内文件的权限;
x(执行):对文件而言,该用户具有执行文件的权限;对目录来来说,该用户具有进入目录的权限;
-:表示不具有该项权限。

**权限字符组合举例 **
在这里插入图片描述**文字设定法设置权限 **
通过文字设定法更改权限需要使用chmod命令,在一个命令行中可给出多个权限方式,其间用逗号隔开。

chmod的命令语法如下:
chmod [操作对象] [操作符号] [权限] [文件|目录]

**操作对象 **
在这里插入图片描述**操作符号 **
在这里插入图片描述
10.1.2 设置文件和目录基本权限
**数字设定法设置权限 **
文件和目录的权限表中用r、w、x这三个字符来为用户所有者、组群所有者和其它用户设置权限。有时候,字符似乎过于麻烦,因此还有另外一种方法是以数字来表示权限,而且仅需三个数字。
使用数字设定法更改文件权限,首先必须了解数字表示的含义:0表示没有权限,1表示可执行权限,2表示写入权限,4表示读取权限,然后将其相加。

权限字符转换为数字
所有数字属性的格式应该是三个0~7的数,其顺序是u、g、o。
r:对应数值4;
w:对应数值2;
x:对应数值1;
-:对应数值0。

权限字符转换为数字举例
-rwx------:用数字表示为700;
-rwxr–r--:用数字表示为744;
-rw-rw-r-x:用数字表示为665;
drwx–x--x:用数字表示为711;
drwx------:用数字表示为700。

数字设定法设置权限命令
命令语法:
chmod [n1n2n3] [文件|目录]

n1表示用户所有者的权限 , n2表示组群所有者的权限,n3表示其它用户的权限。

10.1.3 设置文件和目录特殊权限
用户如果没有特殊的需求,一般是不需要启用特殊权限,避免出现安全方面的隐患。
特殊权限有以下几种类型。
(1)SUID
对一个可执行文件,不是以发起者身份来获取资源,而是以可执行文件的用户所有者身份来执行。
(2)SGID
对一个可执行文件,不是以发起者身份来获取资源,而是以可执行文件的组群所有者身份来执行。 (3)Sticky
对文件或目录设置Sticky之后,尽管其它用户有写权限,也必须由文件所有者执行删除和移动等操作。

数字设定法设置特殊权限
如果要设置特殊权限,就必须使用四位数字才能表示。
特殊权限的对应数值如下表示。
SUID:对应数值4;
SGID:对应数值2;
Sticky:对应数值1。

10.2 更改文件和目录所有者

文件和目录所有者简介
文件和目录的创建者默认就是该文件和目录的所有者,他们对该文件和目录具有任何权限,可以进行任何操作。他们也可以将所有者转交给别的用户,使别的用户对该文件和目录具有任何操作权限。文件和目录的所有者及所属用户组也能修改,可以通过命令来修改。

更改文件和目录所有者
使用chown命令可以更改文件和目录的用户所有者和组群所有者。

命令语法:
chown [选项] [用户.组群] [文件|目录]
chown [选项] [用户:组群] [文件|目录]

第11章 Linux日常管理和维护

本章内容
11.1 进程管理
11.2 任务计划
11.3 Linux系统启动过程
11.4 维护GRUB 2
11.5 设置GRUB 2加密
11.6 GRUB 2配置案例

11.1 进程管理

11.1.1 进程概念
11.1.2 查看系统进程信息
11.1.3 杀死进程

11.1.1 进程概念
大多数系统都只有一个CPU和一个内存,但一个系统可能有多个二级存储磁盘和多个输入/输出设备。操作系统管理这些资源并在多个用户间共享资源,当提出一个请求时,操作系统监控着一个等待执行的任务队列,这些任务包括用户作业、操作系统任务、邮件和打印作业等。操作系统根据每个任务的优先级为每个任务分配合适的时间片,每个时间片大约都有零点几秒,虽然看起来很短,但实际上已经足够计算机完成成千上万的命令集。每个任务都会被系统运行一段时间,然后挂起,系统转而处理其它任务。过一段时间以后再回来处理这个任务,直到某个任务完成,从任务队列中去除。
Linux系统上所有运行的内容都可以称为进程。每个用户任务、每个系统管理守护进程都可以称为进程。Linux系统用分时管理方法使所有的任务共同分享系统资源。我们讨论进程的时候,不会去关心这些进程究竟是如何分配的,或者内核是如何管理、分配时间片的,我们所关心的是如何去控制这些进程,让它们能够很好地为用户服务。
进程是在自身的虚拟地址空间运行的一个单独的程序。进程与程序之间还是有明显区别的。程序只是一个静态的命令集合,不占系统的运行资源;而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。一个程序可以启动多个进程。和进程相比较,作业是一系列按一定顺序执行的命令。一条简单的命令可能会涉及多个进程,尤其是当使用管道和重定向时。

进程具有的特征
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生、动态消亡的。
并发性:任何进程都可以同其它进程一起并发执行。
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。
异步性:由于进程间的相互制约,使得进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。
结构特征:进程由程序、数据和进程控制块三部分组成。
多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。

进程种类
交互式进程:一个由Shell启动并控制的进程,交互式进程既可在前台运行,也可在后台运行。
批处理进程:与终端无关,安排在指定时刻完成的一系列进程。
守护进程:在引导系统时启动,以执行即时的操作系统任务,比如crond、rsyslogd、named等。

11.1.2 查看系统进程信息
ps命令
是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行以及进程运行的状态、进程是否结束、进程有没有僵死,以及哪些进程占用了过多的资源等。

命令语法:
ps [选项]

top命令
使用top命令可以显示当前正在运行的进程以及关于它们的重要信息,包括它们的内存和CPU使用量。执行top命令可以显示目前正在系统中执行的进程,并通过它所提供的互动式界面,用热键加以管理。要退出top,按[q] 键即可。

命令语法:
top [选项]

11.1.3 杀死进程
要关闭某个应用程序可以通过杀死其进程的方式实现,如果进程一时无法杀死,可以将其强制杀死。使用kill命令可以杀死进程。在使用kill命令之前,需要得到要被杀死的进程的PID(进程号)。用户可以使用ps命令获得进程的PID,然后用进程的PID作为kill命令的参数。

命令语法:
kill [选项] [进程号]

11.2 任务计划

11.2.1 /etc/crontab文件实现任务计划
11.2.2 使用crontab命令实现任务计划

11.2.1 /etc/crontab文件详解
root用户通过修改/etc/crontab文件可以实现任务计划,而普通用户却无法修改该文件。crond守护进程可以在无需人工干预的情况下,根据时间和日期的组合来调度执行重复任务。
/etc/crontab文件前面3行是用来配置cron任务运行环境的变量。Shell变量的值告诉系统要使用哪个Shell环境(在这个例子里是/bin/bash)。PATH变量定义用来执行命令的路径。cron任务的输出被邮寄给MAILTO变量定义的用户名。如果MAILTO变量被定义为空白字符串,电子邮件就不会被寄出。

/etc/crontab文件内容
在这里插入图片描述
时间格式
在这里插入图片描述

11.2.2 使用crontab命令实现任务计划

  • crontab命令简介
    root以外的用户可以使用crontab命令配置cron任务。所有用户定义的crontab都被保存在/var/spool/cron目录中,并使用创建它们的用户身份来执行。
    以某位用户身份创建一个crontab项目,登录为该用户,然后输入crontab -e命令,使用由VISUAL或EDITOR环境变量指定的编辑器来编辑该用户的crontab。该文件使用的格式和/etc/crontab相同。当对crontab所做的改变被保存后,该crontab文件会根据该用户名被保存在/var/spool/cron/文件中。
    crond守护进程每分钟都检查/etc/crontab文件、/etc/cron.d目录以及/var/spool/cron目录中的改变。如果发现了改变,它们就会被载入内存。
  • crontab命令语法
    使用crontab命令可以创建、修改、查看以及删除crontab条目。
    命令语法:
    crontab [选项]
    crontab [选项] [文件]
  • 创建crontab
    创建新的crontab,然后提交给crond进程,它将每隔十五分钟运行一次。同时,新创建crontab的一个副本已经被放在/var/spool/cron目录中,文件名就是用户名。
  • 编辑创建crontab
    如果希望添加、删除或编辑/var/spool/cron/zhangsan文件,可以使用vi编辑器像编辑其它任何文件那样修改/var/spool/cron/zhangsan文件并保存退出。如果修改了某些条目或添加了新的条目,那么在保存该文件时,crond会对其进行必要的完整性检查。如果其中的某个地方出现了超出允许范围的值,它会提示用户。
    最好在/var/spool/cron/zhangsan文件的每一个条目之上加入一条注释,这样就可以知道它的功能、运行时间,更为重要的是,知道这是哪位用户的作业。
  • 列出crontab
    【例11.13】 以root用户列出zhangsan的crontab。
    [root@rhel ~]# crontab -u zhangsan -l
    【例11.14】 以普通用户zhangsan列出自己的crontab。
    [zhangsan@rhel ~]$ crontab -l
    【例11.15】 对/var/spool/cron/zhangsan文件做备份。
    [zhangsan@rhel ~]$ crontab -l >/home/zhangsan/zhangsancron
  • 删除crontab
    删除crontab时也会删除/var/spool/cron目录中指定用户的文件。
  • 恢复丢失的crontab文件
    如果不小心误删除了crontab文件,且在主目录下还有一个备份,那么可以将其复制到/var/spool/cron/,其中是用户名。
    如果由于权限问题无法完成复制,可以使用以下命令,其中需要指定在用户主目录中复制的副本文件名。
    crontab [文件]

11.3 Linux系统启动过程

1.BIOS自检
2.启动GRUB 2
3.加载内核
4.执行systemd进程
5.初始化系统环境
6.执行/bin/login程序

11.4 维护GRUB 2

11.4.1 GRUB 2简介
11.4.2 GRUB 2主配置文件
11.4.3 /etc/grub.d目录
11.4.4 /etc/default/grub文件详解

11.4.1 GRUB 2简介
当计算机要引导操作系统时,BIOS会读取引导介质上最前面的主引导记录(MBR记录)。主引导记录本身要包含两类内容:引导加载程序和分区表。
GRUB是Linux系统默认的引导加载程序。在Linux加载一个系统前,它必须由一个引导加载程序中的特定指令去引导系统。这个程序一般是位于系统的主硬盘驱动器或其他介质驱动器上。
Linux安装程序允许用户快速、方便地配置引导加载程序,将其存放在主硬盘驱动的主引导记录中来引导操作系统。
GNU GRUB是一个将引导加载程序安装到主引导记录的程序,主引导记录是位于一个硬盘开始的扇区。它允许位于主引导记录区中特定的指令来加载一个GRUB菜单或是GRUB的命令环境。这使得用户能够开始操作系统的选择,在内核引导时传递特定指令给内核,或是在内核引导前确定一些系统参数(如可用的RAM大小)。
GRUB支持直接和链式加载的引导方法。GRUB能用于几乎所有操作系统、绝大多数流行的文件系统以及几乎所有的系统BIOS所能识别的硬盘。

11.4.2 GRUB 2主配置文件

GRUB 2的配置是通过以下三个地方的文件来完成的。
/boot/grub2/grub.cfg文件(/etc/grub2.cfg文件是/boot/grub2/grub.cfg文件的软链接)。
/etc/grub.d目录。
/etc/default/grub文件(/etc/sysconfig/grub文件是/etc/default/grub文件的软链接)。
他们的关系是/boot/grub2/grub.cfg文件里面通过“####BEGIN #####”这种格式按照顺序调用/etc/grub.d目录中的脚本实现不同的功能。/etc/grub.d目录中有很多数字开头的脚本,按照从小到大的顺序执行。以00_header为例,他又会调用/etc/default/grub 配置文件来实现最基本的开机界面配置。
比如在/boot/grub2/grub.cfg文件里面调用/etc/grub.d/10_linux 来配置不同的内核,这里面有2个 menuentry(菜单项),所以开机的时候会看见两个默认选项,一个是普通模式,一个是救援模式。

**GRUB 2中设备和分区命名规则 **

GRUB 2采用模块化动态加载的思想,相比GRUB来讲不用在构建时将所有功能都加入,这使得GRUB 2的体积相比变得很小,整个GRUB 2的内核映像可以控制在31KB以内(GRUB的映像在百KB级别),因此GRUB 2完全可以移除GRUB中存在的stage 1.5阶段,而可以将整个映像放在GRUB中的stage1.5存放的位置。
(1)图形接口。
(2)使用模块机制,通过动态加载需要的模块来扩展功能。
(3)支持脚本语言,比如条件判断、循环、变量和函数。
(4)支持救援模式,可以用于系统无法引导的情况。
(5)国际化语言。包括支持非ASCII的字符集和类似gettext的消息分类、字体、图形控制台等。
(6)有一个灵活的命令行接口。如果不存在配置文件,GRUB 2会自动进入命令模式。
(7)针对文件系统、文件、设备、驱动、终端、命令、分区表、系统加载的模块化、层次化、基于对象的框架。
(8)支持多种文件系统格式。
(9)可以访问已经安装在设备上的数据。
(10)支持自动解压。
GRUB 2同样以fd表示软盘,hd表示硬盘(包含IDE和SCSI硬盘)。设备是从0开始编号,分区则是从1开始,主分区从1~4,逻辑驱动器从5开始。
下面讲解一下设备和分区的使用方法。
(fd0):表示第一个软盘。
(hd0):表示第一个硬盘(大多数U盘与USB接口的移动硬盘以及SD卡也都被当作硬盘看待)。
(hd0,msdos1):表示第一个硬盘的第一个分区。
(hd0,msdos1)/boot/vmlinuz-3.10.0-327.el7.x86_64:表示第一个硬盘的第一个分区下的boot目录下的vmlinuz-3.10.0-327.el7.x86_64文件。
(hd1,msdos1) :表示第二硬盘的第一分区。
(cd) :启动光盘(仅在从光盘启动GRUB时可用)。
(cd0):第一个光盘。

11.4.3 /etc/grub.d目录
定义每个菜单项的所有脚本都存放在/etc/grub.d目录中,这些脚本的名称必须有两位的数字前缀,其目的是:在构建GRUB 2菜单时定义脚本的执行顺序以及相应菜单项的顺序,比如00_header文件首先被读取。
在使用grub2-mkconfig命令生成配置文件时需要加载/etc/grub.d目录。
在这里插入图片描述
11.4.4 /etc/default/grub文件详解
/etc/default/grub文件是一个文本文件,可以在该文件中设置通用配置变量和GRUB 2菜单的其它特性。在更改/etc/default/grub文件后,需要使用grub2-mkconfig命令更新GRUB 2配置文件才能使更改生效。

11.5 设置GRUB 2加密

11.5.1 GRUB 2加密简介
11.5.2 设置GRUB 2 PBKDF2加密口令
11.5.3 设置GRUB 2明文密码
11.5.4 GRUB 2解锁

11.5.1 GRUB 2加密简介
由于GRUB 2负责引导Linux系统,作为系统中的第一道屏障的安全性非常重要,对GRUB 2进行加密可以实现安全性。
在默认情况下,GRUB 2对于所有可以在物理上进入控制台的人都是可访问的。任何人都可以选择并编辑任意菜单项,并且可以直接访问GRUB命令行。要启用认证支持,必须将环境变量superusers设置为一组用户名(可以使用空格、逗号、分号作为分隔符),这样将只允许superusers(超级用户)中的用户使用GRUB命令行、编辑菜单项、以及执行任意菜单项。
GRUB密码支持格式
明文密码:密码数据没有经过加密,安全性差;
PBKDF2加密密码:密码经过PBKDF2哈希算法进行加密,在文件中存储的是加密后的密码数据,安全性较高。

11.5.2 设置GRUB 2 PBKDF2加密口令

  1. 生成PBKDF2加密口令
  2. 编辑/etc/grub.d/00_header文件
  3. 生成GRUB 2配置文件

11.5.3 设置GRUB 2明文密码
1.修改/etc/grub.d/00_header 文件
2.生成GRUB 2配置文件

11.5.4 GRUB 2解锁
在这里插入图片描述

11.6 GRUB 2配置案例

11.6.1 破解root用户密码
11.6.2 将网卡名称eno16777736更改为eth0

11.6.2 将网卡名称eno16777736更改为eth0
1.修改/etc/default/grub文件
2.生成GRUB 2配置文件
3.查看网卡名称

第12章 Linux网络基本配置

本章内容
12.1 常用网络配置文件
12.2 常用网络命令
12.3 管理网络服务

12.1 常用网络配置文件

12.1.1 /etc/sysconfig/network-scripts/ifcfg-eno16777736文件
12.1.2 /etc/resolv.conf文件
12.1.3 /etc/hosts文件
12.1.4 /etc/services文件

12.1.1 /etc/sysconfig/network-scripts/ifcfg-eno16777736文件
在Linux统中,系统网络设备的配置文件保存在/etc/sysconfig/network-scripts目录下,其中文件ifcfg-eno16777736包含一块网卡的配置信息,文件ifcfg-lo包含回路IP地址信息。

12.1.2 /etc/resolv.conf文件
/etc/resolv.conf文件是由域名解析器使用的配置文件。

12.1.3 /etc/hosts文件
当计算机启动时,在可以查询DNS以前,计算机需要查询一些主机名到IP地址的匹配。这些匹配信息存放在/etc/hosts文件中。在没有域名服务器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址。

12.1.4 /etc/services文件
定义Linux系统中所有服务的名称、协议类型、服务的端口等信息。

12.2 常用网络命令

12.2.1 traceroute
12.2.2 ifconfig
12.2.3 ping
12.2.4 netstat
12.2.5 arp
12.2.6 tcpdump

12.2.1 traceroute
显示数据包到目标主机之间的路径。traceroute命令使用户可以追踪网络数据包的路由途径,预设IPv4数据包大小是60字节,用户可以另外设置。

命令语法:
traceroute [选项] [主机名|IP地址] [数据包大小]

12.2.2 ifconfig
显示和配置网络接口,比如设置IP地址、MAC地址、激活或关闭网络接口。

命令语法:
ifconfig [接口] [选项| IP地址]

12.2.3 ping
用来测试与目标计算机之间的连通性。执行ping命令会使用ICMP传输协议发出要求回应的信息,如果远程主机的网络功能没有问题,就会回应该信息,因而得知该主机是否运作正常。

命令语法:
ping [选项] [目标]

12.2.4 netstat
用来显示网络状态的信息,得知整个Linux系统的网络情况,比如网络连接、路由表、接口统计、伪装连接和组播成员。

命令语法:
netstat [选项] [延迟]

12.2.5 arp
用来增加、删除和显示ARP缓存条目。

命令语法:
arp [选项] [IP地址][MAC地址]

12.2.6 tcpdump
是Linux系统中强大的网络数据采集分析工具之一,可以将网络中传送的数据包的头完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来筛选信息。作为互联网上经典的的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的工具之一。

命令语法:
tcpdump [选项] [表达式]

12.3 管理网络服务

systemd简介
RHEL 7系统使用systemd,它提供更优秀的框架以表示系统服务间的依赖关系,并实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果,最终代替现在常用的System V。
在RHEL7之前,服务管理工作是由System V通过/etc/rc.d/init.d目录下的Shell脚本来执行的,通过这些脚本允许管理员控制服务的状态。在RHEL 7中,这些脚本被服务单元文件替换。在systemd中,服务、设备、挂载等资源统一被称为单元,所以systemd中有许多单元类型,服务单元文件的扩展名是.service,同Shell脚本的功能相似。比如有查看、启动、停止、重启、启用或者禁止服务的参数。
一个单元的配置文件可以描述系统服务(.service)、挂载点(.mount)、sockets(.sockets)、系统设备(.device)、交换分区(.swap)、文件路径(.path)、启动目标(.target)、由systemd管理的计时器(.timer)等。

systemd单元文件放置位置
/usr/lib/systemd/system:systemd默认单元文件安装目录;
/etc/systemd/system:系统管理员创建和管理的单元目录,优先级最高。

systemctl命令语法
使用 systemctl 控制单元时,通常需要使用单元文件的全名,包括扩展名(比如sshd.service)。如果没有指定扩展名,systemctl 默认把扩展名当作.service。

命令语法:
systemctl [选项] [单元命令|单元文件命令]

第13章 远程连接服务器配置

本章内容
13.1 SSH和OpenSSH简介
13.2 OpenSSH服务器安装和配置
13.3 配置OpenSSH客户端
13.4 VNC服务器配置
13.5 连接VNC服务器

13.1 SSH和OpenSSH简介

什么是SSH
ftp和telnet在本质上是不安全的,因为它们在网络上使用明文传输口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且这些程序的安全验证方式也是有弱点的,很容易受到“中间人”这种方式的攻击。
SSH (Secure Shell,安全Shell)是由IETF的网络工作小组所制定,为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其它网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。
通过使用SSH可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也可以防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop和ppp提供一个安全的通道。

什么是OpenSSH
SSH因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH(Open Secure Shell,开放安全Shell)是SSH的替代软件,而且是免费的。默认使用RSA密钥,它采用安全、加密的网络连接工具代替telnet、ftp、rlogin、rsh和rcp工具。
使用OpenSSH工具将增进系统安全性,在使用OpenSSH软件进行通信时,登录验证口令将会被加密。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程中的数据,并由此来代替原来的类似服务。
telnet和ftp使用纯文本口令,并以明文发送。这些信息可能会被截取,口令可能会被检索,未经授权的人员可能会使用截取的口令登录用户的系统,而对系统产生危害,所以应该尽可能使用OpenSSH工具来避免这些安全问题。
另一个使用OpenSSH的原因是,它自动把DISPLAY变量转发给客户主机。如果在本地主机上运行X窗口系统,并且使用ssh命令登录到远程主机上,当在远程主机上执行一个需要X的程序时,该程序会在本地主机上执行。

13.2 OpenSSH服务器安装和配置

13.2.1 安装OpenSSH服务器软件包
13.2.2 /etc/ssh/sshd_config文件详解
13.2.3 OpenSSH服务器配置实例

13.2.1 安装OpenSSH服务器软件包
安装openssh-server、openssh、openssh-clients和openssh-askpass软件包。
[root@rhel ~]# cd /run/media/root/RHEL-7.2\ Server.x86_64/Packages
[root@rhel Packages]# rpm -ivh openssh-6.6.1p1-22.el7.x86_64.rpm
[root@rhel Packages]# rpm -ivh openssh-server-6.6.1p1-22.el7.x86_64.rpm
[root@rhel Packages]# rpm -ivh openssh-clients-6.6.1p1-22.el7.x86_64.rpm
[root@rhel Packages]# rpm -ivh openssh-askpass-6.6.1p1-22.el7.x86_64.rpm

13.2.2 /etc/ssh/sshd_config文件详解
OpenSSH服务器的主配置文件是/etc/ssh/sshd_config文件,这个文件的每一行都是“关键词 值”的格式。一般情况下不需要配置该文件即可让用户在客户端计算上进行连接。
在/etc/ssh/sshd_config配置文件中,以“#”开头的行是注释行,它为用户配置参数起到解释作用,这样的语句默认不会被系统执行。

Port 22
设置OpenSSH服务器监听的端口号,默认为22。
ListenAddress  0.0.0.0
设置OpenSSH服务器绑定的IP地址。
HostKey /etc/ssh/ssh_host_key
设置包含计算机私有主机密钥的文件。
ServerKeyBits 1024
设置服务器密钥的位数。最小值是512,默认为1024。
LoginGraceTime 2m
设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间。
PermitRootLogin yes
设置root用户是否能够使用ssh登录。

IgnoreRhosts yes
设置RhostsRSA验证和Hostbased验证的时候是否使用.rhosts和.shosts文件。
IgnoreUserKnownHosts no 
设置sshd是否在进行RhostsRSAAuthentication安全验证的时候忽略用户的~/.ssh/known_hosts。
StrictModes yes 
设置ssh在接收登录请求之前是否检查用户主目录和rhosts文件的权限和所有权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。
PrintMotd yes
设置sshd是否在用户登录的时候显示/etc/motd文件中的信息。
LogLevel INFO
设置记录sshd日志消息的级别。

RhostsRSAAuthentication no
设置是否允许用rhosts或/etc/hosts.equiv加上RSA进行安全验证。
RSAAuthentication yes
设置是否允许只有RSA安全验证。
PasswordAuthentication yes
设置是否允许口令验证。
PermitEmptyPasswords no
设置是否允许用户口令为空字符串的账号登录,默认是no。
AllowGroups
设置允许连接的组群。
AllowUsers
设置允许连接的用户。
DenyGroups
设置拒绝连接的组群。

DenyUsers
设置拒绝连接的用户。如果模式写成USER@HOST,则USER和HOST将同时被检查,限制特定用户在特定主机上连接OpenSSH服务器。比如zhangsan@192.168.0.5表示拒绝用户zhangsan在主机192.168.0.5上连接OpenSSH服务器。
MaxSessions 10
指定允许每个网络连接打开的最大会话数,默认为10。
ClientAliveCountMax 3
指定从客户端断开连接之前,在没有接收到响应时能够发送客户端活跃消息的次数。这个参数设置允许超时的次数。
MaxStartups 10:30:100
指定SSH守护进程未经身份验证的并发连接的最大数量,默认值是10:30:100。10:30:100表示的意思是,从第10个连接开始,以30%的概率(递增)拒绝新的连接,直到连接数达到100。

13.2.3 OpenSSH服务器配置实例
在公司内部配置一台OpenSSH服务器,为公司网络内的客户端计算机提供远程SSH登录服务,具体参数如下。
OpenSSH服务器IP地址:192.168.0.2。
OpenSSH服务器监听端口:22。
不允许空口令用户登录。
禁止用户lisi登录。

13.3 配置OpenSSH客户端

13.3.1 Linux客户端连接
13.3.2 Windows客户端连接

13.4 VNC服务器配置

13.4.1 VNC简介
13.4.2 VNC服务器配置实例
13.4.3 创建或更改VNC登录密码
13.4.4 管理VNC服务器

13.4.1 VNC简介
VNC是基于Unix/Linux 操作系统的免费开源软件,远程控制能力强大,高效实用,其性能可以和Windows系统中的任何远程控制软件媲美。
VNC基本上是属于一种显示系统,也就是说它能将完整的窗口界面通过网络,传输到另一台计算机的屏幕上。Windows系统上的Terminal Server和PCAnywhere都是属于这种原理的软件,同时这些软件又在VNC的原理基础上做了各自相应改进,提高了易用性、连通率和可穿透内网。
因为VNC是免费的,并且可以用于数量庞大的不同操作系统,它简单、可靠和向后兼容性,使之进化成为最为广泛使用的远程控制软件,多平台的支持对网络管理员是十分重要的,它使网络管理员可以使用一种工具管理几乎所有系统。
VNC软件要由两个部分组成:服务端的VNC server和客户端的VNC viewer。用户需先将VNC server安装在被远程操控的计算机上后,才能在主控端执行VNC viewer进行远程操控。
VNC的服务端目的是分享其所运行主机的屏幕, 服务端被动的允许客户端控制它。VNC客户端观察控制服务端,与服务端交互。VNC协议是一个简单的协议,传送服务端的原始图像到客户端(一个X,Y 位置上的正方形的点阵数据),客户端传送事件消息到服务端。服务器发送小方块的帧缓存给客户端,在最简单的情况,VNC协议使用大量的带宽, 因此各种各样的方法被发明出来减少通讯的开支。
VNC并非是安全的协议,虽然VNC服务程序需设置密码才可接受外来连接,且VNC客户端与VNC服务程序之间的密码传输经过加密,但仍可被轻易的拦截到并使用暴力搜索法破解。不过VNC可设计以SSH或VPN传输,以增加安全性。

13.4.2 VNC服务器配置实例

  1. 安装tigervnc-server软件包
  2. 启动VNC服务器
  3. 查看进程
  4. 查看端口号

13.4.3 创建或更改VNC登录密码
使用vncpasswd命令可以创建或更改一个VNC的登录密码,这将同时在用户的主目录下创建一个隐藏的目录“.vnc”,该目录内有一个文件passwd保存着VNC登录密码。

命令语法:
vncpasswd [密码文件]
vncpasswd [选项]

13.4.4 管理VNC服务器
使用vncserver命令可以管理VNC服务器,比如启动和停止VNC服务器。

命令语法:
vncserver [:虚拟桌面号码] [选项] [Xvnc选项]

13.5 连接VNC服务器

13.5.1 Linux客户端连接
13.5.2 Windows客户端连接

13.5.1 Linux客户端连接
安装tigervnc软件包
[root@linux ~]# cd /run/media/root/RHEL-7.2\ Server.x86_64/Packages
[root@linux Packages]# rpm -ivh tigervnc-1.3.1-3.el7.x86_64.rpm
连接VNC服务器
在这里插入图片描述使用vncviewer命令连接VNC服务器
使用vncviewer命令可以连接到VNC服务器。

命令语法:
vncviewer [选项] [主机][:虚拟桌面号码]
vncviewer [选项] [主机][:端口]
vncviewer [选项]

13.5.2 Windows客户端连接
Windows系统下的VNC客户端软件有很多,这里主要讲解VNC Viewer软件,该软件是一款优秀的远程控制工具软件,远程控制能力强大,高效实用。
在这里插入图片描述

第14章 NFS服务器配置

本章内容
14.1 NFS简介
14.2 NFS服务器安装和配置
14.3 管理NFS共享目录
14.4 挂载和卸载NFS共享目录

14.1 NFS简介

14.1.1 什么是NFS
14.1.2 NFS协议

14.1.1 什么是NFS
NFS(Network File System,网络文件系统)是由SUN公司发展,并于1984年推出的技术。NFS对于在同一个网络上的多个用户间共享目录和文件很有用途。通过使用NFS,用户和程序可以像访问本地文件一样访问远程系统上的文件。
NFS本身的服务并没有提供文件传递的协议,但是NFS却能让我们进行文件的共享,这其中的原因,就是NFS使用RPC协议。所以只要用到NFS的地方都要启动RPC服务,不论是NFS服务器还是NFS客户端。
可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责信息的传输。这样NFS服务器端与NFS客户端才能由RPC协议来进行端口的对应。NFS主要管理分享出来的目录,而至于文件的传递,就直接将它交给RPC协议来运作。

14.1.2 NFS协议
客户端使用NFS可以透明地访问服务器中的文件系统,这不同于提供文件传输的FTP协议。FTP会产生文件一个完整的副本。NFS只访问一个进程引用文件部分,并且一个目的就是使得这种访问透明。这就意味着任何能够访问一个本地文件的客户端程序不需要做任何修改,就应该能够访问一个NFS文件。
NFS是一个使用SunRPC构造的客户端/服务器应用程序,其客户端通过向一台NFS服务器发送RPC请求来访问其中的文件。尽管这一工作可以使用一般的用户进程来实现,即NFS客户端可以是一个用户进程,对服务器进行显式调用,而服务器也可以是一个用户进程。
首先访问一个NFS文件必须对客户端透明,因此NFS的客户端调用是由客户端操作系统代表用户进程来完成的;其次,出于效率的考虑,NFS服务器在服务器操作系统中实现。如果NFS服务器是一个用户进程,每个客户端请求和服务器应答(包括读和写的数据)将不得不在内核和用户进程之间进行切换,这个代价太大。
NFS协议从诞生到现在为止,已经有NFS V2、NFS V3和NFS V4等多个版本。

14.2 NFS服务器安装和配置

14.2.1 安装NFS服务器软件包
14.2.2 /etc/exports文件详解
14.2.3 控制nfs-server服务

14.2.1 安装NFS服务器软件包
安装nfs-utils软件包。
[root@rhel ~]# cd /run/media/root/RHEL-7.2\ Server.x86_64/Packages
[root@rhel Packages]# rpm -ivh nfs-utils-1.3.0-0.21.el7.x86_64.rpm

14.2.2 /etc/exports文件详解
/etc/exports文件控制着NFS服务器要导出的共享目录以及访问控制。/etc/exports文件默认是空白的,没有任何内容。也就是说NFS服务器默认是不共享任何目录,需要手工编辑添加。
/etc/exports文件内容的格式如下所示。
共享目录 客户端(导出选项)

14.2.3 控制nfs-server服务
/it 192.168.0.5(ro,sync)
//允许来自主机192.168.0.5的用户以默认的只读权限来挂载/it目录
/it 192.168.0.5(rw,sync)
//允许来自主机192.168.0.5的用户以读写权限来挂载/it目录
/it * (ro,all_squash,anonuid=65534,anongid=65534)
//允许所有客户端的用户以只读权限来挂载/it目录,使用NFS服务器共享目录的用户都将映射为匿名用户,匿名用户将使用UID和GID为65534的系统账户(必须事先存在)
/it .sh.com(ro)
//允许sh.com域内的客户端的用户以只读权限来挂载/it目录
/it linux.sh.com(ro)
//允许来自主机linux.sh.com的用户以只读权限来挂载/it目录
/it 192.168.0.0/24(ro) 192.168.1.0/24(ro)
//允许来自192.168.0.0和192.168.1.0网段客户端的用户以只读权限来挂载/it目录
/it 192.168.0.
(ro,root_squash)
//允许来自192.168.0.0网段客户端的用户以只读权限来挂载/it目录,并且将root用户映射成匿名用户
/it proj*.sh.com(rw)
//允许sh.com域内主机名以proj开头的客户端的用户以读写权限来挂载/it目录
/it cl[0-9].sh.com(rw)
//允许sh.com域内主机名以cl0~cl9开头的客户端的用户以读写权限来挂载/it目录

14.3 管理NFS共享目录

14.4 挂载和卸载NFS共享目录

第15章 DHCP服务器配置

本章内容
15.1 DHCP简介
15.2 DHCP服务器安装和配置
15.3 配置DHCP客户端
15.4 查看DHCP地址租约信息

15.1 DHCP简介

15.1.1 什么是DHCP
15.1.2 使用DHCP服务优缺点

15.1.1 什么是DHCP
DHCP是一种用于简化计算机IP地址配置管理的标准。通过采用DHCP标准,可以使用DHCP服务器为网络上的计算机分配、管理动态IP地址以及其它相关配置信息。
TCP/IP网络上的每一台计算机都必须要有唯一的IP地址,IP地址以及与之相关的子网掩码等标识计算机及其连接的子网。在将计算机移动到不同的子网时,必须更改IP地址。DHCP允许通过本地网络上的DHCP服务器IP地址数据库为客户端动态指派IP地址。
对于基于TCP/IP的网络,DHCP降低了重新配置计算机IP地址的难度,减少了涉及的管理工作量。
由于DHCP服务器需要固定的IP地址和DHCP客户端计算机进行通讯,所以DHCP服务器必须配置为使用静态IP地址。

15.1.2 使用DHCP服务优缺点
管理员可以集中为整个公司网络指定通用和特定子网的TCP/IP参数,并且可以定义使用保留地址的客户机的参数;
提供安全可信的配置。DHCP避免了在每一台计算机上手工输入数值引起的配置错误,还能防止网络上计算机配置地址的冲突;
使用DHCP服务器能大大减少配置网络上计算机的时间,服务器可以在指派地址租约时配置所有的附加配置值;
客户机不需要手工配置TCP/IP;
客户机在子网间移动时,旧的IP地址自动释放以便再次使用。在再次启动客户端计算机时,DHCP服务器会自动为客户端计算机重新配置TCP/IP;
大部分路由器可以转发DHCP配置请求,因此,互联网的每个子网并不都需要DHCP服务器。
DHCP不能发现网络上非DHCP客户机已经在使用的IP地址;
当网络上存在多个DHCP服务器时,一个DHCP服务器不能查出已被其它服务器租出去的IP地址;
DHCP服务器不能跨路由器与客户机通信,除非路由器允许BOOTP转发。

15.2 DHCP服务器安装和配置

15.2.1 安装DHCP服务器软件包
15.2.2 /etc/dhcp/dhcpd.conf文件详解
15.2.3 DHCP服务器配置实例

15.2.1 安装DHCP服务器软件包
安装dhcp和dhcp-common软件包。
[root@rhel ~]# cd /run/media/root/RHEL-7.2\ Server.x86_64/Packages
[root@rhel Packages]# rpm -ivh dhcp-4.2.5-42.el7.x86_64.rpm
[root@rhel Packages]# rpm -ivh dhcp-common-4.2.5-42.el7.x86_64.rpm

15.2.2 /etc/dhcp/dhcpd.conf文件详解
DHCP服务器的主配置文件是/etc/dhcp/dhcpd.conf,默认情况下该文件中没有内容。但是DHCP服务器提供了一个配置模板文件,该文件是/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example,在实际配置DHCP服务器过程中,常将该模板文件复制为/etc/dhcp/dhcpd.conf文件。
/etc/dhcp/dhcpd.conf文件的内容由全局配置和局部配置两部分构成。全局配置部分主要是用来设置DHCP服务器整体运行环境的选项,而局部配置部分是用来设置作用域内容。在/etc/dhcp/dhcpd.conf文件中,以“#”开头的行是注释行,它为用户配置参数起到解释作用,这样的语句默认不会被系统执行。

15.2.3 DHCP服务器配置实例
声明部分是用来描述网络布局、提供客户端的IP地址等。
shared-network
用来告知是否一些子网络分享相同网络,也就是超级作用域。
subnet
描述一个IP地址是否属于该子网。
range
提供动态分配IP地址的范围。
host
参考特别的主机。
group
为一组参数提供声明。
allow unknown-clients
允许动态分配IP地址给未知的客户端。
deny unknown-client
拒绝动态分配IP地址给未知的客户端。
allow bootp
允许响应bootp查询。
deny bootp
拒绝响应bootp查询。
all booting
允许响应使用者查询。
deny booting
拒绝响应使用者查询。
filename
开始启动文件的名称,应用于无盘工作站。
next-server
设置服务器从初始引导文件中加载指定服务器的主机地址,服务器名称应该是IP地址或域名,应用于无盘工作站。

参数部分是表明如何执行任务,是否要执行任务,或将哪些网络配置选项发送给客户。
ddns-update-style none
设置动态DNS更新模式,none表示不支持动态更新,interim表示DNS动态更新模式,ad-hoc表示特殊DNS更新模式。
ignore client-updates
忽略客户机更新DNS记录。default-lease-time 600 指定缺省客户端租约IP地址的时间长度,单位是秒。
max-lease-time 7200
指定最大客户端租约IP地址的时间长度,单位是秒。
hardware ethernet 08:00:07:26:c0:a5
指定网卡接口类型和MAC地址。
server-name
通知DHCP客户服务器名称。
get-lease-hostnames flag
检查客户端使用的IP地址。
fixed-address
为客户端保留一个固定的IP地址。保留地址提供了一个将动态地址和其MAC地址相关联的手段,用于保证此网卡长期使用某个IP地址。 
`选项部分是用来配置DHCP可选参数,全部用option关键字作为开始。 
subnet-mask
为客户端指定子网掩码。
domain-name
为客户端指定DNS域名。
domain-name-servers
为客户端指定DNS服务器的IP地址。
host-name
为客户端指定主机名称。
routers
为客户端指定默认网关。
broadcast-address
为客户端指定广播地址。
ntp-server
为客户端指定网络时间服务器(NTP服务器)的IP地址。
time-offset
为客户端指定和格林威治时间的偏移时间,单位是秒。
nis-domain
设置客户机的NIS域名。
netbios-name-servers
设置客户机的WINS服务器的IP地址。
netbios-node-type
设置客户机的NetBIOS节点类型。
在公司内部配置一台DHCP服务器,为公司网络内的客户端计算机自动分配IP地址等信息,具体参数如下。
分配IP地址池:192.168.0.60~192.168.0.160。
子网掩码:255.255.255.0。
网关地址:192.168.0.1。
DNS服务器:192.168.0.2。
DNS域名:sh.com。
默认租约有效期:1天(86400秒)。
最大租约有效期:7天(604800秒)。
给主机名为windows的客户机(MAC地址为00:50:56:C0:00:01)保留使用IP地址192.168.0.150。
支持DNS动态更新模式。
忽略客户机更新DNS记录。

15.3 配置DHCP客户端

15.3.1 Linux客户端配置
15.3.2 Windows客户端配置

15.3.1 Linux客户端配置
1.修改网卡配置文件
修改网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eno16777736,使得该客户端的IP地址为自动从DHCP服务器处获取,而不是静态手工设置。
2.重新启动network服务并申请IP地址
使用systemctl命令重新启动network服务,这时该客户端在网卡重新启动时从DHCP服务器处申请并获取到IP地址。
3.查看获取的IP地址
使用ifconfig命令查看该客户端获取到的IP地址信息。

15.3.2 Windows客户端配置
1.设置自动获得IP地址
2.申请IP地址
如果客户端没有立即向DHCP服务器申请IP地址,也可以使用ipconfig/renew命令申请。
3.查看IP地址
使用ipconfig/all命令可以查看到从DHCP服务器处获取到的详细的TCP/IP信息,如IP地址、子网掩码、默认网关、DNS域名、DNS服务器IP地址、DHCP服务器IP地址、IP地址租约期限等信息。
4.释放IP地址
如果不再需要从DHCP服务器处获取到的IP地址,可以使用ipconfig/release命令释放该IP地址。

15.4 查看DHCP地址租约信息

/var/lib/dhcpd/dhcpd.leases文件中存放着DHCP地址租约数据库。每一个最近分配给客户端的IP地址租约信息都会自动储存在该数据库中,该信息包括租约的开始和终止时间、客户端的MAC地址、客户端的主机名以及分配给客户端的IP地址等。租约数据库中所用的时间是格林威治标准时间(GMT),不是本地时间。
租约数据库不时被重建,首先所有已知的租约会被储存到一个临时的租约数据库中,/var/lib/dhcpd/dhcpd.leases文件被重命名为/var/lib/dhcpd/dhcpd.leases~,然后临时租约数据库被写入/var/lib/dhcpd/dhcpd.leases文件。
在租约数据库被重命名为备份文件,新文件被写入之前,dhcpd守护进程有可能被杀死,系统也有可能会崩溃。如果发生了这种情况,/var/lib/dhcpd/dhcpd.leases文件不存在,但它却是启动服务所必需的。这时请不要创建新租约文件。因为这样做会丢失所有原有的旧租约文件,从而导致更多问题。正确的办法是把/var/lib/dhcpd/dhcpd.leases~备份文件重命名为/var/lib/dhcpd/dhcpd.leases,然后再启动守护进程。

第16章 Samba服务器配置

本章内容

16.1 Samba简介
16.2 Samba服务器安装和配置
16.3 Samba服务器配置实例
16.4 配置Samba客户端

16.1 Samba简介

Samba是指通过SMB协议在网络上的计算机之间远程共享Linux文件和打印服务。
SMB是基于NetBIOS的协议,传统上用在Linux、Windows和OS/2网络中访问远程文件和打印机,统称为共享服务。SMB为网络资源和桌面应用之间提供了紧密的接口,与使用NFS、FTP和LPR等协议相比,使用SMB协议能把二者结合得更加紧密。通过Samba共享的Linux资源就像在另一台Windows服务器上一样,不需要任何其它的桌面客户软件就可以访问。
Linux系统可以与各种操作系统轻松连接,实现多种网络服务。在一些中小型网络或企业的内部网中,利用Linux建立文件服务器是一个很好的解决方案。针对企业内部网中的绝大部分客户机都采用Windows的情况,我们可以通过使用Samba来实现文件服务器的功能。 Samba是在Linux和Unix系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB协议是建立在NetBIOS协议之上的应用协议,是基于TCP协议的138和139两个端口的服务。NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统。
SMB协议被用于局域网管理和Windows服务器系统管理中,实现不同计算机之间共享打印机和文件等。因此,为了让Windows和Unix/Linux计算机相集成,最好的办法就是在Unix/Linux计算机中安装支持SMB协议的软件。这样使用Windows的客户端不需要更改设置就能像使用Windows一样使用Unix/Linux系统上的共享资源了。
Samba的核心是smbd和nmbd两个守护进程,在服务器启动时持续运行。smbd和nmbd使用的全部配置信息全都保存在/etc/samba/smb.conf文件中。
/etc/samba/smb.conf文件向守护进程smbd和nmbd说明共享的内容、共享输出给谁以及如何进行输出。smbd进程的作用是为使用该软件包资源的客户机与Linux服务器进行协商,nmbd进程的作用是使客户机能浏览Linux服务器的共享资源。

16.2 Samba服务器安装和配置

16.2.1 安装Samba服务器软件包
16.2.2 /etc/samba/smb.conf文件详解
16.2.3 Samba共享目录配置实例

16.2.1 安装Samba服务器软件包
安装samba-common、samba-client、samba和samba-libs软件包。
[root@rhel ~]# cd /run/media/root/RHEL-7.2\ Server.x86_64/Packages
[root@rhel Packages]# rpm -ivh samba-common-4.2.3-10.el7.noarch.rpm
[root@rhel Packages]# rpm -ivh samba-client-4.2.3-10.el7.x86_64.rpm
[root@rhel Packages]# rpm -ivh samba-4.2.3-10.el7.x86_64.rpm
[root@rhel Packages]# rpm -ivh samba-libs-4.2.3-10.el7.x86_64.rpm

16.2.2 /etc/samba/smb.conf文件详解
Samba服务器的主配置文件是/etc/samba/smb.conf文件,该配置文件的内容由Global Settings(全局设置)和Share Definitions(共享定义)两部分构成。Global Settings部分主要是用来设置Samba服务器整体运行环境的选项,而Share Definitions部分是用来设置文件共享和打印共享资源。
在/etc/samba/smb.conf配置文件中,以“#”开头的行是注释行,它为用户配置参数起到解释作用,这样的语句默认不会被系统执行。以“;”开头的行都是Samba配置的参数范例,这样的语句默认不会被系统执行,如果将“;”去掉并对该范例进行设置,那么该语句将会被系统执行。在/etc/samba/smb.conf配置文件中所有的配置参数都是以“配置项目 = 值”这样的格式表示。

16.2.3 Samba共享目录配置实例
1.允许匿名用户读取/it共享目录
2.允许匿名用户读写/it共享目录
3.只允许用户zhangsan和组群jishu的用户访问/i t共享目录
4.只允许用户zhangsan和组jishu的用户读写/it共享目录

16.3 Samba服务器配置实例

16.3.1 share级别Samba服务器配置
16.3.2 user级别Samba服务器配置

16.3.1 share级别Samba服务器配置
在公司内部配置一台Samba服务器,为公司网络内的客户端计算机提供share级别Samba服务,具体参数如下。
Samba服务器所在工作组:workgroup。
Samba服务器描述信息:Samba Server。
Samba服务器NetBIOS名称:rhel。
Samba服务器网卡IP地址:192.168.0.2。
允许访问Samba服务器的网络:192.168.0.0。
日志文件路径:/var/log/samba/log.%m。
日志文件大小:50000KB。
Samba服务器安全模式:share。
共享目录:/it。
访问权限:读写权限。

16.3.2 user级别Samba服务器配置
在公司内部配置一台Samba服务器,为公司网络内的客户端计算机提供user级别Samba服务,具体参数如下。
Samba服务器所在工作组:workgroup。
Samba服务器描述信息:Samba Server。
Samba服务器NetBIOS名称:rhel。
Samba服务器网卡IP地址:192.168.0.2。
允许访问Samba服务器的网络:192.168.0.0。
日志文件路径:/var/log/samba/log.%m。
日志文件大小:50000KB。
Samba服务器安全模式:user。
对Samba密码进行加密。
密码数据库类型:tdbsam。
共享目录:/it。
/it目录的用户所有者和组群所有者为zhangsan。
访问权限:读写权限。

16.4 配置Samba客户端

16.4.1 Linux客户端配置
1.安装软件包
使用以下命令安装samba-common和samba-client软件包。
[root@linux ~]# cd /run/media/root/RHEL-7.2\ Server.x86_64/Packages
[root@linux Packages]# rpm -ivh samba-common-4.2.3-10.el7.noarch.rpm
[root@linux Packages]# rpm -ivh samba-client-4.2.3-10.el7.x86_64.rpm
2.使用smbclient命令显示和连接共享目录
在客户端计算机上使用smbclient命令,可以显示Samba服务器上的共享资源,也可以连接到该共享资源上。
3.使用mount命令挂载Samba目录
在客户端用户可以把Samba共享目录挂载到本地目录上,这样该目录内的文件就如同是本地文件系统的一部分。把Samba共享挂载到本地目录中时,如果该目录不存在,则需要先创建它,然后执行。

16.4.2 Windows客户端配置
在Windows系统中,可以通过多种方法访问Samba服务器上的共享资源,比如【运行】工具。

在这里插入图片描述

第17章 DNS服务器配置

本章内容
17.1 DNS简介
17.2 DNS服务器安装和配置
17.3 配置DNS客户端
17.4 DNS客户端域名解析测试
17.5 DNS服务器高级配置

17.1 DNS简介

17.1.1 什么是DNS
17.1.2 DNS服务器类型
17.1.3 DNS解析类型

17.1.1 什么是DNS
DNS用于命名组织到域层次结构中的计算机和网络服务。DNS命名用于TCP/IP网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与之相关的IP地址。
比如用户喜欢使用友好的名称(如rhel.sh.com)来查找计算机,友好名称更容易了解和记住。但是计算机是使用IP地址在网络上进行通讯的,为更容易地使用网络资源,DNS命名系统将计算机或服务的用户友好名称映射为IP地址。

17.1.2 DNS服务器类型
1.主DNS服务器
2.辅助DNS服务器
3.缓存DNS服务器
4.转发DNS服务器

17.1.3 DNS解析类型
1.正向查找解析
2.反向查找解析

17.2 DNS服务器安装和配置

17.2.1 安装DNS服务器软件包
17.2.2 /etc/named.conf文件详解
17.2.3 配置DNS区域文件
17.2.4 主DNS服务器配置实例

17.2.1 安装DNS服务器软件包
安装bind和bind-libs软件包。
[root@rhel ~]# cd /run/media/root/RHEL-7.2\ Server.x86_64/Packages
[root@rhel Packages]# rpm -ivh bind-9.9.4-29.el7.x86_64.rpm
[root@rhel Packages]# rpm -ivh bind-libs-9.9.4-29.el7.x86_64.rpm

17.2.2 /etc/named.conf文件详解
DNS服务器的主配置文件是/etc/named.conf文件,该文件的内容由全局配置和局部配置两部分构成。全局配置部分主要是用来设置对DNS服务器整体生效的内容,而局部配置部分是用来设置区域名、区域类型和区域文件名等内容。
在/etc/named.conf配置文件中,以“#”开头的行是注释行,它为用户配置参数起到解释作用,这样的语句默认不会被系统执行。

17.2.3 配置DNS区域文件
在这里插入图片描述
17.2.4 主DNS服务器配置实例
在这里插入图片描述在公司内部配置一台主DNS服务器,为公司网络内的客户端计算机提供正向域名和反向域名解析服务,具体参数如下。
主DNS服务器IP地址:192.168.0.2。
主DNS服务器主机名:rhel。
正向区域名:sh.com。
反向区域名:0.168.192.in-addr.arpa。
正向区域文件名称:/var/named/sh.com.hosts。
反向区域文件名称:/var/named/192.168.0.rev。
在正向区域中指定相关的资源记录。
在反向区域中指定相关的资源记录。
允许进行DNS查询的网络:192.168.0.0/24。

17.3 配置DNS客户端

17.3.1 Linux客户端配置
17.3.2 Windows客户端配置

17.3.1 Linux客户端配置
1.安装软件包
2.编辑/etc/resolv.conf文件

17.3.2 Windows客户端配置
在这里插入图片描述

17.4 DNS客户端域名解析测试

使用host命令可以执行DNS查找,进行域名解析。

命令语法:
host [选项] [名称] [服务器]

17.5 DNS服务器高级配置

17.5.1 辅助DNS服务器
17.5.2 虚拟子域

17.5.1 辅助DNS服务器
在企业中为了减轻主DNS服务器的工作负荷,以及为主DNS服务器提供容错功能,可以配置多台辅助DNS服务器。辅助DNS服务器上的区域文件是从主DNS服务器上复制而来的,所以区域文件内的资源记录只能读取,而不能修改和删除。这样一来客户端计算机也可以从辅助DNS服务器上解析资源记录。
在公司内部配置一台辅助DNS服务器,为公司网络内的客户端计算机提供正向和反向域名解析服务,具体参数如下。
主DNS服务器IP地址:192.168.0.2;
辅助DNS服务器IP地址:192.168.0.4;
辅助DNS服务器主机名:rhel2。
正向区域名:sh.com;
反向区域名:0.168.192.in-addr.arpa;
正向区域文件名称:/var/named/sh.com.hosts;
反向区域文件名称:/var/named/192.168.0.rev。

17.5.2 虚拟子域
使用区域委派方式能够减轻DNS服务器的负担,但是相对来说成本比较高。因为实现子域委派需要另外配置一台DNS服务器,而虚拟子域只需在同一台服务器上管理子域,配置比较简单,只需要在父域正向区域文件中加入$ORIGIN即可。
在公司内部配置一台DNS服务器,将父域和子域的内容都配置在该服务器上,具体参数如下。
DNS服务器IP地址:192.168.0.2。
DNS服务器主机名:rhel。
父域域名:sh.com。
子域域名:product.sh.com。

第18章 Web服务器配置

本章内容
18.1 Web简介
18.2 Web服务器安装和配置
18.3 访问Web服务器
18.4 日志文件管理和分析
18.5 Web服务器高级配置
18.6 配置Apache虚拟主机

18.1 Web简介

WWW是英国人TimBerners-Lee在1989年欧洲共同体的一个大型科研机构工作时发明的。通过Web,互联网上的资源可以比较直观在一个网页里表示出来,而且在网页上可以互相链接。
Web是一种超文本信息系统,其主要实现方式是超文本链接,它使得文本不再象一本书一样是固定的、线性的,而是可以从一个位置跳转到另外一个位置。想要了解某一个主题的内容,只要在这个主题上点击一下,就可以跳转到包含这一主题的文档上。
超文本是一种用户接口范式,用以显示文本及与文本相关的内容。超文本中的文字包含有可以链接到其它字段或者文档的超文本链接,允许从当前阅读位置直接切换到超文本链接所指向的文字。超文本的格式有很多,最常使用的是超文本标记语言,我们日常浏览的网页都属于超文本。
超文本链接是一种全局性的信息结构,它将文档中的不同部分通过关键字建立链接,使信息得以用交互方式搜索。

18.2 Web服务器安装和配置

18.2.1 安装Web服务器软件包
18.2.2 /etc/httpd/conf/httpd.conf文件详解
18.2.3 Web服务器配置实例

18.2.1 安装Web服务器软件包
安装httpd、httpd-tools和httpd-manual软件包。
[root@rhel ~]# cd /run/media/root/RHEL-7.2\ Server.x86_64/Packages
[root@rhel Packages]# rpm -ivh httpd-2.4.6-40.el7.x86_64.rpm
[root@rhel Packages]# rpm -ivh httpd-tools-2.4.6-40.el7.x86_64.rpm
[root@rhel Packages]# rpm -ivh httpd-manual-2.4.6-40.el7.noarch.rpm

18.2.2 /etc/httpd/conf/httpd.conf文件详解
Apache服务器的主配置文件是/etc/httpd/conf/httpd.conf文件,该文件的内容由全局环境、主服务器配置和虚拟主机三部分构成。在/etc/httpd/conf/httpd.conf配置文件中,以“#”开头的行是注释行,它为用户配置参数起到解释作用,这样的语句默认不会被系统执行。

18.2.3 Web服务器配置实例
在公司内部配置一台Apache服务器,为公司网络内的客户端计算机提供能通过域名访问的Apache Web网站,具体参数如下。
Apache服务器IP地址:192.168.0.2。
Web网站域名:www.sh.com。
Apache服务器默认文档首页名称:index.html和index.htm。
Apache服务器中存放网页内容的根目录位置:/var/www/html。
Apache服务器监听端口:80。
默认字符集:UTF-8。
运行Apache服务器的用户和组:apache。
管理员邮件地址:root@sh.com。

18.3 访问Web服务器

18.3.1 Linux客户端配置
Mozilla Firefox是一款可以在Linux和Windows系统下都能安装和运行的浏览器,可以从互联网上分别下载Windows版本和Linux版本。
如果希望在客户端使用域名www.sh.com的方式访问Web网站,在客户端需要修改/etc/resolv.conf文件,指向DNS服务器,如下所示。
nameserver 192.168.0.2

18.3.2 Windows客户端配置
在Windows 10系统中,打开Microsoft Edge浏览器,输入网址:http://192.168.0.2访问Web网站。
在这里插入图片描述

18.4 日志文件管理和分析

18.4.1 配置错误日志
18.4.2 配置访问日志

18.4.1 配置错误日志
在Apache服务器运行过程中发生的各种错误都将记录在错误日志文件中,可以通过该文件获取错误信息并分析原因。
在Apache服务器的配置文件/etc/httpd/conf/httpd.conf中有以下两行内容,这说明了错误日志的保存位置以及当前错误日志的记录等级。
ErrorLog “logs/error_log”
LogLevel warn
在这里插入图片描述
18.4.2 配置访问日志
在Apache服务器中记录着服务器所处理的所有请求,比如在什么时候哪一台客户端连接到Web网站访问了什么网页,这些都将记录下来。
在Apache服务器的配置文件/etc/httpd/conf/httpd.conf中有以下这样内容,这说明了访问日志的保存位置以及访问日志的格式分类。

LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”” combined
LogFormat “%h %l %u %t “%r” %>s %b” common

LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i” %I %O” combinedio

CustomLog “logs/access_log” combined

在这里插入图片描述

18.5 Web服务器高级配置

18.5.1 访问控制
18.5.2 用户认证和授权
18.5.3 虚拟目录

18.5.1 访问控制
在Apache 2.4版本中,使用mod_authz_host模块来实现访问控制,其他授权检查也以同样的方式来完成。旧的访问控制语句应当被新的授权认证机制所取代,即便Apache已经提供了mod_access_compat这一新模块来兼容旧语句。
在Apache 2.4版本之前实现客户端访问控制,是使用Allow、Deny、Order指令做访问控制的,而在Apache 2.4版本使用Require指令来实现。
默认在/etc/httpd/conf/httpd.conf配置文件中,有含有Require参数的内容,这些设置将控制指定目录的访问控制权限。
在这里插入图片描述在这里插入图片描述访问控制配置实例
(1)允许所有客户端能访问Web网站,只有IP地址为192.168.0.5的客户端不能访问Web网站。
(2)允许所有客户端能访问Web网站,只有完全合格域名为rhel.sh.com的客户端不能访问Web网站。
(3)拒绝所有客户端访问Web网站,只有IP地址为192.168.0.5的客户端才能访问Web网站。
(4)拒绝所有客户端访问Web网站,只有192.168.0.0/24网络的客户端才能访问Web网站。

18.5.2 用户认证和授权
在Apache服务器中有基本认证和摘要认证两种认证类型。一般来说,使用摘要认证要比基本认证更加安全,但是因为有些浏览器不支持使用摘要认证,所以在大多数情况下用户只能使用基本认证。
在这里插入图片描述在这里插入图片描述
18.5.3 虚拟目录
在Apache服务器中,默认网站根目录是/var/www/html,所以可以将网站的网页内容存储在该目录中。如果网站内容不是存储在/var/www/html目录内,可以通过别名方式创建虚拟目录。
虚拟目录是为服务器硬盘上不在主目录下的一个物理目录或者其它计算机上的主目录而指定的好记的名称,或“别名”。因为别名通常比物理目录的路径短,所以它更便于用户输入。同时,使用别名还更加安全,因为用户不知道文件在服务器上的物理位置,所以无法使用该信息来修改文件。通过使用别名,还可以更轻松地移动站点中的目录。无需更改目录的URL,而只需更改别名与目录物理位置之间的映射。
在这里插入图片描述

18.6 配置Apache虚拟主机

18.6.1 基于IP地址的虚拟主机
18.6.2 基于TCP端口号的虚拟主机
18.6.3 基于域名的虚拟主机

18.6.1 基于IP地址的虚拟主机
如果在同一台服务器上使用多个IP地址来区分不同的Web网站,则必须为网卡绑定多个IP地址,并且给每个网站指派唯一的IP地址。
在公司内部一台服务器上通过基于IP地址的虚拟主机方式配置两个Web网站,为公司网络内的客户端计算机提供Web服务,具体参数如下。
(1)第一个Web网站
网站根目录:/var/www/html/www1.sh.com。
网站首页:index.html。
网站IP地址:192.168.0.3。
(2)第二个Web网站
网站根目录:/var/www/html/www2.sh.com。
网站首页:index.html。
网站IP地址:192.168.0.4。

18.6.2 基于TCP端口号的虚拟主机
可以使用非标准TCP端口号来创建用于站点开发和测试目的的唯一网站标识符。标准网站将默认的TCP端口80用于HTTP连接。由于TCP/IP端点是用IP地址(或相应名称)和端口号的组合来定义的,而使用非标准端口号配置网站可以给每个站点创建唯一的端点(或标识)。  如果使用非标准TCP端口号来标识网站,则用户无法通过标准名或URL来访问站点。另外,用户必须知道指派给网站的非标准TCP端口号,以及在其Web浏览器地址栏中附加网站的名称或IP地址。 在公司内部一台服务器上通过基于端口号的虚拟主机方式配置两个Web网站,为公司网络内的客户端计算机提供Web服务,具体参数如下。
(1)第一个Web网站
网站根目录:/var/www/html/www1.sh.com。
网站首页:index.html。
网站端口号:80。
(2)第二个Web网站
网站根目录:/var/www/html/www2.sh.com。
网站首页:index.html。
网站端口号:8080。

18.6.3 基于域名的虚拟主机
在一台服务器上创建多个Web网站的单位通常使用域名,因为这种方法不必使用每个站点的唯一IP地址。由于Web服务必须分配非页面缓冲池内存来管理每个IP地址的端点,使用域名的好处是可以避免由于使用唯一IP地址标识多个网站而引起的潜在性能降低。 在公司内部一台服务器上通过基于域名的虚拟主机方式配置两个Web网站,为公司网络内的客户端计算机提供Web服务,具体参数如下。
(1)第一个Web网站
网站根目录:/var/www/html/www1.sh.com。
网站首页:index.html。
网站域名:www1.sh.com。
(2)第二个Web网站
网站根目录:/var/www/html/www2.sh.com。
网站首页:index.html。
网站域名:www2.sh.com。

第19章 FTP服务器配置

本章内容
19.1 FTP简介
19.2 FTP服务器安装和配置
19.3 配置FTP客户端
19.4 FTP服务器配置实例

19.1 FTP简介

19.1.1 什么是FTP
19.1.2 FTP传输模式
19.1.3 FTP用户

19.1.1 什么是FTP
FTP可以在网络中传输文档、图像、音频、视频以及应用程序等多种类型的文件。如果用户需要将文件从自己的计算机发送给另一台计算机,可以使用FTP进行上传操作;而在更多的情况下,则是用户使用FTP从服务器上下载文件。
一个完整的FTP文件传输需要建立两种类型的连接,一种为控制文件传输的命令,称为控制连接;另一种实现真正的文件传输,称为数据连接。

19.1.2 FTP传输模式
1.主动模式(PORT模式)
主动模式的数据传输专有连接是在建立控制连接(用户身份验证完成)后,首先由FTP服务器使用20端口主动向客户端进行连接,建立专用于传输数据的连接,这种方式在网络管理上比较好控制。FTP服务器上的端口21用于用户验证,端口20用于数据传输,只要将这两个端口开放就可以使用FTP功能了,此时客户端只是处于接收状态。
2.被动模式(PASV模式)
被动模式与主动模式不同,数据传输专有连接是在建立控制连接(用户身份验证完成)后由客户端向FTP服务器发起连接的。客户端使用哪个端口,连接到FTP服务器的哪个端口都是随机产生的。服务器并不参与数据的主动传输,只是被动接受。

19.1.3 FTP用户
1.匿名用户
使用这类用户可以匿名访问FTP服务器。匿名用户是指在FTP服务器中没有指定账户,但是它仍然可以匿名访问某些公开的资源。使用匿名用户访问FTP服务器时使用账户anonymous或ftp。
2.本地用户
这类用户是指在FTP服务器上拥有账户。当这类用户访问FTP服务器的时候,其默认的主目录就是其账户命名的目录。但是它还可以变更到其它目录中去。
3.虚拟用户
在FTP服务器中,使用这类用户只能够访问其主目录下的文件,而不能访问主目录以外的文件。FTP服务器通过这种方式来保障服务器上其它文件的安全性。

19.2 FTP服务器安装和配置

19.2.1 安装FTP服务器软件包
19.2.2 /etc/vsftpd/vsftpd.conf文件详解
19.2.3 控制vsftpd服务

19.2.1 安装FTP服务器软件包
安装vsftpd软件包。
[root@rhel ~]# cd /run/media/root/RHEL-7.2\ Server.x86_64/Packages
[root@rhel Packages]# rpm -ivh vsftpd-3.0.2-10.el7.x86_64.rpm

19.2.2 /etc/vsftpd/vsftpd.conf文件详解
vsftpd服务器的主配置文件是/etc/vsftpd/vsftpd.conf文件,一般无需修改该文件就可以启动vsftpd服务器使用。在/etc/vsftpd/vsftpd.conf配置文件中,以“#”开头的行是注释行,它为用户配置参数起到解释作用,这样的语句默认不会被系统执行。在该配置文件中所有的配置参数都是以“配置项目=值”这样的格式表示。
/etc/vsftpd/vsftpd.conf文件参数(1)
anonymous_enable=YES
设置是否允许匿名用户登录,YES允许,NO不允许。
local_enable=YES
设置是否允许本地用户登录,YES允许,NO不允许。
write_enable=YES
设置是否允许用户有写入权限,YES允许,NO不允许。
local_umask=022
设置本地用户新建文件时的umask值。
local_root=/home
设置本地用户的根目录。
anon_upload_enable=YES
设置是否允许匿名用户上传文件,YES允许,NO不允许。
anon_mkdir_write_enable=YES
设置是否允许匿名用户有创建目录的权限,YES允许,NO不允许。
/etc/vsftpd/vsftpd.conf文件参数(2)
anon_other_write_enable=NO
设置是否允许匿名用户有更改的权限,比如重命名和删除文件权限,YES允许,NO不允许。
anon_world_readable_only=YES
设置是否允许匿名用户下载可读的文件,YES允许,NO不允许。
dirmessage_enable=YES
设置是否显示目录说明文件,默认是YES,但需要手工创建.message文件允许为目录配置显示信息,显示每个目录下面的message_file文件的内容。
message_file=.message
设置提示信息文件名,该参数只有在dirmessage_enable启用时才有效。
download_enable=YES
设置是否允许下载,YES允许,NO不允许。
chown_upload=YES
设置是否允许修改上传文件的用户所有者,YES允许,NO不允许。
/etc/vsftpd/vsftpd.conf文件参数(3)
chown_username=whoever
设置想要修改的上传文件的用户所有者。
idle_session_timeout=600
设置用户会话空闲超过指定时间后断开连接。
data_connection_timeout=120
设置数据连接空闲超过指定时间后断开连接。
accept_timeout=60
设置客户端空闲超过指定时间自动断开连接,单位为秒。
connect_timeout=60
设置客户端空闲断开连接后在指定时间自动激活连接,单位为秒。
max_clients=100
允许连接客户端的最大数量。0表示不限制最大连接数。
max_per_ip=5
设置每个IP地址的最大连接数。0表示不限制最大连接数。
anon_max_rate=51200
设置匿名用户传输数据的最大速度,单位是字节/秒。
local_max_rate=5120000
设置本地用户传输数据的最大速度,单位是字节/秒。
pasv_min_port=0
设置在被动模式连接vsftpd服务器时,服务器响应的最小端口号,0 表示任意。默认值为0。
pasv_max_port=0
设置在被动模式连接vsftpd服务器时,服务器响应的最大端口号,0 表示任意。默认值为0。
chroot_local_user=YES
设置是否将本地用户锁定在自己的主目录中。
chroot_list_enable=YES
设置是否锁定用户在自己的主目录中。
/etc/vsftpd/vsftpd.conf文件参数(4)
chroot_list_file=/etc/vsftpd/chroot_list
被列入该文件的用户,在登录后锁定用户在自己的主目录中。
ascii_upload_enable=YES
设置是否使用ASCII模式上传文件,YES使用,NO不使用。
ascii_download_enable=YES
设置是否使用ASCII模式下载文件,YES使用,NO不使用。
ftpd_banner=Welcome to blah FTP service.
设置定制欢迎信息,登录时显示欢迎信息,如果设置了banner_file则此设置无效。
banner_file=/etc/vsftpd/banner
设置登录信息文件的位置。
xferlog_enable=YES
设置是否使用传输日志文件记录详细的下载和上传信息。
xferlog_file=/var/log/xferlog
设置传输日志的路径和文件名,默认是/var/log/xferlog日志文件位置。
xferlog_std_format=YES
设置传输日志文件是否写入标准xferlog格式。
guest_enable=NO
设置是否启用虚拟用户,YES启用,NO不启用。
guest_username=ftp
设置虚拟用户在系统中的真实用户名。
/etc/vsftpd/vsftpd.conf文件参数(5)
userlist_enable=YES
设置是否允许由userlist_file文件中指定的用户登录vsftpd服务器。YES表示允许登录vsftpd服务器。
userlist_file=/etc/vsftpd/user_list
当userlist_enable选项激活时加载的文件的名称。
userlist_deny=YES
设置是否允许由userlist_file文件中指定的用户登录vsftpd服务器。YES表示不允许登录vsftpd服务器,甚至连输入密码提示信息都没有。 deny_email_enable=YES
如果激活,要提供一个关于匿名用户的密码电子邮件表以阻止以这些密码登录的匿名用户。默认情况下,这个列表文件是/etc/vsftpd.banner_emails,但也可以通过设置banned_email_file来改变默认值。
banned_email_file=/etc/vsftpd/banned_emails
当deny_email_enable=YES时,设置包含被拒绝登录vsftpd服务器的电子邮件地址的文件。
listen=NO
设置是否启用独立进程控制vsftpd,用在IPv4环境。YES启用独立进程,NO启用xinetd进程。
listen_ipv6=YES
设置是否启用独立进程控制vsftpd,用在IPv6环境。YES启用独立进程,NO启用xinetd进程。
listen_address=192.168.0.2
设置vsftpd服务器监听的IP地址。
listen_port=21
设置vsftpd服务器监听的端口号。
pam_service_name=vsftpd
设置使用PAM模块进行验证时候的PAM配置文件名。
ftp_username=ftp
设置匿名用户所使用的系统用户名。

19.2.3 控制vsftpd服务
1.启动vsftpd服务
[root@rhel ~]# systemctl start vsftpd.service
2.查看vsftpd服务状态
[root@rhel ~]# systemctl status vsftpd.service
3.停止vsftpd服务
[root@rhel ~]# systemctl stop vsftpd.service
4.重新启动vsftpd服务
[root@rhel ~]# systemctl restart vsftpd.service
5.开机自动启动vsftpd服务
[root@rhel ~]# systemctl enable vsftpd.service

19.3 配置FTP客户端

19.3.1 Linux客户端配置
19.3.2 Windows客户端配置

19.3.1 Linux客户端配置
可以在Linux系统中使用ftp命令,或者使用图形界面下的浏览器Mozilla Firefox来访问vsftpd服务器上的资源。
ftp命令
ftp命令不仅可以在Linux系统中使用,也可以在Windows系统下使用。

(1)安装ftp软件包
[root@linux Packages]# rpm -ivh ftp-0.17-66.el7.x86_64.rpm

(2)使用ftp命令
ftp是用户界面的ARPANET标准文件传输协议,该程序允许用户从远程网络站点转移文件。

命令语法:
ftp [选项] [FTP服务器]

19.3.2 Windows客户端配置
CuteFTP是Windows系统下最常用的图形化FTP客户端程序。它支持下载文件续传、可下载或上传整个目录、具有不会因闲置过久而被FTP服务器断线。可以上传下载队列、上传断点续传、整个目录覆盖和删除等特点。它传输速度快、性能稳定、界面友好和使用简单。
在这里插入图片描述

19.4 FTP服务器配置实例

19.4.1 测试默认匿名用户登录
19.4.2 允许匿名用户上传下载文件和创建目录
19.4.3 只允许本地用户账户登录
19.4.4 限制用户只能访问自己的目录
19.4.5 配置FTP服务器使用非标准端口
19.4.6 拒绝指定用户连接FTP服务器

19.4.1 测试默认匿名用户登录
vsftpd服务启动之后,默认就允许匿名用户(anonymous或ftp)连接到vsftpd服务器。默认匿名用户不能离开vsftpd服务器匿名用户目录/var/ftp,匿名用户只能下载文件,而没有权限上传文件到vsftpd服务器上。
1.创建测试文件
2.生成目录信息文件
3.启动vsftpd服务
4.测试默认匿名用户登录

19.4.2 允许匿名用户上传下载文件和创建目录
1.创建匿名用户上传目录
2.编辑/etc/vsftpd/vsftpd.conf文件
3.设置SELinux
4.重新启动vsftpd服务
5.FTP客户端测试

19.4.3 只允许本地用户账户登录
如果不允许以匿名用户访问vsftpd服务器,而只能以本地用户访问vsftpd服务器上的资源时。
1.创建用户zhangsan
2.编辑/etc/vsftpd/vsftpd.conf文件
3.重新启动vsftpd服务
4.FTP客户端测试

19.4.4 限制用户只能访问自己的目录
在默认情况下,用户登录到vsftpd服务器上后,可以访问服务器中除了自己目录之外的其它目录,为了增加vsftpd服务器的安全,可以限制用户只能访问自己的目录,而不能访问别的目录。
1.编辑/etc/vsftpd/vsftpd.conf文件
2.设置SELinux
3.创建/etc/vsftpd/chroot_list文件
4.重新启动vsftpd服务
5.FTP客户端测试

19.4.5 配置FTP服务器使用非标准端口
在默认情况下,vsftpd使用的端口号是22,配置vsftpd服务器使用端口号3000。
1.编辑/etc/vsftpd/vsftpd.conf文件
2.设置SELinux
3.重新启动vsftpd服务
4.FTP客户端测试
5.查看vsftpd服务器使用的端口

19.4.6 拒绝指定用户连接FTP服务器
配置vsftpd服务器,拒绝用户zhangsan连接vsftpd服务器。
1.编辑/etc/vsftpd/ftpusers文件
2.重新启动vsftpd服务
3.FTP客户端测试

第20章 Sendmail服务器配置

20.1 电子邮件简介
20.2 Sendmail服务器安装和配置
20.3 配置Sendmail客户端
20.4 Sendmail服务器认证

20.1 电子邮件简介

20.1.1 什么是电子邮件
20.1.2 邮件系统组成

20.1.1 什么是电子邮件
电子邮件是一种用电子手段提供信息交换的通信方式,是互联网应用最广的服务。通过电子邮件系统,用户可以以非常低廉的价格、非常快速的方式,与世界上任何一个角落的网络用户联系。电子邮件可以是文字、图像和声音等多种形式。电子邮件的存在极大的方便了人与人之间的沟通与交流,促进了社会的发展。使用电子邮件具有传播速度快、方便便捷、成本低廉、广泛的交流对象以及信息多样化等优点。

20.1.2 邮件系统组成
邮件用户代理(MUA)
邮件传输代理(MTA)
邮件投递代理(MDA)

20.2 Sendmail服务器安装和配置

20.2.1 安装Sendmail服务器软件包
20.2.2 /etc/mail/sendmail.mc文件详解
20.2.3 /etc/mail/local-host-names文件详解
20.2.4 /etc/mail/access文件详解
20.2.5 /etc/aliases文件详解
20.2.6 /etc/mail/userdb文件详解
20.2.7 Sendmail服务器配置实例
20.2.8 配置dovecot服务器
20.2.9 测试发送Sendmail邮件

20.2.1 安装Sendmail服务器软件包
[root@rhel ~]# cd /run/media/root/RHEL-7.2\ Server.x86_64/Packages
[root@rhel Packages]# rpm -ivh procmail-3.22-35.el7.x86_64.rpm
[root@rhel Packages]# rpm -ivh m4-1.4.16-10.el7.x86_64.rpm
[root@rhel Packages]# rpm -ivh sendmail-8.14.7-4.el7.x86_64.rpm
[root@rhel Packages]# rpm -ivh sendmail-cf-8.14.7-4.el7.noarch.rpm

20.2.2 /etc/mail/sendmail.mc文件详解
Sendmail服务器的守护进程在运行时会读取/etc/mail/sendmail.cf和/etc/mail/submit.cf这两个文件,但是这两个文件配置起来太复杂,一般不会直接去修改,而是去修改/etc/mail/sendmail.mc和/etc/mail/submit.mc文件。
Sendmail服务器的第一个配置文件是/etc/mail/sendmail.cf,该文件决定Sendmail的属性,定义Sendmail服务器在哪一个域上工作以及开启某些验证机制。文件内容是特定宏语言编写,都是计算机生成的,该文件实在是过于复杂,我们只需要通过修改/etc/mail/sendmail.mc文件,并且使用m4命令将/etc/mail/sendmail.mc文件编译成/etc/mail/sendmail.cf文件即可。

20.2.3 /etc/mail/local-host-names文件详解
必须在/etc/mail/local-host-names文件中定义收发邮件的主机名称和主机别名,否则无法正常收发邮件。

修改/etc/mail/local-host-names文件,在该文件内可以添加以下内容。
sh.com
mail.sh.com

20.2.4 /etc/mail/access文件详解
在默认情况下,SMTP协议是不需要经过身份验证的,任何用户通过使用telnet方式都可以连接到本地邮件服务器的25端口上,并发送邮件。为了避免不必要的麻烦,Sendmail中的缺省配置直接禁止其它主机利用本地Sendmail服务器投递邮件。
使用/etc/mail/access文件可以用于控制邮件中继和邮件的进出管理,可以使用/etc/mail/access文件允许某些客户端可以使用此Sendmail服务器转发邮件。
在这里插入图片描述在这里插入图片描述

20.2.5 /etc/aliases文件详解
在Sendmail决定邮件的接收者的目的地之前,它会先试图在别名中查找。Sendmail的主要的别名配置文件是/etc/aliases。为了优化查找,Sendmail为其别名记录建立了一个哈希表数据库/etc/aliases.db。该文件通过newalias命令产生。

/etc/aliases文件的格式如下所示。
[真实用户账户]:[别名1],[别名2]

20.2.6 /etc/mail/userdb文件详解
/etc/mail/userdb.db是一个散列表数据库,它是通过/etc/mail/userdb文件产生的。/etc/mail/userdb文件默认不存在,需要手工创建。

/etc/mail/userdb文件的格式如下所示。
入站地址:maildrop 被改写的入站地址
出站地址:mailname 被改写的出站地址

20.2.7 Sendmail服务器配置实例
在公司内部配置一台Sendmail服务器,为公司网络内的客户端计算机提供邮件收发服务,具体参数如下。
DNS域名:sh.com。
DNS服务器IP地址:192.168.0.2。
Sendmail服务器IP地址:192.168.0.2。
Sendmail服务器MX记录:mail.sh.com。
公司网络:192.168.0.0。
设置能够给公司全体员工群发邮件。

20.2.8 配置dovecot服务器
Sendmail是一个MTA(邮件传输代理),它只提供SMTP服务,这就是说它只通过电子邮件的转发和本地分发功能,但是如果要实现异地接收邮件,就必须要POP3和IMAP服务的支持。一般情况下,SMTP服务和POP3、IMAP服务都安装在同一台服务器上。在Linux系统中,dovecot软件包可以同时提供POP3和IMAP服务。

1.安装dovecot软件包
2.编辑/etc/dovecot/dovecot.conf文件
3.启动dovecot服务
4.查看端口号

20.2.9 测试发送Sendmail邮件
SMTP协议监听端口号25,才能同其它邮件服务器传递邮件,通过使用telnet命令登录Sendmail服务器的25端口,模拟邮件服务器,发送邮件给所在服务器的用户。

[root@linux~]# telnet 192.168.0.2 25

20.3 配置Sendmail客户端

20.3.1 Linux客户端配置
20.3.2 Windows客户端配置

20.3.1 Linux客户端配置
1.编辑/etc/resolv.conf文件
2.使用mail命令发送邮件
3.使用mail命令接收邮件

20.3.2 Windows客户端配置
在Windows 10客户端上,可以使用Microsoft Outlook 2016。
在这里插入图片描述

20.4 Sendmail服务器认证

在互联网上运行的Sendmail服务器,必须启用中继功能才能转发外部邮件,但是如果不加以限制,那么会使非法用户有机会执行各种操作,比如发送垃圾邮件,甚至被其它邮件服务器屏蔽,无法向外部转发邮件。
通过Sendmail服务器认证功能,基于SASL验证邮件使用者的账户和密码,能够有效的拒绝非法用户使用Sendmail服务器中继邮件。

1.安装SASL库
2.编辑/etc/mail/sendmail.mc文件
3.重新启动sendmail服务
4.验证SASL
5.设置发送服务器要求验证

评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符 “速评一下”
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页