
RHCSA结课实验做完那晚我盯着虚拟机的终端界面看了很久。不是因为挂在了哪道题上而是突然明白了一件事整学期拆开掌握的考点一旦被组合进一场真实系统的综合实验难度完全不是一个量级。RHCSA认证——红帽认证系统管理员——的实质根本不是背几条命令而是一套围绕用户、权限、存储、网络、服务、日志的完整盘面掌控能力。结课实验就是把这套能力丢进一台近乎裸机的系统里让你在有限时间内把系统一步步配置成题目要求的状态。这篇复盘会把实验环境、任务分类、每类考点的操作链路和踩过的坑全部拆开适合正在备考RHCSA认证、或者刚学完Linux系统管理想检验自己的朋友参考。1. 结课实验到底考了什么一张综合卷覆盖的RHCSA考点1.1 实验环境与任务构成先说环境。我们用的是VMware Workstation里的一台Rocky Linux 9虚拟机分配了2核CPU、4GB内存、20GB系统盘加一块15GB的数据盘。系统装的是最小化安装没有图形界面全程黑窗操作。这一点和官方RHCSA认证的机试形式很接近没有人会和你交互你面对的就是一台给你准备好的裸机所有配置都要从命令行完成。实验题目一共十八道覆盖了RHCSA认证考试大纲里的绝大部分模块包括初始化配置、用户与组、权限、存储、服务、防火墙、SELinux、计划任务、日志和归档。下面这张表是我按考点归类的任务清单基本可以看作RHCSA认证高频考点的缩影。考点模块实验任务涉及命令/组件系统初始化设置主机名、静态IP、DNS、yum仓库hostnamectl、nmcli、dnf用户与权限创建用户/组、配置sudo、共享目录setgiduseradd、groupadd、visudo存储管理新盘分区挂载、LVM扩容、swapfdisk、mkfs、lvm、mkswap网络服务安装httpd绑定8080、防火墙放行dnf、systemctl、firewall-cmdSELinux服务端口类型调整semanage、restorecon计划任务每日定时执行备份脚本crontab、crond日志管理配置轮转、查询日志logrotate、rsyslog、journalctl归档压缩打包目录并排除指定文件tar、gzip如果你正准备考RHCSA可以拿这张表当复习地图。课堂上老师会按章节讲但考试和实验从来不会按章节出题一个任务里经常会同时掺着用户、目录权限和服务配置好几层东西。1.2 拿到题先做什么我的任务优先级排序很多同学拿到实验题的第一反应是从第一题开始挨着做这是最亏的策略。我建议先花五分钟把所有题目通读一遍把任务之间的依赖关系理清楚。网络和仓库一定要放在最前面否则后面安装包或者配置NFS都跑不动用户和组要在服务之前建立因为某些服务的配置需要引用目录属主存储挂载最好在服务部署之前完成避免写到一半挂载点变化。我的执行顺序固定为初始化配置 → 网络与仓库 → 用户/组和权限 → 存储 → 服务 → 计划任务和日志。前面四类通常是保分题服务属于提分题计划任务和日志是熟练度题。考试时间有限先拿分后拔高是通用的策略。另外实验开始前给虚拟机做一个快照。真实考试里没有后悔药但练习中你完全可以利用快照把环境恢复到初始状态多试几种解法最终找到最稳妥的路径。快照不是作弊是帮你建立状态对比意识的最好工具。2. 初始化配置主机名、网络与YUM仓库的前置铺垫2.1 主机名和网络配置的主体命令第一道题基本都是基础项把主机名改成指定的域名再配置静态IP、网关和DNS。很多同学觉得简单实际扣分很多因为题目的评分标准是最终状态而不是你敲过什么命令。比如hostnamectl set-hostname rhel-lab.example.com之后必须用hostnamectl status验证同时注意/etc/hosts里是否同步了域名解析。网络用nmcli配置是最稳的nmcli con show nmcli con mod eth0 ipv4.method manual ipv4.addresses 192.168.122.50/24 ipv4.gateway 192.168.122.1 ipv4.dns 192.168.122.1 nmcli con up eth0改完别急着做下一题先用ip addr确认地址用ping -c 3网关确认连通性。有条件的话我建议重启一次虚拟机确认IP没有回退。很多坑不是当场爆的而是重启后才暴露等到最后才发现就来不及了。2.2 网络配置和仓库的两个常见坑点第一个坑是连接名不叫eth0。很多克隆镜像里连接名可能叫ens160或者System eth0直接nmcli con mod eth0会报找不到连接正确做法是先nmcli con show看清楚连接名再操作。第二个坑是手动改了传统network配置文件却忘了现代RHEL系默认用NetworkManager管理网络两边互相冲突服务起不来。仓库配置也是同样的道理。实验要求配好yum源我是这样做的dnf config-manager --add-repohttp://repo.example.com/rhel9-base # 或者手动写 /etc/yum.repos.d/rhel.repo dnf clean all dnf repolist配完仓库要把baseurl、gpgcheck写对然后dnf repolist确认仓库有效。很多人后面安装httpd失败回头排查发现是仓库baseurl少了斜杠或者gpgcheck配置不对。这一步花两分钟能省后面半小时。初始化完成后顺手把归档这类手速题做掉。比如把/etc目录打包排除所有.log文件存到/root下tar czf /root/etc-backup.tar.gz --exclude*.log /etc tar tzf /root/etc-backup.tar.gz | head -5RHCSA和结课实验都很喜欢考tar因为它不依赖别的服务纯粹是命令熟练度但能实实在在拿分。先把这种稳分题拿下后面心态完全不一样。3. 用户和权限命令不多扣分点全在细节3.1 批量创建用户与组件用户这块题目通常给出一张表某个用户指定UID指定附加组指定shell指定密码另一个用户只需要密码某些组需要提前创建。实际操作其实不复杂groupadd ops groupadd dev useradd -u 1308 -G ops -s /bin/bash alice echo Alice2024 | passwd --stdin alice useradd -s /bin/bash bob echo Bob2024 | passwd --stdin bob usermod -aG ops alice看起来简单得分点全藏在参数里-u是设置UID-G是附加组-s是shell-m是创建家目录。少一个参数这道题的状态就不完整。创建完用id alice、ls -ld /home/alice做验证确认家目录属主和权限都正确。这里要啰嗦两句。RHCSA体系的用户创建受到/etc/login.defs和/etc/default/useradd两个文件的默认值控制实验里一定不要随意改这两个文件否则一台机器上几十个用户都会受影响。另外RHEL系列默认的用户私有组机制会让每个新用户拥有一个与用户名同名的组这是正常现象不是配置错误很多人第一次看到会误以为多建了组。3.2 sudo和setgid共享目录sudo配置是RHCSA的重头戏考题一般会指定某个用户能执行某个命令。正确做法是在/etc/sudoers.d/下建文件而不是直接改/etc/sudoers。比如允许alice无需密码重启系统cat /etc/sudoers.d/alice EOF alice ALL(ALL) NOPASSWD: /usr/sbin/reboot EOF visudo -c这里最容易错的地方有三个第一不用visudo直接改文件一旦语法错误会导致全部sudo功能瘫痪第二NOPASSWD写错位置实际执行时还是要密码第三命令路径写错比如写了/bin/reboot但实际上reboot位于/usr/sbin/reboot导致权限无效。先用type reboot确认路径再写这是最稳妥的。共享目录那道题也值得展开。题目要求创建目录/ops属组ops组成员能在里面创建文件且新文件自动继承ops组。标准做法是mkdir /ops chown root:ops /ops chmod 2770 /ops重点是这个2也就是setgid位。它保证目录内新建的文件和子目录都会继承组的归属。想验证有没有生效切到组成员身份在目录里touch一个新文件然后ls -l看属组。这个确认动作只要三秒但能让你在考场上放心地继续下一题比反复猜答案强得多。4. 存储链路裸盘分区、LVM扩容与swap4.1 从一块新盘到永久挂载存储题大概是实验里最让新手心慌的部分但它有固定套路。先lsblk看设备名再通过fdisk或gdisk创建分区格式化最后挂载。以/dev/nvme0n2上新建一个800MB分区挂到/data为例fdisk /dev/nvme0n2 # 交互输入 n 新建分区p 主分区w 写盘 partprobe /dev/nvme0n2 lsblk mkfs.xfs /dev/nvme0n2p1 mkdir -p /data blkid /dev/nvme0n2p1然后在/etc/fstab里写入UUID而不是设备名。原因很简单设备名在重启后可能变化UUID是稳定的。写完后mount -a再用df -hT看挂载点和文件系统类型确认无误后我会特意umount再mount -a一次专门验证fstab写对了。这一步非常关键因为fstab里一个字段写错重启时系统可能直接进不了正常模式那是实验里最惨烈的翻车方式。这题常见的丢分点有三个分区后忘了partprobe导致内核没识别新分区格式化时选错文件系统类型fstab里写错字段导致mount -a报错。还有一个经典毛病是fstab写设备名当时能开机但换到别的机器或磁盘顺序变化后就会出问题养成写UUID的习惯对真实生产环境也有益。4.2 LVM在线扩容的两个文件系统差异LVM这道题是实验里的分水岭也是RHCSA认证的核心考点之一。题目通常要求把剩余空间做成卷组vgdata创建一个逻辑卷lvdata挂到某个目录并最终扩展到你指定的容量。基础操作如下pvcreate /dev/nvme0n2p2 vgcreate vgdata /dev/nvme0n2p2 lvcreate -L 400M -n lvdata vgdata mkfs.ext4 /dev/vgdata/lvdata mkdir -p /lvdata mount /dev/vgdata/lvdata /lvdata # 后续扩展 vgextend vgdata /dev/nvme0n2p3 lvextend -L 900M /dev/vgdata/lvdata resize2fs /dev/vgdata/lvdata这里我必须重点讲一个容易混淆的知识点ext4文件系统扩展容量用resize2fs参数是逻辑卷设备路径xfs文件系统扩展容量用xfs_growfs参数是挂载点而不是设备路径。举个例子xfs的卷挂载在/lvdata命令就应该是xfs_growfs /lvdata而不是xfs_growfs /dev/vgdata/lvdata。另外xfs只能增不能缩所以做题前先想清楚要扩到多大别随手敲一个数。LVM的核心价值是可以在线扩展不用卸载文件系统这在生产环境里意味着业务不中断。RHCSA爱考这个不是单纯考命令而是考你有没有理解逻辑卷和物理卷的关系。做完之后一定要用lvs、vgs、df -hT分别验证逻辑卷大小、卷组剩余空间和实际挂载状态。4.3 swap分区和卷组扩展swap题更隐蔽因为很多同学平时根本没碰过交换分区。题目会给出一块分区要求当作swap并开机自动启用。命令本身不复杂mkswap /dev/nvme0n2p4 swapon /dev/nvme0n2p4 # 在 /etc/fstab 中追加 /dev/nvme0n2p4 swap swap defaults 0 0但老手会提醒你两件事第一用swapon --show验证当前生效的swap设备第二重启后free -h再看一次确认自动挂载成功。swap在fstab里如果写设备名在某些虚拟化环境会出现设备漂移问题最好还是用UUID。存储这块整体上就是创建—格式化—挂载或激活—验证四步循环练熟了就是送分题。5. 服务部署排查httpd、防火墙与SELinux一条龙5.1 安装httpd并把端口改成8080服务题一般不会只考装个服务起来而是会叠加端口、防火墙、SELinux这些条件一起考。典型题目是安装httpd在/var/www/html/index.html写入指定内容服务监听8080端口允许外部访问。基本操作很直接dnf install -y httpd systemctl enable --now httpd echo RHCSA Lab Page /var/www/html/index.html sed -i s/^Listen 80/Listen 8080/ /etc/httpd/conf/httpd.conf systemctl restart httpd走到这一步其实只完成了大概三成。很多同学在这里直接curl 127.0.0.1:8080看到页面就以为做完了可评分系统从外部主机访问时页面却打不开。问题几乎都出在防火墙和SELinux上。我自己的习惯是每配置完一层就立刻验证一层避免到最后都不知道是哪一层出了问题。5.2 防火墙与SELinux两道拦路虎防火墙放行端口基本是固定动作firewall-cmd --add-port8080/tcp --permanent firewall-cmd --reload firewall-cmd --list-portsSELinux那边要做的是告诉策略允许httpd监听8080这个非标准端口dnf install -y policycoreutils-python-utils semanage port -a -t http_port_t -p tcp 8080 semanage port -l | grep http如果没有做semanage这一步即使防火墙放行了外部依然访问不了而本机curl却完全正常这是SELinux拦截非常典型的症状。顺便提醒一句semanage工具需要policycoreutils-python-utils这个包很多最小化安装的机器上没有要先dnf装上。这是我那次实验里实实在在踩过的坑当时盯着防火墙半天最后才发现是少装了一个工具包。5.3 从curl到外部访问的三层排障我的排障顺序很固定写在这里给同样被服务题折磨的人参考。先在服务器本机curl 127.0.0.1:8080通了说明服务进程本身没问题然后从另一台机器用主机名或IP访问如果不通依次检查firewalld和SELinux。检查SELinux时可以用setenforce 0临时放开做对照实验锁定原因后再用semanage这类正规手段解决最后恢复Enforcing模式。注意实验和考试中绝对不要直接把SELinux设成disabled这不是合格解法评分也不会认。服务题的本质是应用—网络—安全策略三层都要到位缺一层都拿不到分。NFS那类服务也是同一个思路装包、改配置、起服务、防火墙放行、验证。做题时脑子里始终装着这三层就不会被本机通、外部不通这种问题卡住。6. 计划任务与日志让后台行为可预期、可追溯6.1 crontab定时任务的真实PATH计划任务题很少直接考cron语法更多是考你的脚本能不能真正跑起来。常见题目是给某个用户配置cron任务每天02:00执行/usr/local/bin/backup.sh。大部分人会写crontab -e 0 2 * * * /usr/local/bin/backup.sh /var/log/backup.log 21看起来没问题可第二天一看任务没执行或者执行了但报错。原因在于cron进程的环境PATH非常精简通常只包含/usr/bin和/bin不会加载用户profile里设置的那些路径。解决办法有两个一是脚本开头写死所有外部命令的绝对路径比如把tar写成/bin/tar二是直接把这个变量写进crontab文件例如PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin。还要检查crond服务是否在运行用systemctl status crond确认。写cron任务时所有路径都写绝对路径脚本里的命令也写绝对路径这是我在实验里学到的最大教训。另外别忘了给脚本加上执行权限chmod x /usr/local/bin/backup.sh否则任务到点跑不起来但日志里未必会有明显报错排查起来很头疼。6.2 logrotate与rsyslog的配合日志题常考两个方向一是让某类日志做轮转保留特定份数二是把自定义程序日志接入系统日志。logrotate的配置一般写在/etc/logrotate.d/下独立文件里比如cat /etc/logrotate.d/backup EOF /var/log/backup.log { weekly rotate 7 compress delaycompress missingok notifempty } EOF配置完用logrotate -d /etc/logrotate.d/backup做调试预览用logrotate -f强制轮转一次验证效果。这里容易错的是不写create或者不指定权限导致轮转后新日志文件的属主不对程序继续写日志时直接失败。delaycompress这个选项是延迟到下次轮转再压缩对正在写入的日志很友好生产环境也常用。rsyslog端则是在/etc/rsyslog.conf里加规则比如把local7设施的所有日志写到单独文件local7.* /var/log/local7.log systemctl restart rsyslog这类题目做起来不快但学完就明白生产环境里那些滚动日志是怎么来的了。日志轮转不是锦上添花而是防止日志把磁盘塞满的基础操作结课实验里这道题我建议认真对待。6.3 journalctl排查实例如果题目要求查看某时间段内某服务的错误日志journalctl是最快的入口。我在实验里的常用命令基本就这几个journalctl -u httpd --since 1 hour ago journalctl -p err -b journalctl -n 50有一个小场景让我印象很深配置完httpd之后页面始终打不开journalctl -u httpd -n 30一眼就看到SELinux的avc拒绝信息比用dmesg去翻省时间多了。日志这块的本质是让系统的沉默行为变得可追溯现在花五分钟熟悉journalctl以后真实服务器出问题时就多一条救命通道。7. 结课实验和真实RHCSA认证的差距7.1 模拟实验比真实考试宽容在哪结课实验结束后我专门对比过和RHCSA认证机试的差异。实验里我可以翻笔记、问同学、反复重置环境即使敲错一条命令也不会有什么灾难性后果。但真实RHCSA认证是两个半小时的纯机试实操满分300分、210分通过所有操作都在隔离的虚拟机环境里完成没有求助对象。这意味着适应做完即验证的自检习惯才是实验训练里最值钱的东西。考试看的是系统的最终状态不是过程状态没对上就是零分。另一个常被忽略的差距是环境语言。实验时可以切中文考试界面默认是英文目录名、报错提示、选项参数全部以英文形式呈现。平时练习直接把系统语言改成英文强迫自己适应英文提示是我复盘时觉得最该早做的一件小事。很多人不是不会配置而是考场上看到英文报错就慌一慌就乱改配置最后丢分丢得很冤。7.2 考前冲刺经验从零开始重打一遍如果让我给正在读这篇的人提一个最实用的建议就是把自己训练成一个单兵作战系统。每周至少安排三次完整的综合演练每次两小时从空白虚拟机一路配到所有题目完成中途不查资料、不偷看答案。重点不是把命令背熟而是把排查链路也练熟比如服务不通时先看进程状态还是先看防火墙这个顺序会直接影响你在考场上的效率。每次实验结束前我会把验证命令全敲一遍hostnamectl、ip addr、id、lsblk、df -hT、systemctl status httpd、curl、firewall-cmd --list-all。这一套下来大约五分钟但能确认前面一两个小时的工作有没有真正生效。比反复刷十套题库都管用。最后再分享一个小技巧把最容易忘记的/etc/fstab和sudoers语法贴在笔记最显眼的地方每次实验结束花三行字记录这次又在哪里卡住了。我当时专门建了一个文本文档记录每一次fstab的错误写法和对应的报错信息后来考前翻一遍基本把该避的坑都避掉了。结课实验的那台虚拟机其实就是你通往RHCSA认证的第一块训练场把它跑熟了考试至少不慌——这个体会是我在那台机器上真正学到的。