美文网首页LinuxLinux
RedHat/CentOS8 快速运维白皮书

RedHat/CentOS8 快速运维白皮书

作者: 张毅SOHO | 来源:发表于2020-09-11 12:45 被阅读0次

    本文是一篇 RedHat/CentOS8 发行版本的快速运维入门指南,整理了在安装、配置、使用 RedHat/CentOS8 服务器时使用频率较高的通用知识要点。

    本方案基于 CentOS8 系统设计,建议在 RedHat/CentOS8 系统中使用。

    目录

    1.系统安装

    2.系统初始化

    • 设置主机名
    • 设置静态 IP 地址
    • 设置时区和日期时间服务器
    • 关闭 SELinux
    • 关闭防火墙(若适用)
    • 配置本地名字解析(若适用)
    • 挂载外部磁盘(若适用)
    • 配置系统软件源
    • 更新系统
    • 安装中文输入法
    • 安装 C、C++ 编译工具
    • 安装常用运维工具
    • 启用 root 用户(若适用,不建议)
    • 找回 root 口令(若适用)

    3.基础知识
    -- 3.1.文件系统结构
    -- 3.2.目录文件信息
    -- 3.3.磁盘分区信息

    4.应用软件安装
    -- 4.1.二进制程序安装
    -- 4.2.二进制压缩包安装
    -- 4.3.源代码压缩包安装
    -- 4.4.RPM 安装包安装
    -- 4.5.YUM 源安装

    5.使用 root 用户的身份执行命令

    6.系统服务配置

    7.常用运维命令
    -- 7.1.用户和组管理
    -- 7.2.目录和文件管理
    -- 7.3.文件编辑
    -- 7.4.系统管理

    更多 Linux 运维命令和使用方式请阅读文件【https://www.runoob.com/linux/linux-command-manual.html


    1.系统安装

    1、在虚拟化场景下,建议将磁盘分成系统盘和数据盘配装,系统盘用于安装操作系统,建议分配磁盘空间40G~60G(但最低不少于20G);数据盘在安装系统后挂载,建议分配全部剩余空间。

    2、在设置安装目的地时,要使用自定义的设置方案,至少要挂载三个分区,三个分区的作用及磁盘空间分配原则是:

    磁盘分区

    1)"/boot"(启动分区)

    存放开机时所要用的文件,包括Linux核心文件、开机菜单和开机所要的配置文件。建议分配磁盘空间:1G。

    2)"/swap"(虚拟内存分区)

    配置为操作系统的虚拟内存空间。建议分配磁盘空间:当物理内存<4G时,分配空间=物理内存*2;当4G≥物理内存<8G时,分配空间=物理内存;当8G≥物理内存<64G时,分配空间=8G;当64G≥物理内存<256G时,分配空间=16G;当物理内存≥256G时,分配空间=32G。

    3)"/"(根分区)

    存放操作系统文件。建议分配空间:/boot和/swap分区以外的全部剩余空间。

    3、在设置软件选择时,建议选择带有GUI的服务器(CentOS8默认模式),该模式下的提供一些基础工具会使系统运维时更加便利。但不必勾选安装的额外软件。

    安装模式

    4、建议设置时区、语言、键盘为本地化适配(如:汉语,中国上海时区),以及主机名。这些设置在系统安装完成后仍可以进行变更。

    语言 时区 主机名和网络

    5、建议不要设置 "root" 账户的口令(根口令),因为这样就无法使用 "root" 账户登录系统,从而增加了系统的安全性。同时需要创建一个新的管理员用户(如 "admin" 账户),用于替代 "root" 账户进行系统管理操作,要注意创建用户时设置足够强度的口令并将这个用户设为管理员。

    用户设置 创建管理员用户

    2.系统初始化

    服务器初始化规范行为步骤清单:

    • 设置主机名
    • 设置静态 IP 地址
    • 设置时区和日期时间服务器
    • 关闭 SELinux
    • 关闭防火墙(若适用)
    • 配置本地名字解析(若适用)
    • 挂载外部磁盘(若适用)
    • 配置系统软件源
    • 更新系统
    • 安装中文输入法
    • 安装 C、C++ 编译工具
    • 安装常用运维工具
    • 启用 root 用户(若适用,不建议)
    • 找回 root 口令(若适用)

    1、设置主机名。

    使用文本编辑器打开"/etc/hostname"文件:

    [admin@host ~]$ sudo gedit /etc/hostname
    

    修改主机名并保存:

    host
    

    重启后生效:

    [admin@host ~]$ reboot
    

    2、设置静态 IP 地址。

    第一步 第二步 第三步

    注意:应用 IP 配置后,在 “第二步” 界面上重新【关闭/打开】 网卡后才能生效。

    3、设置时区和日期时间服务器。

    1)设置时区为 "中国上海":

    [admin@host ~]$ sudo gedit /etc/hostname
    

    2)设置日期时间同步配置:

    使用文本编辑器打开"/etc/chrony.conf"文件:

    [admin@host ~]$ sudo gedit /etc/chrony.conf
    

    验证或修改以下配置并保存:

    # 其中【2.centos.pool.ntp.org】是时间服务器地址
    pool 2.centos.pool.ntp.org iburst
    

    3)开启时区和日期时间的自动同步:


    4、关闭 SELinux。

    SELinux 全称【安全增强型 Linux(Security-Enhanced Linux)】,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。

    SELinux 在多数服务器应用场景中,普遍属于过度的安全保障,其负作用是在应用软件的安全和配置时产生过多的非必要限制,对于 SELinux 管理经验不足的技术人员来说是极大的运维负担。

    使用文本编辑器打开 "/etc/selinux/config" 文件:

    [admin@host ~]$ sudo gedit /etc/selinux/config
    

    将 "SELINUX" 参数设置为:"disabled",并保存:

    # enforcing - 表示启用 SELinux 安全策略。
    # permissive - 表示启用 SELinux 安全策略,但不强制验证。如果执行第一步可以正常运行,则建议设置此值。
    # disabled - 关闭 SELinux 安全策略,相当于没有安装 SELinux。
    SELINUX=disabled
    

    重启后生效:

    [admin@host ~]$ reboot
    

    更多关于 SELinux 引发的问题解决方案请阅读文章《RedHat/CentOS8【SELinux】引起的安全策略问题解决方案》【https://www.jianshu.com/p/a13f974f8bae

    5、关闭防火墙(若适用)。

    CentOS8 默认使用 Firewall 作为防火墙工具,Firewall 是网络流量控制程序,能够阻止未被操作系统授权的网络请求,在接入互联网的应用场景中,关闭防火墙将会使操作系统更容易遭受外部攻击。

    但是在私有网络的应用场景中,可以选择关闭防火墙,这样可以避免对网络策略的维护工作。

    注意:如果服务器作为 Docker 或 K8s 系统的宿主机,那必须关闭防火墙。因为在容器化应用场景中,防火墙策略会影响容器网络的正常运行。

    1)关闭防火墙服务并禁止开机自启动:

    [admin@host ~]$ sudo systemctl stop firewalld
    [admin@host ~]$ sudo systemctl disable firewalld
    

    2)启动(重新启动)防火墙服务并设置开机自启动:

    [admin@host ~]$ sudo systemctl restart firewalld
    [admin@host ~]$ sudo systemctl enable firewalld
    

    3)向外部主机开放网络安全策略(如允许外部主机访问服务器的 80 端口):

    [admin@host ~]$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
    [admin@host ~]$ sudo firewall-cmd --reload
    

    6、配置本地名字解析(若适用)。

    Linux 系统通过一个配置文件("/etc/hosts")向本地服务器提供名字解析,解析优先级高于 DNS 服务器。当应用软件需要通过域名来访问外部服务,而 DNS 服务器没有定义该域名或者该域名被污染的情况下,可以在该配置文件中定义名字解析。

    使用文本编辑器打开 "/etc/hosts" 文件:

    [admin@host ~]$ sudo gedit /etc/hosts
    

    在文件中追加各个节点的 IP 和 DNS 映射记录并保存:

    192.168.0.21 host1.cluster.local
    192.168.0.22 host2.cluster.local
    192.168.0.23 host3.cluster.local
    ...
    

    测试名字服务:

    [admin@host ~]$ nslookup host1.cluster.local
    
    Server:     192.168.0.2
    Address:    192.168.0.2#53
    
    Non-authoritative answer:
    Name:   host1.cluster.local
    Address: 192.168.0.21
    

    7、挂载外部磁盘(若适用)。

    在主机存储资源不足时,一般会采取向主机中添加硬盘的方式解决,这种方式有时也用于在虚拟机中实现操作系统和数据分离存储,是有效的数据安全手段。在主机中增加磁盘后,操作系统不会自动识别,需要通过“挂载”过程,使磁盘有效。

    1)将硬盘接入主机后,查看系统是否已经正确识别了硬盘:

    [admin@host ~]$ sudo fdisk -l
    
    Disk /dev/sdb:40 GiB,42949672960 字节,83886080 个扇区
    单元:扇区 / 1 * 512 = 512 字节
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    

    2)在新磁盘上创建分区:

    [admin@host ~]$ sudo fdisk /dev/sdb
    
    欢迎使用 fdisk (util-linux 2.32.1)。
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    
    设备不包含可识别的分区表。
    创建了一个磁盘标识符为 0x6232febd 的新 DOS 磁盘标签。
    
    命令(输入 m 获取帮助):n
    # 输入【n】表示创建分区。
    
    分区类型
       p   主分区 (0个主分区,0个扩展分区,4空闲)
       e   扩展分区 (逻辑分区容器)
    选择 (默认 p):p 
    # 选择创建的分区类型,其中【p】表示主分区(默认值,最多可以建 4 个),【e】表示扩展分区。
    
    分区号 (1-4, 默认  1): 1
    # 输入分区号,主分区为 1-4(默认为 1)。
    
    第一个扇区 (2048-83886079, 默认 2048): 
    # 输入分区的起始位置值,建议使用默认值,不会造成空间浪费。
    
    上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-83886079, 默认 83886079):
    # 第五步,输入分区的终止位置值,如果将剩余空间全部划分到该分区中,建议使用默认值;也可以通过计算得到终止的位置值,直接输入;但是建议采用输入“+size{K,M,G,T,P}”的方式,如:“+200M”是指该分区的大小为200M。
    
    创建了一个新分区 1,类型为“Linux”,大小为 40 GiB。
    
    命令(输入 m 获取帮助):w
    # 输入【w】保存建立的分区表。
    
    分区表已调整。
    将调用 ioctl() 来重新读分区表。
    正在同步磁盘。
    

    3)查看系统是否已经正确创建了分区:

    [admin@host ~]$ sudo fdisk -l
    
    Disk /dev/sdb:40 GiB,42949672960 字节,83886080 个扇区
    单元:扇区 / 1 * 512 = 512 字节
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x6232febd
    
    设备       启动  起点     末尾     扇区 大小 Id 类型
    /dev/sdb1        2048 83886079 83884032  40G 83 Linux
    

    4)格式化分区:

    [admin@host ~]$ sudo mkfs.ext4 /dev/sdb1
    
    mke2fs 1.45.4 (23-Sep-2019)
    创建含有 10485504 个块(每块 4k)和 2621440 个inode的文件系统
    文件系统UUID:dd71503f-5f61-4d99-9334-7e8f21e7ae39
    超级块的备份存储于下列块: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624
    
    正在分配组表: 完成                            
    正在写入inode表: 完成                            
    创建日志(65536 个块)完成
    写入超级块和文件系统账户统计信息: 已完成 
    

    5)创建挂载目录:

    [admin@host ~]$ sudo mkdir -p /data
    

    6)挂载分区:

    使用文本编辑器打开 "/etc/fstab" 文件:

    [admin@host ~]$ sudo gedit /etc/fstab
    

    在文件中追加以下内容并保存:

    /dev/sdb1 /data ext4 defaults 0 2
    

    格式:<file system> <mount point> <type> <options> <dump> <pass> ,使用空格(space)或制表符(tab)分隔。

    说明:

    • <file system>:设备(分区)的名字,也可以用UUID或卷名。格式为:LABEL=<label> 或UUID=<uuid>。如:LABEL=Boot 或UUID=3e6be9de-8139-11d1-9106-a43f08d823a6。
    • <mount point>:挂载点,必须是已存在的文件目录,如果目录中已有内容,则会隐藏,取消挂载后自动恢复。
    • <type>:挂载设备或分区为何种文件系统类型(例如:ext2, ext3, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap等)。
    • <options>:
      ① 自动与手动挂载。“auto”表示在启动或在终端中输入mount -a时自动挂载;“noauto”表示设备(分区)只能手动挂载。
      ② 读写权限。“ro”表示挂载为只读权限;“rw”表示挂载为读写权限。
      ③ 可执行。“exec”是一个默认设置项,使所在分区中的可执行文件能够执行;“noexec”使可执行文件不允许执行(勿要在root分区中用这个选项)。
      ④ I/O同步。“sync”表示所有的I/O将以同步方式进行;“async”表示所有的I/O将以异步方式进行。
      ⑤ 用户挂载权限。“user”表示允许任何用户挂载设备;“nouser”表示只允许root用户挂载。
      ⑥ defaults,使用默认设置。默认值包括rw,suid,dev,exec,auto,nouser,async;
    • <dump>:dump utility用来决定是否做备份的,允许的数字是0和1。“0”表示dump就会忽略这个文件系统;“1”表示dump就会作一个备份。大部分的用户是没有安装dump的,因此一般可写为“0”。
    • <pass>:是否以fsck检验扇区。启动的过程中,系统默认会以fsck检验我们的 filesystem 是否完整 (clean),允许的数字是“0, 1, 2”。“0”表示不检验,如“swap分区”;“1”表示优先检验(一般只有根分区会配置为 1);“2”表示要滞后检验(一般除“0”或“1”以外,其他需要检验的分区配置为 2)。

    7)重启后生效:

    [admin@host ~]$ reboot
    

    8、配置系统软件源。

    由于 Linux 系统预装的基础软件体量小,在安装或运行新软件时,就会因为缺失基础软件(或基础软件版本低)而导致失败,也就是通常说的“软件依赖关系问题”,而这对于 Linux 系统来说是一个大问题。

    为了解决这个问题,通常 Linux 系统发行方(如:CentOS)和第三方(如:阿里云)都会提供互联网公共软件仓库。Linux 系统通过工具(如:dnf,yum)自动软件仓库中完成:下载 rpm 包、自动处理包依赖关系,并且能够一次安装所有所依赖 rpm 包的自动化流程。

    CentOS8 默认的官方软件源是国外的,通常情况下需要配置成国内软件源(如:阿里云),操作步骤如下:

    1)备份现有的 yum 源配置文件。yum 源配置文件是 "/etc/yum.repos.d" 目录下的 "*.repo" 文件,备份该目录,以便于操作失败时恢复。

    [admin@host ~]$ sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.bak
    

    2)修改 "/etc/yum.repos.d" 目录下的 "CentOS-AppStream.repo"、"CentOS-Base.repo"和"CentOS-Extras.repo" 文件。改为国内阿里云 yum 源。

    使用文本编辑器打开 "CentOS-AppStream.repo" 文件:

    [admin@host ~]$ sudo gedit /etc/yum.repos.d/CentOS-AppStream.repo
    

    修改为以下内容后保存:

    [AppStream]
    name=CentOS-$releasever- AppStream
    baseurl=http://mirrors.aliyun.com/centos/$releasever/AppStream/$basearch/os/
    gpgcheck=1
    enabled=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
    

    使用文本编辑器打开"CentOS-Base.repo"文件:

    [admin@host ~]$ sudo gedit /etc/yum.repos.d/CentOS-Base.repo
    

    修改为以下内容后保存:

    [BaseOS]
    name=CentOS-$releasever- Base
    baseurl=http://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/
    gpgcheck=1
    enabled=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
    

    使用文本编辑器打开"CentOS-Extras.repo"文件:

    [admin@host ~]$ sudo gedit /etc/yum.repos.d/CentOS-Extras.repo
    

    修改为以下内容后保存:

    [extras]
    name=CentOS-$releasever- Extras
    baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/os/
    gpgcheck=1
    enabled=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
    
    [epel-modular]
    name=Extra Packages for Enterprise Linux Modular $releasever - $basearch
    baseurl=http://mirrors.aliyun.com/epel/$releasever/Modular/$basearch
    enabled=1
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8
    
    [epel]
    name=Extra Packages for Enterprise Linux $releasever - $basearch
    baseurl=http://mirrors.aliyun.com/epel/$releasever/Everything/$basearch
    enabled=1
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8
    

    3)刷新 yum 源缓存。使新的 yum 源配置生效:

    [admin@host ~]$ sudo dnf clean all
    [admin@host ~]$ sudo dnf makecache
    

    更多关于软件源配置的内容请阅读文章《RedHat/CentOS8 【国内/本地/私有 Yum 源】制作和使用》【https://www.jianshu.com/p/68db74388600

    9、更新系统并重启计算机。

    [admin@host ~]$ sudo dnf update
    [admin@host ~]$ reboot
    

    10、安装中文输入法。

    CentOS8 默认没有汉语拼音输入法,安装汉语拼音输入法的操作方法如下:

    第一步,安装汉语拼音输入法并重启计算机。

    [admin@host ~]$ sudo dnf install ibus-libpinyin.x86_64
    [admin@host ~]$ reboot
    

    第二步,设置区域和语言。

    打开【设置】>>【Region&Language】,点击【+】按钮添加输入源 点击选择【汉语(中国)】 点击选择【汉语(智能拼音)】后点击【添加(A)】完成汉语拼音输入源设置

    第三步,使用汉语拼音输入法。

    在操作系统的【状态栏】切换【汉语拼音输入法】 在应用软件(如:编辑器,命令行等)中输入汉字

    11、安装 C、C++ 编译工具。

    Linux 是使用 C 语言开发的操作系统,其适配的多数应用软件也是使用 C 语言开发的,对于需要通过编译才能安装的应用软件,Linux 系统需要提供 C、C++ 编译工具。安装过程如下:

    [admin@host ~]$ sudo dnf install make gcc
    

    ① "gcc"是一个C/C++、FORTRAN、JAVA、OBJC、ADA等多种语言的编译器,用来将源代码编译成可发布的软件程序。

    ② "make"是一个工程管理工具,能够根据 Makefile 中的脚本执行编译、安装流程。

    在Linux系统中,大多数通过源代码编译来安装的软件都需要依赖"make"和"gcc"。

    12、安装常用运维工具。

    [admin@host ~]$ sudo dnf install openssh net-tools curl wget telnet
    

    ① "openssh" 是基于 ssh 协议的远程控制工具。

    ② "net-tools" 是一组网络运维工具,如:ifconfig 命令。

    ③ "curl" 是一个的网页浏览命令行工具。

    ④ "wget" 是一个文件下载命令行工具。

    ⑤ "telnet" 是一个远程主机端口访问工具。

    13、启用 root 用户(若适用,不建议)。

    如果在安装系统时未设置 root 用户的口令,则无法使用 root 用户登录系统(Linux 不允许没有设置口令的用户登录系统)。通过 “passwd” 指令设置 root 用户口令,之后就可以使用 “su” 指令切换 root 用户,切换成功后可以使用 “exit” 指令退出。

    [admin@host ~]$ sudo passwd root
    
    输入新的 UNIX 密码: 
    重新输入新的 UNIX 密码: 
    passwd:已成功更新密码
    
    [admin@host ~]$  su root
    [root@host ~]#  exit
    

    14、找回 root 口令(若适用)。

    具体操作步骤请阅读文章【https://www.runoob.com/linux/linux-forget-password.html】。


    3.基础知识

    3.1.文件系统结构

    image

    /:根目录,文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin 应该和根目录放置在一个分区中。

    /boot:用于存放引导文件,内核文件,引导加载器。

    /bin:提供用户使用的基本命令, 存放二进制命令,不允许关联到独立分区,系统启动会用到里面的程序。

    /sbin:管理类的基本命令,不能关联到独立分区,系统启动时会用到的程序(重要的命令通常处于bin,不重要的则安装在sbin)。

    /lib:存放系统在启动时依赖的基本共享库文件以及内核模块文件,系统使用的函数库的目录也存放了大量的脚本库文件,程序在执行过程中,需要调用时会用到。

    /lib64:存放64位系统上的辅助共享库文件。

    /usr:应用程序存放目录。"/usr/bin"存放保证系统拥有完整功能而提供的应用程序;"/usr/share"存放共享数据;"/usr/lib"存放不能直接运行却是许多程序运行所必需的一些函数库文件;"/usr/local"存放第三方应用程序的安装文件和软件升级包;"****/usr/share/doc"存放系统说明文件。

    /opt:第三方应用程序的安装位置。

    /etc:系统配置文件存放的目录,该目录存放系统的大部分配置文件和子目录,不建议在此目录下存放可执行文件 。

    /tmp:存储临时文件, 任何人都可以访问,重要数据一定不要放在此目录下。

    /var:放置系统中经常要发生变化的文件,如日志文件。"/var/log"存放日志目录及文件;"/var/tmp"存放系统两次重启之间产生的临时数据。

    /home:普通用户主目录,当新建账户时,都会分配在此,建议单独分区,并分配额外空间用于存储数据。

    /root:系统管理员root账户的主目录,系统第一个启动的分区为"/",所以最好将"/root"和"/"放置在一个分区下。

    /media:便携式移动设备挂载点目录。

    /mnt:临时文件系统挂载点。

    /dev:设备(device)文件目录,存放系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,存放连接到计算机上的设备(终端、磁盘驱动器、光驱及网卡等)的对应文件 (b 随机访问,c 线性访问)。

    /srv:服务启动之后需要访问的数据目录,存放系统上运行的服务用到的数据,如网站服务需要访问的网页数据存放在"/srv/www"内。

    /proc:用于输出内核与进程信息相关的虚拟文件系统,目录中的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间。

    /sys:用于输出当前系统上硬件设备相关的虚拟文件系统。

    /selinux:存放selinux相关的信息安全策略等信息。


    3.2.目录文件信息

    在系统的Shelll窗口输入"ll"(一个文件列表指令)时,会得到一个文件详细信息的列表,一个典型的列表信息如下图:

    image

    1、第一组数据:类型权限描述信息。

    image

    类型权限描述信息一共由10位组成,其中:

    第1位:表示文件的类型。其中:"d"表示目录;"-"表示普通文件;"l"表示链接文件;"p"表示管理文件;"b"表示块设备文件;"c"表示字符设备文件;"s"表示套接字文件。

    第2/3/4位,第5/6/7位,第8/9/10位:分别表示所有者用户、所有者组、其他用户的权限,分别由一组"rwx"组成。其中:"r"表示可读;"w"表示可写;"x"表示可执行;"-"表示无对应权限。

    2、第二组数据:数量统计信息。

    image

    对于目录来说,统计的是它包含的子目录数量,任何目录都包含"../"(上级目录)和"./"(本级目录)两个隐藏目录,因此实际包含的目录数是统计数量减2。

    对于文件来说,统计的是它自己,也就是1。

    3、第三组数据:所有者账户和组。

    image

    从左到右依次是目录/文件的所有者账户和所有者组。

    4、第四组数据:占用磁盘空间(单位:byte)。

    image

    5、第五组数据:修改日期。

    image

    对于一年以内修改的文件,显示:月/日/时分;对于一年以前修改的文件,显示:月/日/年。

    6、第六组数据:目录/文件名。

    image

    目录/文件名的默认配色方案如下:灰白色表示普通文件;亮绿色表示可执行文件;亮红色表示压缩文件;灰蓝色表示目录;亮蓝色表示链接文件;亮黄色表示设备文件。


    3.3.磁盘分区信息

    在主机中可以有多块硬盘,其次每块硬盘上可以划分多个分区。磁盘和分区在 Linux 系统中用 “/dev/sd[a-z][1…]” 的形式来表示。其中 [a-z] 表示磁盘,[1…] 表示磁盘的分区 IDE 硬盘,限制 63 个分区; SCSI 硬盘限制15个分区。如:

    “/dev/sda” 表示第一块硬盘(一般也是主硬盘),“/dev/sdb,/dev/sdc,…” 表示第二,第三块扩展硬盘。

    “/dev/sda1” 表示第一块硬盘的第一个分区,“/dev/sda2,/dev/sda3,…” 表示第一块硬盘的第二,第三个分区。

    1)使用 “fdisk -l” 指令查询磁盘和分区信息:

    [admin@host ~]$ sudo fdisk -l
    
    Disk /dev/sda:20 GiB,21474836480 字节,41943040 个扇区
    单元:扇区 / 1 * 512 = 512 字节
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x1d89148f
    
    设备       启动     起点     末尾     扇区 大小 Id 类型
    /dev/sda1  *        2048  2099199  2097152   1G 83 Linux
    /dev/sda2        2099200 33556479 31457280  15G 83 Linux
    /dev/sda3       33556480 41943039  8386560   4G 82 Linux swap / Solaris
    

    2)使用 “df -T” 指令查询分区和挂载目录信息:

    [admin@host ~]$ df -h
    
    文件系统        容量  已用  可用 已用% 挂载点
    devtmpfs        1.9G     0  1.9G    0% /dev
    tmpfs           1.9G     0  1.9G    0% /dev/shm
    tmpfs           1.9G   10M  1.9G    1% /run
    tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
    /dev/sda2        15G  4.3G  9.7G   31% /
    /dev/sda1       976M  187M  722M   21% /boot
    tmpfs           376M  1.2M  375M    1% /run/user/42
    tmpfs           376M  4.6M  371M    2% /run/user/1000
    

    4.应用软件安装

    CentOS 系统可以安装通过以下形式发布的应用程序:

    • 二进制程序:能够直接在 Shell 中执行的已编译程序,下载后增加可行性权限就能直接使用。比如一个 shell 脚本文件,或者功能单一的程序(如 ifconfig、ping)。

    • 二进制压缩包:通常是 "tar"、"tar.gz"、"zip" 格式的已编译程序压缩包,下载后需要解压后使用(通常一个压缩包中会含有可执行的二进制程序,以及配置、文档、数据文件等)。

    • 源代码压缩包:通常是 "tar"、"tar.gz"、"zip" 格式的 C / C++ 源代码压缩包,下载后需要使用 gcc 和 make 工具进行编译后,再安装到系统中。

    • RPM 安装包:通常是 "rpm" 格式的安装包,下载后通过 rpm 命令安装即可,rpm 除了安装应用程序外,还能够对应用程序的状态进行记录(如:各个文件的安装位置),还可以通过 rpm 命令进行卸载。

    • YUM 源:是由 RPM 安装包和管理元数据组成的软件仓库系统,系统通过 yum 源配置文件确定软件仓库的位置,通过 dnf/yum 指令,自动从软件仓库中下载 rpm 包、自动处理包依赖关系,并且能够一次安装所有依赖 rpm 包。


    4.1.二进制程序安装

    以 "CFSSL" 的安装为例:

    1、打开 CFSSL 下载页面【https://pkg.cfssl.org/】,下载最新版本的 cfssl、cfssljson 和 cfssl-certinfo 的编译程序文件到用户主目录中。

    CFSSL 下载页面

    cfssl:用于创建证书;
    cfssljson:用于通过 JSON 元数据文件创建证书;
    cfssl-certinfo:用于查看证书内容。

    2、为 CFSSL 的程序文件增加可执行权限。

    [admin@host ~]$ chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
    

    3、将 CFSSL 的程序文件迁移安装到操作系统默认的 shell 目录中并重命名。

    [admin@host ~]$ sudo mv cfssl_linux-amd64 /usr/bin/cfssl
    [admin@host ~]$ sudo mv cfssljson_linux-amd64 /usr/bin/cfssljson
    [admin@host ~]$ sudo mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfo
    

    4、验证 CFSSL 程序。

    [admin@host ~]$ cfssl
    

    4.2.二进制压缩包安装

    以 "Tomcat" 的安装为例:

    1、打开 Tomcat 官方网站下载页面【https://tomcat.apache.org/download-90.cgi】,下载 Tomcat 的编译程序 tar 包到用户主目录中。

    Tomcat 下载页面

    2、解压缩编译程序 tar 包到"/usr/local"目录中。

    [admin@host ~]$ sudo tar zxvf apache-tomcat-9.0.34.tar.gz -C /usr/local
    [admin@host ~]$ sudo mv /usr/local/apache-tomcat-9.0.34 /usr/local/tomcat-9.0.34
    

    4.3.源代码压缩包安装

    以 "Redis" 的安装为例:

    1、打开Redis官方网站下载页面【http://www.redis.cn/download.html】,下载Redis 的源代码 tar 包到用户主目录中。

    Redis 下载页面

    2、验证并安装依赖软件。通过源代码编译的方式安装Redis,需要依赖软件"make"和"gcc",验证或安装依赖软件。

    [admin@host ~]$ sudo dnf install make gcc
    

    3、解压缩源代码tar包到用户主目录下。

    [admin@host ~]$ tar zxvf redis-5.0.5.tar.gz
    [admin@host ~]$ ll
    drwxrwxr-x. 6 centos centos    4096 3月  12 23:07 redis-5.0.5
    -rw-rw-r--. 1 centos centos 1985757 3月  28 16:47 redis-5.0.5.tar.gz
    

    4、进入源代码目录下的"src"目录,先编译Redis源代码文件,然后将编译后的程序安装到"/usr/local"目录中。

    [admin@host ~]$ cd redis-5.0.5/src
    [admin@host src ]$ make
    [admin@host src ]$ sudo make install PREFIX=/usr/local/redis-5.0.5
    

    程序安装目录是"/usr/local/redis-5.0.5"。


    4.4.RPM 安装包安装

    以 "OracleJDK" 的安装为例:

    1、打开 Oracle JDK 官方网站下载页面【https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html】,下载 Oracle JDK 的编译程序 rpm 包到用户主目录中。

    OracleJDK 下载页面

    1)安装:

    [admin@host ~]$ sudo rpm -ivh jdk-8u261-linux-x64.rpm
    

    2)升级安装:

    [admin@host ~]$ sudo rpm -Uvh jdk-8u261-linux-x64.rpm
    

    3)查询是否安装:

    [admin@host ~]$ rpm -q jdk1.8
    

    4)查询安装内容:

    [admin@host ~]$ rpm -ql jdk1.8
    

    5)查询安装信息:

    [admin@host ~]$ rpm -qi jdk1.8
    

    6)卸载:

    [admin@host ~]$ sudo rpm -e jdk1.8
    

    7)列出已安装的 rpm 包:

    [admin@host ~]$ rpm -qa
    

    8)列出已安装的名称含有关键字的 rpm 包:

    [admin@host ~]$ rpm -qa | grep jdk
    

    9)查看使用指南:

    [admin@host ~]$ rpm --help
    

    4.5.YUM 源安装

    1、配置 YUM 源。

    大多数应用程序的官方网站都会提供 YUM 源的软件安装方式,只需要将 YUM 源配置文件下载到 "/etc/yum.repos.d" 目录下即可。

    以 "CentOS8" 为例,CentOS8 默认的官方软件源是国外的,通常情况下需要配置成国内软件源(如:阿里云),操作步骤如下:

    1)备份现有的 yum 源配置文件。yum 源配置文件是 "/etc/yum.repos.d" 目录下的 "*.repo" 文件,备份该目录,以便于操作失败时恢复。

    [admin@host ~]$ sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.bak
    

    2)修改 "/etc/yum.repos.d" 目录下的 "CentOS-AppStream.repo"、"CentOS-Base.repo"和"CentOS-Extras.repo" 文件。改为国内阿里云 yum 源。

    使用文本编辑器打开 "CentOS-AppStream.repo" 文件:

    [admin@host ~]$ sudo gedit /etc/yum.repos.d/CentOS-AppStream.repo
    

    修改为以下内容后保存:

    [AppStream]
    name=CentOS-$releasever- AppStream
    baseurl=http://mirrors.aliyun.com/centos/$releasever/AppStream/$basearch/os/
    gpgcheck=1
    enabled=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
    

    使用文本编辑器打开"CentOS-Base.repo"文件:

    [admin@host ~]$ sudo gedit /etc/yum.repos.d/CentOS-Base.repo
    

    修改为以下内容后保存:

    [BaseOS]
    name=CentOS-$releasever- Base
    baseurl=http://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/
    gpgcheck=1
    enabled=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
    

    使用文本编辑器打开"CentOS-Extras.repo"文件:

    [admin@host ~]$ sudo gedit /etc/yum.repos.d/CentOS-Extras.repo
    

    修改为以下内容后保存:

    [extras]
    name=CentOS-$releasever- Extras
    baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/os/
    gpgcheck=1
    enabled=1
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
    
    [epel-modular]
    name=Extra Packages for Enterprise Linux Modular $releasever - $basearch
    baseurl=http://mirrors.aliyun.com/epel/$releasever/Modular/$basearch
    enabled=1
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8
    
    [epel]
    name=Extra Packages for Enterprise Linux $releasever - $basearch
    baseurl=http://mirrors.aliyun.com/epel/$releasever/Everything/$basearch
    enabled=1
    gpgcheck=1
    gpgkey=http://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8
    

    3)刷新 yum 源缓存。使新的 yum 源配置生效:

    [admin@host ~]$ sudo dnf clean all
    [admin@host ~]$ sudo dnf makecache
    

    更多关于软件源配置的内容请阅读文章《RedHat/CentOS8 【国内/本地/私有 Yum 源】制作和使用》【https://www.jianshu.com/p/68db74388600

    2、通过 YUM 源安装软件。

    以 "OpenJDK" 为例:

    1)安装:

    [admin@host ~]$ sudo dnf install java-1.8.0
    

    2)更新:

    [admin@host ~]$ sudo dnf upgrade java-1.8.0
    

    3)删除:

    [admin@host ~]$ sudo dnf remove java-1.8.0
    

    4)更新系统内核和已安装的全部应用程序:

    [admin@host ~]$ sudo dnf update
    

    5)更新已安装的全部应用程序:

    [admin@host ~]$ sudo dnf upgrade
    

    6)列出已安装的全部应用程序:

    [admin@host ~]$ dnf list
    

    7)列出已安装的名称含有关键字的应用程序:

    [admin@host ~]$ dnf list | grep java
    

    8)查看使用指南:

    [admin@host ~]$ dnf --help
    

    注意: CentOS8 使用 dnf 命令,CentOS7 及以下使用 yum 命令,两个命令的使用方法基本相同。


    5.使用 root 用户的身份执行命令

    sudo 指令允许普通用户使用 root 用户的身份执行命令,不仅减少了 root 用户的登陆次数和管理时间,也提高了系统安全性。使用 sudo 指令的用户必须设置口令。

    1、配置文件 "/etc/sudoers" 指明特定的用户可以执行特定的命令。

    使用文本编辑器打开 "/etc/sudoers" 文件:

    [admin@host ~]$ sudo gedit /etc/sudoers
    

    常用形式如下:

    1)允许一个已设置口令的普通用户能够以 root 用户的身份执行全部命令,执行命令前需验证该用户口令:

    user  ALL=(ALL)   ALL
    

    2)允许一个已设置口令的普通用户能够以 root 用户的身份执行全部命令,且不必验证该用户口令:

    user  ALL=(ALL)   NOPASSWD: ALL
    

    3)允许一个已设置口令的普通用户能够以 root 用户的身份执行特定的命令,执行命令前需验证该用户口令:

    user  ALL=/sbin/ip,/usr/sbin/arping
    

    4)允许一个已设置口令的普通用户能够以 root 用户的身份执行特定的命令,且不必验证该用户口令:

    user ALL=NOPASSWD: /sbin/ip,NOPASSWD: /usr/sbin/arping
    

    2、配置文件 "/etc/sudoers" 详解。

    1)配置文件定义规范:

    # Host alias specification
    #定义主机的列表集合(允许定义多个规则)
    #格式:
    #Host_Alias [ALIAS_NAME]=[!][hostname|ip_addr|network(/netmask)?|Host_Alias][,…]
    #说明:
    #[ALIAS_NAME]:别名,以大写字母开头,只能包含大写字母,数字,下划线;
    #[!]:逆运算,即取反;
    #[hostname]:主机名或域名;
    #[ip_addr]:IP地址;
    #[network(/netmask)?]:网域(/子网号);
    #[Host_Alias]:主机别名;
    #[,…]:多个项使用半角的“,”分隔。
    #例如:
    #Host_Alias HOST = 128.138.243.0, 128.138.204.0/24, 128.138.242.0, !www.baidu.com,kylin
    
    
    
    # User alias specification
    #定义用户的列表集合(允许定义多个规则)
    #格式:
    #User_Alias [ALIAS_NAME]=[!][username|#uid|%groupname|User_Alias] [,…]
    #说明:
    #[ALIAS_NAME]:别名,以大写字母开头,只能包含大写字母,数字,下划线;
    #[!]:逆运算,即取反;
    #[username]:用户账号;
    #[uid]:用户uid号;
    #[groupname]:用户组;
    #[User_Alias]:用户别名;
    #[,…]:多个项使用半角的“,”分隔。
    #例如:
    #User_Alias USER = kylin,#1000,%sudo,!geust
    
    
    
    # Cmnd alias specification
    #定义命令的列表集合(允许定义多个规则)
    #格式:
    #Cmnd_Alias [ALIAS_NAME]= [!][command|directory|Cmnd_Alias] [,…]
    #说明:
    #[ALIAS_NAME]:别名,以大写字母开头,只能包含大写字母,数字,下划线;
    #[!]:逆运算,即取反;
    #[command]:指令路径(绝对路径);
    #[directory]:指令目录;
    #[Cmnd_Alias]:指令别名;
    #[,…]:多个项使用半角的“,”分隔。
    #例如:
    #Cmnd_Alias Cmnd = /bin/passwd,/bin/ls
    
    
    
    # Runas alias specification
    #定义命令的运行身份集合(允许定义多个规则)
    #格式:
    #Runas_Alias [ALIAS_NAME]= [!][username|#uid| %groupname|Runas_Alias] [,…]
    #说明:
    #[ALIAS_NAME]:别名,以大写字母开头,只能包含大写字母,数字,下划线;
    #[!]:逆运算,即取反;
    #[username]:用户账号;
    #[uid]:用户uid号;
    #[groupname]:用户组;
    #[User_Alias]:用户别名;
    #[,…]:多个项使用半角的“,”分隔。
    #例如:
    #Runas_Alias Runas =root,#501, !%kylin,%sudo
    
    
    
    # User privilege specification
    #定义使用规则(允许定义多个规则)
    #格式:
    #[授权用户] [主机]=([执行账号]) [参数] [命令]
    #说明:
    #[授权用户]:允许使用sudo的用户,可以是[!][username|#uid|%groupname|User_Alias]
    #[主机]:允许使用sudo的主机,可以是[!][hostname|ip_addr|network(/netmask)?|Host_Alias],多个使用半角的“:”分隔;
    #[执行账号]:指令的执行用户,可以是[!][username|#uid| %groupname|Runas_Alias],不指定为root账号,多个使用半角的“:”分隔;
    #[参数]:包括'NOPASSWD:' | 'PASSWD:' | 'NOEXEC:' | 'EXEC:' | 'SETENV:' | 'NOSETENV:' | 'LOG_INPUT:' | 'NOLOG_INPUT:' | 'LOG_OUTPUT:' | 'NOLOG_OUTPUT:',非必要项;
    #[命令]:执行的命令,可以是[!][command|directory|Cmnd_Alias],多个使用半角的“,”分隔;
    #例如:
    #root  ALL=(ALL) ALL
    

    2)配置文件通配符:

    通配符只可用在主机名、文件路径、命令行的参数列表中。可用的通配符包括:

    • *:匹配任意数量的字符;
    • ?:匹配一个任意字符;
    • [...]:匹配在范围内的一个字符;
    • [!...]:匹配不在范围内的一个字符;
    • \x:用于转义特殊字符。

    在使用通配符时有以下的注意点:

    • 用[:alpha:]等通配符时,要转义冒号':',如:[:alpha:]
    • 当通配符用于文件路径时,不能跨'/'匹配,如:/usr/bin/*能匹配/usr/bin/who但不能匹配/usr/bin/X11/xterm
    • 如果指令的参数列表是空时,匹配不包含任何参数的指令。
    • ALL 关键字表示匹配所有情况。

    6.系统服务配置

    CentOS8 通过服务管理器 "systemd" 来实现应用程序的开机自启动、启动、重启、停止、禁用、查看状态、跟踪日志等功能。检视和控制 systemd 的主要命令是 "systemctl" 和 "journalctl",服务通过在 "/usr/lib/systemd/system/" 目录下创建 "*.service" 文件来定义。

    以 "Tomcat" 的 systemd 配置为例:

    1、创建服务配置文件。

    使用文本编辑器创建配置文件:

    [admin@host ~]$ sudo gedit /usr/lib/systemd/system/tomcat.service
    

    修改或验证文件中的以下参数并保存:

    [Unit]
    Description=Tomcat Server
    After=network.target syslog.target
    
    [Install]
    WantedBy=multi-user.target
    
    [Service]
    Type=forking
    User=tomcat
    Group=tomcat
    
    ExecStart=/usr/local/tomcat-9.0.34/bin/startup.sh
    ExecStop=/usr/local/tomcat-9.0.34/bin/shutdown.sh
    ExecReload=/usr/local/tomcat-9.0.34/bin/shutdown.sh
    

    配置文件详解:

    [Unit]
    #服务描述(必选)
    Description=OpenSSH server daemon
    
    #说明文档位置(可选)
    Documentation=man:sshd(8) man:sshd_config(5)
    
    #表示如果network.target或sshd-keygen.service需要启动,那么sshd.service应该在它们之后启动。(可选)
    After=network.target sshd-keygen.service
    
    #表示如果network.target或sshd-keygen.service需要启动,那么sshd.service应该在它们之前启动。(可选)
    Before=network.target sshd-keygen.service
    
    #表示sshd.service与sshd-keygen.service之间存在"弱依赖"关系,即如果"sshd-keygen.service"启动失败或停止运行,不影响sshd.service继续执行。(可选)
    Wants=sshd-keygen.service
    
    #表示sshd.service与sshd-keygen.service之间存在"强依赖"关系,即如果"sshd-keygen.service"启动失败或停止运行,那么sshd.service也必须退出。(可选)
    Requires=sshd-keygen.service
    
    [Service]
    #指定服务执行账户。
    User=root
    
    #指定服务执行的组。
    Group=root
    
    #指定当前服务的环境参数文件。该文件内部的key=value键值对,可以用$key的形式,在当前配置文件中获取。(可选)
    EnvironmentFile=/etc/sysconfig/sshd
    
    #定义启动进程时执行的事件命令。(必选)
    ExecStart=/usr/sbin/sshd -D $OPTIONS
    
    #重启服务时执行的事件命令。(可选)
    ExecReload=
    #停止服务时执行的事件命令。(可选)
    ExecStop=
    #启动服务之前执行的事件命令。(可选)
    ExecStartPre=
    #启动服务之后执行的事件命令。(可选)
    ExecStartPost=
    #停止服务之后执行的事件命令。(可选)
    ExecStopPost=
    
    #定义启动类型。可以设置的值如下:
    #simple(默认值):ExecStart字段启动的进程为主进程。
    #forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程。
    #oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务。
    #dbus:类似于simple,但会等待 D-Bus 信号后启动。
    #notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务。
    #idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。
    Type=simple
    
    #定义 Systemd 如何停止服务。可选择的值如下:
    #control-group(默认值):当前控制组里面的所有子进程,都会被杀掉。
    #process:只杀主进程。
    #mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号。
    #none:没有进程会被杀掉,只是执行服务的 stop 命令。
    KillMode=process
    
    #定义服务退出后,Systemd 的重启方式。可选择的值如下:
    #no(默认值):退出后不会重启。
    #on-success:只有正常退出时(退出状态码为0),才会重启。
    #on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启。
    #on-abnormal:只有被信号终止和超时,才会重启。
    #on-abort:只有在收到没有捕捉到的信号终止时,才会重启。
    #on-watchdog:超时退出,才会重启。
    #always:不管是什么退出原因,总是重启。
    Restart=on-failure
    
    #表示 Systemd 重启服务之前,需要等待的秒数。
    RestartSec=42s
    
    [Install]
    #表示该服务所在的 Target。Target的含义是服务组,表示一组服务。这个设置的作用是:执行systemctl enable sshd.service命令时,sshd.service的一个符号链接,就会放在/etc/systemd/system目录下面的multi-user.target.wants子目录之中。
    #常用的 Target 有两个:一个是multi-user.target,表示多用户命令行状态;另一个是graphical.target,表示图形用户状态,它依赖于multi-user.target。
    WantedBy=multi-user.target
    

    2、服务控制命令。

    1)启动服务:

    [admin@host ~]$ sudo systemctl start tomcat
    

    2)停止服务:

    [admin@host ~]$ sudo systemctl stop tomcat
    

    3)启动/重新启动服务:

    [admin@host ~]$ sudo systemctl restart tomcat
    

    4)查看服务状态:

    [admin@host ~]$ sudo systemctl status tomcat
    

    5)查看服务跟踪日志:

    [admin@host ~]$ sudo journalctl -xeu tomcat
    

    6)开机自启动服务:

    [admin@host ~]$ sudo systemctl enable tomcat
    

    7)开机禁用服务:

    [admin@host ~]$ sudo systemctl disable tomcat
    

    8)重新加载服务:

    [admin@host ~]$ sudo systemctl reload tomcat
    

    9)重新加载服务管理器:

    [admin@host ~]$ sudo systemctl daemon-reload
    

    7.常用运维命令

    7.1.用户和组管理

    1、查看当前用户信息。

    [admin@host ~]$ id
    uid=1000(admin) gid=1000(admin) 组=1000(admin),10(wheel) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    

    2、查看用户是否存在。

    [admin@host ~]$ id uname
    id: “uname”:无此用户
    
    • uname:用户账号。

    3、创建新的普通用户。

    1)创建用户主组和用户:

    [admin@host ~]$ sudo groupadd ugroup
    [admin@host ~]$ sudo useradd -g ugroup uname
    
    • uname:用户账号。
    • ugroup:组账号。
    • -g <主组>:指定用户主组。

    2)设置用户口令:

    [admin@host ~]$ sudo passwd uname
    
    • uname:用户账号

    3)将用户加入到现有的组中(若适用):

    [admin@host ~]$ sudo usermod -aG wheel uname
    
    • uname:用户账号。
    • wheel:组账号。
    • -aG <从组>:追加用户从组。去掉参数 "a" 会覆盖原有的从组。

    4、创建不可登录的管理用户和组者,通常用于以此用户运行应用程序和访问特定数据,提高系统的安全性。

    [admin@host ~]$ sudo groupadd ugroup
    [admin@host ~]$ sudo useradd -g ugroup -s /bin/false uname
    
    • uname:用户账号。
    • ugroup:组账号。
    • -g <主组>:指定用户主组。
    • -s <shell>:指定用户 shell 环境,默认为 "/bin/bash",设置为 "/bin/false" 表示不提供 shell 环境。

    5、设置用户口令。

    [admin@host ~]$ sudo passwd uname
    

    6、删除用户和主组。

    [admin@host ~]$ sudo userdel -r uname
    [admin@host ~]$ sudo groupdel ugroup
    
    • -r:删除用户主目录。不指定该参数时,保留用户主目录数据。

    7、修改用户。

    [admin@host ~]$ sudo usermod -g ugroup -G wheel -s /bin/bash uname
    
    • uname:用户账号。
    • ugroup:组账号。
    • -g <主组>:修改用户主组。
    • -aG <从组>:追加用户从组。 去掉参数 "a" 会覆盖原有的从组。
    • -s <shell>:修改用户 shell。
    • -e <有效期限>:修改账号的有效期限。
    • -f <缓冲天数>:修改在密码过期后多少天即关闭该账号。
    • -L:锁定用户密码,使密码无效。
    • -U:解除密码锁定。

    8、切换用户。

    [admin@host ~]$ su uname
    [uname@host ~]$ su uname
    
    • uname:切换用户账号。不指定时切换到 root 用户。

    8、使用其他用户的身份执行命令。

    [admin@host ~]$ sudo -u uname ls
    
    • sudo 命令的使用权限需要在 "/etc/sudoers" 文件中配置。详见章节 “5.管理员权限分配”。
    • -u <用户账号>:指定其他用户的账号。不指定默认为 root 用户。
    • ls:命令

    7.2.目录和文件管理

    1、获取当前目录.

    [admin@host ~]$ pwd
    /home/admin
    

    2、切换当前目录。

    [admin@host ~]$ pwd
    /home/admin
    
    [admin@host ~]$ cd /home
    
    [admin@host home]$ pwd
    /home
    
    • /home/admin/dir.1/dir.2/dir.3:切换目录的路径。

    2、浏览目录或文件,主要用于查看目录和文件的名称、验证文件是否存在。

    [admin@host ~]$ ls
    admin  uname
    
    [admin@host ~]$ ls -a
    .  ..  admin  uname
    
    [admin@host ~]$ ls /home
    admin  uname
    
    • -a:查看隐藏文件。
    • /home:浏览目录或文件的路径,可以是相对路径或绝对路径,可以包含 "*" 等通配符。不指定是浏览当前目录。

    3、列出目录或文件,主要用于查看文件和目录的权限、所有者等详细信息。

    [admin@host ~]$ ls -l
    drwx------. 15 admin  admin  4096 9月  10 16:25 admin
    drwx------.  3 uname  ugroup 4096 9月  10 16:25 uname
    
    [admin@host ~]$ ls -al
    drwxr-xr-x.  4 root   root   4096 9月  10 16:23 .
    dr-xr-xr-x. 19 root   root   4096 9月  10 11:31 ..
    drwx------. 15 admin  admin  4096 9月  10 16:25 admin
    drwx------.  3 uname  ugroup 4096 9月  10 16:25 uname
    
    [admin@host ~]$ ls -l /home
    drwx------. 15 admin  admin  4096 9月  10 16:25 admin
    drwx------.  3 uname  ugroup 4096 9月  10 16:25 uname
    
    • -l:查看目录或文件的详细信息。
    • -a:查看隐藏文件。
    • /home:浏览目录或文件的路径,可以是相对路径或绝对路径,可以包含 "*" 等通配符。不指定是浏览当前目录。

    4、创建空目录。

    [admin@host ~]$ mkdir -p /home/admin/dir.1/dir.2/dir.3
    [admin@host ~]$ mkdir -p /home/admin/dir.1/dir.2/{dir.3-1,dir.3-2,dir.3-3}
    
    • -p:递归逐级创建目录。不指定此参数时,父目录不存在的情况下无法创建子目录。
    • /home/admin/dir.1/dir.2/dir.3:新建目录的路径,可以是相对路径或绝对路径,可以包含 "{dir.3-1,dir.3-2,dir.3-3}" 等正则表达式。

    5、删除空目录,当目录不为空时无法删除。

    [admin@host ~]$ rmdir /home/admin/dir.1/dir.2/dir.3
    
    • /home/admin/dir.1/dir.2/dir.3:删除目录的路径,可以是相对路径或绝对路径。

    6、创建空文件。

    [admin@host ~]$ touch /home/admin/file.txt
    [admin@host ~]$ touch /home/admin/{file1.txt,file2.txt,file3.txt}
    
    • /home/admin/file.txt:新建文件的路径,以是相对路径或绝对路径,可以包含 "{file1.txt,file2.txt,file3.txt}" 等正则表达式。

    7、删除目录或文件。

    [admin@host ~]$ rm -rf /home/admin/dir.1/dir.2/dir.3
    
    • -r:递归删除目录中的内容。
    • -f:强制删除目录或文件。
    • /home/admin/dir.1/dir.2/dir.3:删除目录的路径,可以是相对路径或绝对路径,可以包含 "{file1.txt,file2.txt,file3.txt}" 等正则表达式,可以包含 "*" 等通配符。

    8、拷贝文件。

    [admin@host ~]$ cp /home/admin/file_src.txt /home/admin/file_copy.txt
    
    • /home/admin/file_src.txt:源文件路径,可以是相对路径或绝对路径,可以包含 "{file1.txt,file2.txt,file3.txt}" 等正则表达式,可以包含 "*" 等通配符。
    • /home/admin/file_copy.txt:副本文件路径,可以是相对路径或绝对路径。

    9、拷贝目录。

    [admin@host ~]$ cp -r /home/admin/dir_src /home/admin/dir_copy
    
    • /home/admin/dir_src:源目录路径,可以是相对路径或绝对路径,可以包含 "{dir.1,dir.2,dir.3}" 等正则表达式,可以包含 "*" 等通配符。
    • /home/admin/dir_copy:副本目录路径,可以是相对路径或绝对路径。

    10、迁移文件。

    [admin@host ~]$ mv /home/admin/file.txt /home/admin/dest/file.txt
    
    • /home/admin/file.txt:源文件路径,可以是相对路径或绝对路径,可以包含 "{file1.txt,file2.txt,file3.txt}" 等正则表达式,可以包含 "*" 等通配符。
    • /home/admin/dest/file.txt:目标文件路径,可以是相对路径或绝对路径。

    11、迁移目录。

    [admin@host ~]$ mv /home/admin/dir /home/admin/dest/dir
    
    • /home/admin/dir:源目录路径,可以是相对路径或绝对路径,可以包含 "{dir.1,dir.2,dir.3t}" 等正则表达式,可以包含 "*" 等通配符。
    • /home/admin/dest/dir:目标目录路径,可以是相对路径或绝对路径。

    12、重命名文件或目录。

    [admin@host ~]$ mv /home/admin/old_name /home/admin/new_name
    
    • /home/admin/old_name:原目录或文件名。
    • /home/admin/new_name:新目录或文件名。

    13、变更文件所有者用户和组。

    [admin@host ~]$ chown uname:ugroup /home/admin/file.txt
    
    • uname:文件所有者用户账号。
    • ugroup:文件所有者组账号。
    • /home/admin/file.txt:文件路径。可以是相对路径或绝对路径,可以包含 "{file1.txt,file2.txt,file3.txt}" 等正则表达式,可以包含 "*" 等通配符。

    14、变更目录所有者用户和组。

    [admin@host ~]$ chown -R uname:ugroup /home/admin/dir
    
    • -R:变更目录和目录中所有文件的所有者用户和组。不指定时只变更目录本身。
    • uname:目录所有者用户账号。
    • ugroup:目录所有者组账号。
    • /home/admin/dir:目录路径。可以是相对路径或绝对路径,可以包含 "{dir.1,dir.2,dir.3t}" 等正则表达式,可以包含 "*" 等通配符。

    15、设置目录或文件的权限。

    [admin@host ~]$ chmod 755 /home/admin/exec.sh
    [admin@host ~]$ chmod ug=rwx,o=rx /home/admin/exec.sh
    [admin@host ~]$ chmod ugo+x /home/admin/exec.sh
    [admin@host ~]$ chmod ugo-x /home/admin/exec.sh
    [admin@host ~]$ chmod ug-w,o+w /home/admin/exec.sh
    
    • 格式:chmod mode file
    • mode:赋权的模式,可以通过掩码和正则表达式赋权
    • -- "u" 表示该文件的拥有者;"g" 表示与该文件的拥有者属于同一个群体(group)者;"o" 表示其他以外的人;"a"表示 ugo 三者。
    • -- "+" 表示增加权限;"-" 表示取消权限;"=" 表示唯一设定权限。
    • -- "r" 表示可读取,数字代号为 "4";"w" 表示可写入,数字代号为 "2";"x" 表示可执行,数字代号为 "1"。可通过 3 位数(第 1 位代表 "u"、第 2 位代表 "g"、第 3 位代表 "o")的数据代号相加进行赋权。

    16、查找系统默认目录中的命令是否存在。

    [admin@host ~]$ whereis ssh
    ssh: /usr/bin/ssh /etc/ssh /usr/share/man/man1/ssh.1.gz
    
    • ssh:shell 命令。

    17、按名称查找目录或文件。

    [admin@host ~]$ find /home/admin -name "file1.*"
    /home/admin/file1.txt
    
    [admin@host ~]$ find /home/admin -name "file1.*" -exec ls -l {} \;
    -rw-rw-r--. 1 admin admin 2 9月  11 10:45 /home/admin/file1.txt
    
    • /home/admin:文件查找根目录。
    • -name <关键字>:文件名关键字,可以包含 "*" 等通配符。
    • -exec <命令>:对查询结果的操作命令,形式为 -exec 'command' {} ; 。

    18、按行比较两个文件的差异。

    [admin@host ~]$ diff file1.txt file2.txt
    1c1
    < 1
    ---
    > 2
    
    • file1.txt:参照文件。
    • file2.txt:比较文件。

    19、查看文件内容。

    [admin@host ~]$ cat /home/admin/file.txt
    
    • home/admin/file.txt:文件路径。可以是相对路径或绝对路径。

    20、查看日志内容(增量动态显示文件,主要用于跟踪日志)。

    [admin@host ~]$ tail -f /home/admin/log.txt
    
    • -f:表示动态监控文件增长。
    • /home/admin/log.txt:日志文件路径。可以是相对路径或绝对路径。

    7.3.文件编辑

    1、在装有 GUI 的系统中优先考虑使用文本编辑器编辑文件内容。以 CentOS8 为例:

    [admin@host ~]$ gedit /home/admin/file1.txt
    
    文本编辑器

    2、在只有 shell 的系统中使用 "vi" 命令编辑文件内容。vi 的使用方法请阅读文章【https://www.runoob.com/linux/linux-vim.html

    3、将 shell 命令的输出结果写入到文件中。

    [admin@host ~]$ echo '1' > /home/admin/file1.txt
    [admin@host ~]$ echo '1' >> /home/admin/file1.txt
    
    • echo '1':shell 命令。
    • ">":以覆盖的方式将命令输出结果写入文件。
    • ">>":以行追加的方式将命令输出结果写入文件。
    • /home/admin/file1.txt:写入文件名。当文件不存在时自动创建。

    7.4.系统管理

    1、远程主机网络连通性测试。

    [admin@host ~]$ ping 192.168.0.2
    
    64 bytes from 192.168.0.2: icmp_seq=2 ttl=128 time=0.432 ms
    64 bytes from 192.168.0.2: icmp_seq=3 ttl=128 time=0.485 ms
    64 bytes from 192.168.0.2: icmp_seq=4 ttl=128 time=0.490 ms
    
    • 192.168.0.2:域名或 IP 地址。

    2、远程主机服务端口测试。

    [admin@host ~]$ telnet 192.168.0.10 22
    
    Trying 192.168.0.10...
    Connected to 192.168.0.10.
    Escape character is '^]'.
    SSH-2.0-OpenSSH_8.0
    
    • 192.168.0.10:域名或 IP 地址。

    3、域名解析测试。

    [admin@host ~]$ nslookup localhost
    
    Server:     192.168.0.2
    Address:    192.168.0.2#53
    
    Non-authoritative answer:
    Name:   localhost
    Address: 127.0.0.1
    Name:   localhost
    Address: ::1
    
    • localhost:域名。

    4、查看网络信息。

    [admin@host ~]$ ifconfig
    
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.0.10  netmask 255.255.255.0  broadcast 192.168.0.255
            inet6 fe80::b610:9280:3074:ecb  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:3a:01:3c  txqueuelen 1000  (Ethernet)
            RX packets 108236  bytes 149299015 (142.3 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 14694  bytes 1368905 (1.3 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

    5、查看应用程序监听的端口。

    [admin@host ~]$ sudo netstat -ntuap | grep nginx
    
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      119777/nginx: maste
    
    • -n:直接使用IP地址,而不通过域名服务器。
    • -t: 显示 TCP 传输协议的连线状况。
    • -u:显示 UDP 传输协议的连线状况。
    • -a:显示所有连线中的 Socket 。
    • -p: 显示正在使用 Socket 的程序识别码和程序名称。
    • nginx:应用程序名称或关键字。

    6、查看应用程序的进程。

    [admin@host ~]$ sudo ps -ef | grep nginx
    
    root     119777      1  0 10:16 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
    
    • -ef:标准的格式显示进程。
    • -aux: 用 BSD 的格式来显示进程。
    • nginx:应用程序名称或关键字。

    7、杀死应用系统的进程。

    [admin@host ~]$ sudo kill -9 119777
    
    • -9:表示强制杀死进程。
    • 119777:应用进程号。

    8、重启计算机。

    [admin@host ~]$ reboot
    

    或者

    [admin@host ~]$ shutdown -r now
    

    9、关闭计算机。

    [admin@host ~]$ shutdown -h now
    

    10、查看计算机名。

    [admin@host ~]$ hostname
    

    11、查看计算机时间。

    [admin@host ~]$ date
    

    12、查看内存信息。

    [admin@host ~]$ free -h
    

    13、查看磁盘信息。

    [admin@host ~]$ df -h
    

    14、查看 OS 信息。

    [admin@host ~]$ uname -a
    

    15、查看 CPU 信息。

    [admin@host ~]$ cat /proc/cpuinfo
    

    16、设置环境变量。

    [admin@host ~]$ export JAVA_HOME=/usr/local/jdk1.8.0_251
    

    17、显示环境变量。

    [admin@host ~]$ echo $JAVA_HOME
    

    18、删除环境变量。

    [admin@host ~]$ unset JAVA_HOME
    

    19、制作 ISO 镜像文件。

    [admin@host ~]$ mkisofs -o test.iso -v file1.txt file2.txt
    
    • -o <ISO 文件名>:输出 ISO 文件的位置和名称。
    • -v <内容文件或目录...>:输入 ISO 的目录或文件的位置和名称,多个位置使用空格分隔。

    20、挂载硬盘、U盘、光盘等外部设备。

    [admin@host ~]$ sudo mount /dev/cdrom /mnt
    
    • /dev/cdrom:挂载设备,如:/dev/cdrom(光驱)、/dev/sdb1(硬盘)等。
    • /mnt:挂载目录。

    21、解除挂载外部设备。

    [admin@host ~]$ sudo umount /mnt
    
    • /mnt:挂载目录。

    22、向外部主机开放防火墙策略(如允许外部主机访问服务器的 80 端口)。

    [admin@host ~]$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
    

    23、使防火墙策略永久有效,默认情况下重启后策略失效。

    [admin@host ~]$ sudo firewall-cmd --reload
    

    24、设置定时任务。

    如何设置定时任务请阅读文章【https://www.runoob.com/linux/linux-comm-crontab.html】。

    25、管理 SELinux 。

    1)查看 SELinux 状态:

    [admin@host ~]$ getenforce
    

    2)临时关闭 SELinux:

    [admin@host ~]$ sudo setenforce 0
    

    3)临时开启 SELinux:

    [admin@host ~]$ sudo setenforce 1
    

    4)永久配置 SELinux:

    使用文本编辑器打开 "/etc/selinux/config" 文件:

    [admin@host ~]$ sudo gedit /etc/selinux/config
    

    将 "SELINUX" 参数设置为:"disabled",并保存:

    # enforcing - 表示启用 SELinux 安全策略。
    # permissive - 表示启用 SELinux 安全策略,但不强制验证。如果执行第一步可以正常运行,则建议设置此值。
    # disabled - 关闭 SELinux 安全策略,相当于没有安装 SELinux。
    SELINUX=disabled
    

    重启后生效:

    [admin@host ~]$ reboot
    

    相关文章

      网友评论

        本文标题:RedHat/CentOS8 快速运维白皮书

        本文链接:https://www.haomeiwen.com/subject/nogeektx.html