Skip to content

31. RHCE 考点总结

本章节总结 RHEL 8.10(主机名 ZSLinux)上 RHCE(Red Hat Certified Engineer)考试核心领域,指导使用 SecureCRT 配置关键任务,配合 SecureFX 传输配置文件。内容涵盖用户管理、SELinux、Systemd、LVM/RAID、防火墙、网络、SSH、Podman、Ansible,提供考试提示和验证方法,全面实用,适合备考 RHCE 的初学者和运维人员。所有操作在 ZSLinux 环境中测试,确保实验一致性。

31.1 前提条件

  • RHEL 8.10 已安装(参考第 1 章),主机名设置为 ZSLinux.
  • 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 6 章).
  • 使用 SecureFX 传输文件(SFTP 协议).
  • 具有 root 或 sudo 权限.
  • 系统已订阅并启用 RHEL 和 EPEL 仓库(参考第 4 和 7 章).
  • 防火墙和 SELinux 启用(参考第 13 章).
  • 网络连接正常,时间同步配置完成(参考第 3 章).

31.2 核心考试领域

31.2.1 用户与组管理

  • 创建用户和组:
    bash
    groupadd -g 1001 devteam  # 创建 devteam 组
    useradd -u 1001 -g devteam -m -s /bin/bash developer  # 创建 developer 用户
    passwd developer  # 设置用户密码
  • 配置 sudo 权限:
    bash
    echo "developer ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/developer  # 授予 developer sudo 权限

31.2.2 SELinux

  • 配置 SELinux 上下文:
    bash
    semanage fcontext -a -t httpd_sys_content_t "/webdata(/.*)?"  # 设置 /webdata 的 SELinux 上下文
    restorecon -R -v /webdata  # 应用 SELinux 上下文
    semanage port -a -t ssh_port_t -p tcp 2222  # 为自定义 SSH 端口设置上下文

31.2.3 Systemd

  • 管理服务:
    bash
    systemctl enable --now httpd  # 启用并启动 Apache 服务
    systemctl status httpd  # 检查服务状态
  • 创建自定义服务:
    bash
    vim /etc/systemd/system/custom-app.service  # 创建自定义服务文件
    # 添加:
    [Unit]
    Description=Custom Application
    After=network.target
    [Service]
    ExecStart=/usr/bin/custom-app --option
    Restart=always
    [Install]
    WantedBy=multi-user.target
    systemctl daemon-reload  # 重新加载 Systemd 配置
    systemctl enable --now custom-app  # 启用并启动自定义服务

31.2.4 LVM/RAID

  • 创建 LVM 逻辑卷:
    bash
    pvcreate /dev/sdb  # 创建物理卷
    vgcreate vg_data /dev/sdb  # 创建卷组
    lvcreate -L 10G -n lv_data vg_data  # 创建 10GB 逻辑卷
    mkfs.xfs /dev/vg_data/lv_data  # 格式化逻辑卷
  • 配置 RAID(RAID 1 示例):
    bash
    mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdc /dev/sdd  # 创建 RAID 1
    mkfs.xfs /dev/md0  # 格式化 RAID 设备

31.2.5 防火墙与网络

  • 配置防火墙:
    bash
    firewall-cmd --permanent --add-service=http  # 允许 HTTP 服务(80/tcp)
    firewall-cmd --permanent --add-port=2222/tcp  # 允许自定义 SSH 端口
    firewall-cmd --reload  # 应用防火墙规则
  • 配置网络(参考第 10 章):
    bash
    nmcli con add type ethernet con-name eth0 ifname eth0 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8  # 配置静态 IP
    nmcli con up eth0  # 激活网络连接

