
很多准备考 RHCSA 的朋友来找我时第一句话基本都是命令我也看了真题也刷过怎么一上考场还是手忙脚乱我跟他们说你缺的不是知识量而是把备考当成一份正经“作业”来做的习惯。RHCSA 这套认证光靠眼睛看是过不了的必须把它拆成一个个能上手、能自检、能重做的实操项目练到肌肉记忆才算数。这篇文章我就拿“RHCSA 作业”当抓手从考试规则、环境搭建、考点清单到一套完整练习题把整个备考过程嚼碎了讲给你听顺便把我的错题本也翻出来晒一晒。1. RHCSA 到底在考什么先搞清楚再动手练1.1 全命令行实操的考试形式给备考定了调子RHCSA全称 Red Hat Certified System Administrator红帽认证系统管理员。它跟市面上大部分选择题认证有一个本质区别考试里没有一道选择题全部是现场操作题。你面对的是真实安装好的 RHEL 虚拟机需要在命令行下完成一系列系统配置任务比如建用户、配 LVM、调 SELinux、装服务、写定时任务。评分系统不看你的文字说明只看最终结果——配置是否生效、服务是否运行、文件是否在正确的位置、权限是否严格匹配。这个形式直接决定了备考方式你不可能靠“读题”学会它。我见过太多人买一本厚厚的题库天天刷“这道题选什么”到了真机面前连 nmcli 怎么写都忘了。RHCSA 的备考只有一个正确姿势就是动手、动手、再动手。一次配置可能记不住三遍五遍下来那些命令就像长在手上一样自然。还有一个经常被忽略的点考试时间是 2.5 小时总分 300 分210 分及格。题量通常在 15 到 20 道之间每道题分值不同。听起来时间宽裕但实际操作中如果你对命令不熟光一个 LVM 扩容加挂载就能折腾半小时。所以平时做“作业”的时候我强烈建议给自己计时按考试节奏来。1.2 考试环境与考题组织方式真机加虚拟机的双机模式RHCSA 考试的物理环境挺有特点考场给你一台真实主机上面装了 KVM 虚拟化里面有 2 到 3 台 RHEL 虚拟机。一部分题目要求在真实主机上操作另一部分明确写着“在 servera / serverb 虚拟机上执行”。开机后你需要自己登录、自己确认主机名、自己判断当前在哪台机器上。这个环境设计对备考有两点启示。第一你平时练习最好也用虚拟机最好模拟一套“宿主加虚拟机”的结构这样能熟悉 KVM 环境下的磁盘设备名。第二做题前第一件事永远是hostname确认自己在哪台机器很多同学栽在“题说 servera你在 serverb 上忙活了半天配置全做错地方”。我在自己练习时就给两台虚拟机起了不同的颜色提示符但还是会偶尔搞混考试时更要加倍小心。另外要提醒的是考试虚拟机默认的磁盘命名和我们平时练习的 VMware 不一样。KVM 下通常是vda、vdb、vdc这样的virtio设备名而 VMware 里常见的是sda、sdb。做题时不要想当然先lsblk看清楚再动手。1.3 这套认证适合谁它不是 Linux 的终点而是系统管理的起点RHCSA 适合什么人我一般跟三类朋友说你可以考虑一是刚入行想做运维的毕业生需要一个能写在简历上的硬技能二是开发人员想补系统底层知识搞清楚进程、权限、存储、网络这些概念三是在职运维想从“野路子”变成“科班”把零散经验系统化。它的难度定位是入门偏中级不需要你会写脚本也不需要你懂内核源码但它要求你把 Linux 系统的常规管理操作做到又快又准。很多人问我考完 RHCSA 能拿多少钱、能找到什么工作。说实话单靠一张证书没人给你开高薪但它是一个很好的筛选信号代表你能在没有图形界面的环境下独立完成一台 Linux 服务器的日常配置和维护。这恰恰是大多数企业面试运维岗位时最基础的期望。所以我的建议很明确证书要考但别为了证书而考要把备考当成一次系统性的技能梳理考完你会惊讶地发现自己对 Linux 的理解比之前清晰太多了。2. 练习环境到底怎么搭一台虚拟机搞定九成考点2.1 用 Rocky Linux 或 AlmaLinux 做完全兼容的练习场RHCSA 考试基于 Red Hat Enterprise Linux。RHEL 是商业系统不付费也能下载开发者订阅但注册账号、绑定授权这套流程对新手来说有点麻烦。备考阶段我更推荐用Rocky Linux 或 AlmaLinux它们是 RHEL 的下游重建版本命令、配置文件路径、包管理方式几乎一模一样完全够用来练 RHCSA。我自己的习惯是装 Rocky Linux 9安装时选“最小化安装”不装图形界面。为什么因为考试就是纯命令行环境图形界面除了占内存没有任何帮助而且你平时练的时候用 GUI考试时会不习惯。最小化安装还能逼着自己去用命令行配置网络、装软件、管理服务这种“不适感”恰恰是进步最快的阶段。虚拟机软件方面VMware Workstation 和 VirtualBox 都行前者更稳定后者免费。实际考试用的是 KVM但考点本身不涉及虚拟化平台的差异你只要能创建虚拟机、拍快照就够了。硬性配置建议 4GB 内存、2 核 CPU、50GB 硬盘RHCSA 考点里 LVM、容器都要占空间别抠这点资源。2.2 考试网络要手工配别让 DHCP 害了你RHCSA 题目里经常出现“配静态 IP”“改主机名”“让系统用指定 DNS 解析”这类网络题。考试环境默认网络可能不工作或者 IP 是 DHCP 自动分配的但考题要求你手工设置成固定地址。我在练习时就把虚拟机网络设为桥接或自定义 NAT 段然后强迫自己用nmcli和hostnamectl去配置而不是打开图形界面点鼠标。一个特别容易踩的坑是 RHEL 9 里网络连接的默认名字可能是Wired connection 1带空格用 nmcli 操作时很别扭。我建议平时一上来就把它重命名成设备名或一眼认得出的名字比如nmcli con mod Wired connection 1 con-name ens160 nmcli con mod ens160 ipv4.method manual ipv4.addresses 192.168.56.101/24 ipv4.gateway 192.168.56.1 ipv4.dns 192.168.56.1 nmcli con up ens160这一步做不熟考试时会消耗大量情绪。整套网络操作建议每天练一遍直到能不看笔记在 3 分钟内完成。2.3 快照和“三遍练习法”把备考做成可重复的作业环境搭好之后下一步马上拍一个干净快照。什么叫干净快照就是系统刚装完、源刚配好、还没有做任何练习题的状态。每次练习都从快照恢复相当于每次都是“新考试系统”这样能最大程度模拟真实考场环境也避免上一次练习的残留影响本次判断。我还有一个压箱底的方法每套练习题至少做三遍。第一遍全程可以看笔记、查命令目标是把它做完第二遍脱稿做卡住的地方停下来标记然后翻笔记补齐重复刚才卡住的操作第三遍直接计时做像考试一样从头到尾不中断。事实证明第三遍做完你对这套题的掌握程度会有质的飞跃。尤其是 LVM、SELinux 这种流程长的题目三遍下来你基本形成条件反射看到题面就直接敲命令。3. 核心考点拆解对照“作业清单”过一遍命令3.1 用户、组、sudo 与 ACL最基础也最容易丢分用户和权限几乎是 RHCSA 必考的大类而且往往不止一道题。常见的题目有创建用户并把用户加入附属组给某个用户配 sudo 免密执行命令在指定目录上配置 ACL 让特定用户可读写设置密码有效期把某用户默认 shell 改为/sbin/nologin。对应命令其实就那么几条但要练到不用想groupadd managers useradd -G managers alice id alice passwd alice chage -M 30 alice visudo -f /etc/sudoers.d/alice setfacl -m u:alice:rwx /shared/project getfacl /shared/project这里我特别强调两个细节。第一visudo -f必须在/etc/sudoers.d/下新建文件不能直接改/etc/sudoers主文件也不能用普通编辑器硬改而破坏了 sudoers 语法否则 sudo 会直接瘫痪。第二ACL 规则只对“支持 ACL 的文件系统”有效默认 XFS 没问题但如果考题把文件系统格式化成 ext4挂载时千万别漏了acl挂载选项否则你设了 ACL 也不生效。这种隐藏条件最阴平时一定要故意踩一次。3.2 存储管理LVM、swap 与 fstab 是重头戏存储部分我在复习时花的时间最多因为它步骤长、要求精确、验收条件多。典型题目是在/dev/vdb上新建一个 LVM 逻辑卷格式化挂载到指定目录并写入/etc/fstab实现开机自动挂载或者给已有逻辑卷扩容或者新建一个 swap 分区并启用。关键流程我建议背下来# 分区并设置 LVM 类型 parted /dev/vdb mklabel gpt parted /dev/vdb mkpart primary xfs 1MiB 100% parted /dev/vdb set 1 lvm on # 创建逻辑卷 pvcreate /dev/vdb1 vgcreate vg_data /dev/vdb1 lvcreate -L 2G -n lv_data vg_data mkfs.xfs /dev/vg_data/lv_data mkdir -p /data mount /dev/vg_data/lv_data /data这里有个几乎人人都会忽略的点/etc/fstab里不要写/dev/vg_data/lv_data这种设备路径而是写UUID。原因很简单如果系统启动时设备识别的顺序变了设备路径可能对不上但进程照样启动不了。用blkid查 UUID 写进 fstab虽然麻烦一点但最安全。考试阅卷也是重启后检测fstab 写错导致开机失败那分数直接没了。另外如果是给已有的 XFS 文件系统扩容很多人只知道lvextend却忘了扩容后还要执行xfs_growfs /挂载点否则文件系统还是原大小。ext4 用resize2fsXFS 用xfs_growfs这个区别每年都有不少人栽跟头。3.3 SELinux 与防火墙最容易被忽略的“隐形杀手”RHCSA 的题一个显著特点是你按常规方法把服务装好、文件放好最后测试却 403 或者连不上八成是 SELinux 的锅。考试系统默认 SELinux 是 enforcing 状态阅卷时也会在 enforcing 下检查结果。所以备考时一定要把“配完服务之后主动检查 SELinux 上下文和布尔值”变成习惯动作。常见场景一httpd 服务要读取/webcontent目录下的网页文件结果访问 403。原因很可能是文件被放在了非默认目录SELinux 上下文不对。正确做法semanage fcontext -a -t httpd_sys_content_t /webcontent(/.*)? restorecon -Rv /webcontent常见场景二Apache 要监听 82 端口但你改了listen 82之后服务起不来或者外部访问不到。这时要改 SELinux 端口类型semanage port -a -t http_port_t -p tcp 82防火墙同样要主动开放端口firewall-cmd --permanent --add-port82/tcp firewall-cmd --reload。有一个细节我叮嘱自己很多次firewall-cmd不加--permanent的修改是临时的重启就没了而--reload之后永久配置才会真正加载生效。两个参数经常被分开记忆导致配置“当时通、重启死”。备考时每次配完防火墙都重启一下系统验证才能暴露这个问题。3.4 定时任务、归档、软件仓库与内核引导定时任务题目的套路很直接以指定用户身份在某个时间点运行某条命令。我习惯用/etc/cron.d/下的系统 cron 文件来写因为考试题目经常指定“以 root 身份运行”用系统 cron 最稳# /etc/cron.d/backup 内容 23 14 * * * root /usr/bin/tar czf /backup/var.tar.gz /var/log写完之后立刻测试 cron 服务状态和语法systemctl status crond。注意命令一定要写绝对路径因为 cron 的环境变量 PATH 非常精简你用相对命令可能什么都执行不了。这是我在实际测试中吃了亏才记住的。归档题相对简单tar -czf、tar -xzf、tar -tf三件套练熟即可。个别题目会要求排除某些文件注意--exclude参数必须写在源路径之前顺序写错它照样把不该打包的文件打进去。软件仓库题就是写.repo文件BaseOS 和 AppStream 两个仓库都要配置。我每次写仓库文件都会用dnf repolist验证一遍防止 baseurl 拼错比如多打一个斜杠或者少写了$releasever的替换结构。内核引导相关题目常见的有两种改默认启动目标、修改内核启动参数。前者一条命令的事systemctl set-default multi-user.target后者要改/etc/default/grub后执行grub2-mkconfig -o /boot/grub2/grub.cfg别漏了最后一步不然重启后参数根本没进引导配置。3.5 systemd 服务与容器RHCSA 9 新增模块要单独练RHCSA 9 最大的变化是加入了 Podman 容器考点这部分很多备考者觉得陌生。考试一般不会让你写复杂的 Dockerfile而是要求你从给定的镜像仓库拉取镜像、运行容器、映射端口、配置容器在开机时自动启动。最典型的题目流程如下有一个私有镜像仓库registry.lab.example.com要求用里面的myweb镜像创建一个名为web的容器并把宿主机的 8080 端口映射到容器的 80 端口。podman login registry.lab.example.com podman search registry.lab.example.com/myweb podman pull registry.lab.example.com/myweb podman run -d --name web -p 8080:80 registry.lab.example.com/myweb podman ps到这里只是第一步。RHCSA 9 的坑在于它常常要求容器开机自动启动而 Podman 默认不带--restart always这种 Docker 式参数。正规做法是用podman generate systemd生成服务单元podman generate systemd --new --name web -f /etc/systemd/system/ systemctl daemon-reload systemctl enable --now container-web.service用--new参数很关键它生成的 unit 会负责在服务启动时新建容器比绑定一个已存在的容器更可靠。生成之后reboot重启验证容器是否真的起来了这个习惯能避免考试时才发现服务没有自启。4. 一套 RHCSA 风格的“作业”实操记录15 道题做完就当模拟考4.1 作业题面示例我整理了一套接近真实考试风格的练习题覆盖绝大多数考点。下面的题面用文字描述你练习时可以把它们当成考试题拿计时器压着 2.5 小时做完设置 system1 的主机名为servera.lab.example.com并配置静态 IP、网关、DNS。配置好 yum 仓库http://classroom.example.com/rhel9/的 BaseOS 和 AppStream 源并验证可用。创建组ops创建用户tom主组为 ops附加组为 wheel密码设为指定值。配置tom可以使用 sudo 免密运行所有命令。创建一个 1GiB 的 swap 分区并实现开机自动挂载。在/dev/vdb上新建卷组vgdata创建名为lvdata的 2GiB 逻辑卷格式化为 xfs挂载到/data写 fstab。将/data扩容到 3GiB要求文件系统数据不丢失。创建目录/project属组设为 ops并让组内成员有读写权限任何新建文件继承组属组。为/project/plan配置 ACL让用户tom对该文件可读可写。配置 crond 在每天 14:23 以 root 身份运行/usr/bin/tar czf /backup/var.tar.gz /var/log。设置系统默认启动目标为多用户命令行模式。修改内核启动参数加入quiet参数并确认生效。设置 SELinux 为 enforcing并允许 httpd 监听 82 端口且能读取/webcontent。配置 chronyd 时间同步到classroom.example.com并启用服务。使用 Podman 从私有仓库拉取myweb镜像运行容器web映射端口并设为开机自启。4.2 逐题做法与关键验证第 1 题的做法我上面已经写过核心是用hostnamectl加nmcli。注意改完主机名和 IP 之后立刻断开重连或者重启网络服务验证 IP 是否真的生效。很多人配置完不重启网络敲ip addr一看还是旧地址当场心态就崩了。第 3 到第 4 题的细节在于“主组”和“附加组”的区别。useradd -g ops -G wheel tom的含义是主组 ops、附加组 wheel这两者不能写反。sudo 配置我推荐在/etc/sudoers.d/tom里写一行tom ALL(ALL) NOPASSWD: ALL然后用sudo -l -U tom验证tom能看到免密 sudo 规则。有些题目要求输入密码的 sudo那就不要写NOPASSWD审题要仔细。第 5 题的 swap 很容易踩坑。我现在推荐的做法是用 LVM 建交换逻辑卷而不是直接分裸分区lvcreate -L 1G -n lvswap vgdata mkswap /dev/vgdata/lvswap swapon /dev/vgdata/lvswap最后写 fstab 时注意要写swap swap defaults 0 0其中第一个swap是设备源第二个swap是挂载点标识这个格式我记错过一次导致开机直接进入 emergency mode从此再也不敢乱写 fstab。第 6、7 题的 LVM 扩容要分文件系统类型操作。XFS 扩容lvextend -L 1G /dev/vgdata/lvdata之后必须xfs_growfs /data两者的顺序不能颠倒前者扩展逻辑卷后者扩展文件系统。我建议扩容后立刻df -h /data检查容量。做个对比你可以先在扩容前写个大文件占满空间再扩容体会一下在线扩容数据不丢的感觉。第 8 题的“目录属组 继承组属组”是经典题。普通chown :ops /project只改当前目录不符合“新建文件继承组属组”的要求。正确做法是给目录加setgid位chmod 2770 /project这样在里面新建的文件自动继承目录的属组。我用touch /project/test ls -l /project/test来验证看到组是 ops 就说明设置成功。第 13 题的 SELinux 是我个人错题本里最厚的一部分。先setenforce 1确保 enforcing然后semanage port和semanage fcontext双管齐下最后restorecon -Rv。写完必须验证用curl http://localhost:82访问如果返回正常内容说明 SELinux 上下文和端口都配对了。第 14 题的 chrony 很简单核心就是编辑/etc/chrony.confserver classroom.example.com iburst systemctl enable --now chronyd chronyc sources -v如果chronyc sources输出里出现^*说明同步成功如果显示^?先检查网络和防火墙再检查配置文件拼写。这里很多人会漏掉timedatectl set-ntp trueRHCSA 9 的新系统默认 NTP 可能开着但你不主动确认到真机上很可能因为没开而同步失败。第 15 题我上面已经展开过这里再补一个细节考试给的仓库可能需要登录podman login时用户名、密码注意区分大小写常见坑是密码里带了看不到的换行符。另外生成的 systemd 服务名必须以container-开头如果建错了名systemctl enable不会生效。4.3 收尾验证流程重启大法整套题做完之后我的固定动作是reboot重启然后挨个检查主机名对不对、IP 通不通、/etc/fstab挂载是否正常、swap 有没有自动启用、容器是否起来、防火墙规则是否还在、SELinux 状态是不是 enforcing。这个过程我称之为“阅卷模拟”因为 RHCSA 的评分机制本质上就是重启后再看状态。如果哪一项异常说明配置里藏着临时性操作比如某个服务只start没enable或者防火墙规则没写--permanent或者挂载只mount没写 fstab。把这些“重启即失效”的配置全部揪出来修好你的备考就完成了一大半。我经常跟朋友说做 RHCSA 题最怕的不是不会做而是“当时通了就以为稳了”这种错觉只有重启才能打破。5. 错题本那些我做作业时踩过的坑和排查思路5.1 配置不生效或重启就还原这类问题占了练习失败的一半。思路很简单把所有操作分成“临时”和“永久”两档。mount是临时/etc/fstab是永久ip addr add是临时nmcli配置是永久sysctl -w是临时写入/etc/sysctl.conf是永久systemctl start是临时systemctl enable --now是永久。每次做完题拿这个维度过一遍基本能找到问题所在。如果想彻底避免“重启还原”还有个检查技巧用systemctl is-enabled、swapon --show、findmnt -verify这些只读命令快速核对不要凭记忆判断。findmnt -verify /data能直接告诉你 fstab 里对应条目有没有语法错误省得每次拿重启去试错。5.2 SELinux 的诡异报错怎么快速定位遇到服务跑不起来、文件访问不了很多人第一反应是看权限。但实际上 RHEL 里还有一个优先级更高的过滤器叫 SELinux。排查顺序我建议是ls -ld 目录看普通权限ls -Zd 目录看 SELinux 上下文getenforce看状态ausearch -m avc -ts recent看审计日志。曾经有一次我练 httpd 题目文件权限 777SELinux enforcing还是 403。折腾半天发现是/webcontent的上下文是默认的default_t而 httpd 只能读httpd_sys_content_t。一条restorecon -Rv /webcontent就解决了前提是你之前已经用semanage fcontext把规则加进去。SELinux 的题千万不要靠setenforce 0蒙混因为阅卷时系统是 enforcing你蒙混的当时可能行重启评分必然穿帮。老老实实按文档配上下文和布尔值才是正道。5.3 LVM 扩容失败和 fstab 写错导致开机失败lvextend速度很快但扩容完文件系统还是老容量这个问题我也栽过。原因就是我前面说的忘了xfs_growfs或resize2fs。另外一个隐藏坑是题目规定要扩到3G你执行lvextend -L 3G和lvextend -L 3G含义完全不同前者是设置为 3G后者是增加 3G。如果不确定卷组剩余空间先vgs和pvs看容量避免 VG 空间不够导致命令失败。fstab 写错的后果比较严重开机直接掉进 emergency mode。这时候千万别慌在维护模式下输入 root 密码然后mount -o remount,rw /把根文件系统改成可写再编辑 fstab 修正错误行之后umount /data重新挂载验证再重启。我建议平时就故意写错 fstab 练几次修复操作真到了考场万一出了状况也能从容处理。5.4 时间同步、防火墙、容器三类高频维护点时间同步题看着简单但 chrony 有个常见坑新装的系统可能没有启用 NTP 服务或者时间偏差太大chronyc sources显示^?无法同步。排查步骤按顺序来先测网络通不通ping classroom.example.com再看服务状态systemctl status chronyd然后检查防火墙有没有放行 123/udp最后看配置文件里的 server 地址有没有写错。我习惯把/etc/chrony.conf里自带的那几行默认 server 注释掉只保留题目要求的源避免干扰。防火墙题目最大的坑是忘记--permanent。我曾有一次配完 82 端口当场curl通了第二天一开机又连不上教训极其深刻。现在我的习惯是每次防火墙操作都强制写成一行firewall-cmd --permanent --add-port82/tcp firewall-cmd --reload然后立刻firewall-cmd --list-ports确认。容器这类题目出问题的概率更高因为 Podman 的 systemd 集成版本差异大。我统一推荐podman generate systemd --new --name 容器名 -f /etc/systemd/system/这一条路别用老版本只绑定容器的方案。最后再分享一个小习惯每次练完一套题我会把错题整理成一句话记在笔记里比如“fstab 用 UUID 不要用设备名”“XFS 扩完要 xfs_growfs”“SELinux 配完要 restorecon”。等考前最后一天我不再看厚教材只看这份错题清单。我觉得备考 RHCSA 最有价值的地方不在于那张证书本身而在于你被迫把 Linux 的每一个角落都摸了一遍启动流程、存储管理、权限模型、服务守护、网络配置。这些是一个系统管理员真正的底气。只要你把每套练习都当成正式考试去写、去验证、去复盘考场上的 2.5 小时一点都不难熬。