31.2.6 SSH 安全

  • 配置 SSH(自定义端口 2222):
    bash
    dnf install -y openssh-server  # 安装 SSH 服务
    vim /etc/ssh/sshd_config  # 编辑 SSH 配置文件
    # 修改:
    Port 2222
    PermitRootLogin no
    systemctl restart sshd  # 重启 SSH 服务
    semanage port -a -t ssh_port_t -p tcp 2222  # 设置 SELinux 上下文
    firewall-cmd --permanent --add-port=2222/tcp  # 允许自定义端口
    firewall-cmd --reload  # 应用防火墙规则

31.2.7 Podman

  • 运行容器:
    bash
    podman pull registry.access.redhat.com/ubi8/httpd-24  # 拉取 RHEL 8 UBI 镜像
    podman run -d -p 8080:8080 --name web-container registry.access.redhat.com/ubi8/httpd-24  # 运行 HTTP 容器

31.2.8 Ansible

  • 安装并配置 Ansible:
    bash
    dnf install -y ansible  # 安装 Ansible
    vim /etc/ansible/hosts  # 编辑主机清单
    # 添加:
    [webservers]
    192.168.1.101
  • 创建 Ansible Playbook:
    bash
    vim /root/playbook.yml  # 创建 Playbook
    # 添加:
    ---
    - hosts: webservers
      tasks:
        - name: Install httpd
          yum:
            name: httpd
            state: present
        - name: Start httpd
          service:
            name: httpd
            state: started
            enabled: yes
    ansible-playbook playbook.yml  # 运行 Playbook

31.3 考试准备与验证

  • 考试提示
    • 优先高分任务:SELinux(上下文、布尔值)、防火墙(服务、端口)、Ansible(Playbook)。
    • 时间管理:分配 60% 时间给高分任务(如 SELinux、Ansible),40% 检查其他任务。
    • 常见陷阱
      • SELinux 未启用导致任务失败(检查:getenforce)。
      • 防火墙规则未应用(运行:firewall-cmd --reload)。
      • Ansible 主机不可达(验证:ansible all -m ping)。
    • 模拟考试:在 ZSLinux 上配置所有核心领域,验证结果。
  • 验证配置
    • 用户与组:getent passwd developer; getent group devteam
    • SELinux:ls -Z /webdata; semanage port -l | grep ssh
    • Systemd:systemctl status custom-app
    • LVM/RAID:lvs; mdadm --detail /dev/md0
    • 防火墙:firewall-cmd --list-all
    • 网络:nmcli con show
    • SSH:ss -tuln | grep 2222
    • Podman:podman ps -a
    • Ansible:ansible-playbook --syntax-check playbook.yml
  • 故障排查
    • SELinux 问题:检查日志(ausearch -m avc) 或恢复上下文(restorecon)。
    • 防火墙失败:验证规则(firewall-cmd --list-ports) 或服务状态(systemctl status firewalld)。
    • Ansible 失败:检查主机连接(ansible all -m ping) 或 Playbook 语法(ansible-playbook --syntax-check)。
    • SOS 报告sosreport --only-plugins=system,selinux,networking 用于诊断。
  • 测试 SSH 连接
    bash
    ssh -p 2222 testuser@ZSLinux  # 测试 SSH 连接(参考第 6 章)

31.4 实践任务

  1. 使用 SecureCRT 登录 ZSLinux,创建用户 developer 并配置 sudo 权限。
  2. 配置 SELinux 上下文支持自定义 SSH 端口(2222)并启用 HTTP 服务。
  3. 创建并运行 Ansible Playbook 部署 Apache 到远程主机(192.168.1.101)。
  4. 配置 LVM 逻辑卷(10GB)并验证。

31.5 自测问题

  • 问题:如何快速配置 SSH 服务?
    • 答案dnf install -y openssh-server; vim /etc/ssh/sshd_config; systemctl enable --now sshd
  • 问题:如何验证 LVM 逻辑卷?
    • 答案lvs
  • 问题:如何配置 Ansible Playbook 部署 HTTP 服务?
    • 答案:创建 /root/playbook.yml 定义 yumservice 任务,运行 ansible-playbook playbook.yml

Released under the MIT License.