☰
RHCSA备考指南:RHEL系统管理与高频配置实战
2026/10/3 4:19:49 网站建设 项目流程

1. 先把考试说清楚:RHCSA到底考什么

1.1 考试范围和题型,先建立一张知识地图

考RHCSA这件事,我前后带过不少学员,也陪着很多人从零基础一路摸到证书。先说个结论:RHCSA不是考“你背了多少命令”,而是考“你能不能在一台陌生的RHEL系统上,完成一系列基础配置任务”。你面对的是一台没有图形界面的虚拟机,终端里只有黑屏和白字,题目要求你用命令行完成网络配置、用户创建、存储挂载、SELinux调整这些事情,做完之后系统还要能重启、能正常登录、能继续运行。

考试时长两个半小时,题目大概十几道到二十道,全部是实操题。评分方式也很直接:机器检查结果,不看过程。你用什么方法实现无所谓,但最终配置必须生效,而且重启后依然生效。这一点特别关键,很多人平时练习的时候在终端里改完就完事了,忘了写进持久化配置,结果考试一重启,网络没了、服务挂了、挂载丢了,白白丢分。

RHCSA的知识范围其实很集中,我习惯把内容分成这样几块:基础操作和文件管理、用户与权限、网络配置、软件仓库管理、存储管理(分区、LVM、swap)、systemd服务管理、定时任务与日志、SELinux、归档压缩,还有RHEL 9新增的Podman容器基本操作。其中网络、存储、用户权限和SELinux是重头戏,几乎每场考试都会出现,而且一旦出错就是连锁反应。

我这篇文章要说的,就是这些重头戏里最基础、最高频的配置操作。不是让你背题,而是帮你把每条命令背后的思路理顺。你理解了为什么要这么配,考试时哪怕题目换个花样,你也能反应得过来。

1.2 环境准备:虚拟机选择和RHEL安装要点

练RHCSA最忌讳“只看不练”。我见过太多人买一堆资料、看一堆视频,结果自己一台测试机都没有,到了考场连shell都不熟,这种状态去考试基本是送钱。你需要准备的只有三样东西:一台电脑、一个虚拟机软件、一份RHEL或兼容系统的镜像。

虚拟机软件我推荐你用KVM/libvirt或者VMware Workstation,个人练习用VirtualBox也行。KVM的体验最接近真实考试环境,因为红帽考试的虚拟机后台就是KVM。但如果你Windows本子上不方便搞KVM,VMware也没问题,核心是“命令行操作习惯”要练出来,用什么虚拟机工具影响不大。

镜像方面,最简单的方法是去注册一个红帽开发者账号,可以免费获得RHEL的ISO镜像和订阅。这一步很值得做,因为练习用的系统和考试系统保持同一发行版,很多细节行为才一致,比如SELinux的策略、firewalld的默认配置、NetworkManager的行为。随便换一个Ubuntu或者Debian来练,虽然命令类似,但坑完全不一样。

安装时我给你的建议是:磁盘不用太大,20G足够了,但注意在安装界面里手动分区,给/boot和/划好空间,留一块空闲磁盘稍后练习LVM和分区用。装完了第一件事,用nmcli配好网络,用dnf装一些顺手的小工具,比如vim、bash-completion、tree,然后做一个快照。之后的每一次练习,你都可以从快照回滚,放开了折腾。

2. 网络与软件源:开局两件套

2.1 用nmcli彻底掌控网络配置

RHCSA的网络配置题,本质上只考一件事:让系统按要求使用指定的IP,并且重启后依然有效。RHEL默认用NetworkManager管理网络,图形工具nmtui可以应急,但考试和日常生产环境里,用nmcli才是效率最高、最不容易出错的方式。

先理清nmcli的基本逻辑:它操作的对象是“连接”而不是“网卡”。一个网卡可以有好几个连接配置,但同一时间只有一个活跃连接。你修改IP的时候,别直接去改ifcfg文件再systemctl restart network,那套老思路在RHEL 9里已经过时了。正确做法是看当前活跃的连接名,然后去改那个连接。

举个例子,假设机器里有个网卡叫ens160,当前活跃连接是ens160,你要把它配成静态地址:

nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.10.50/24 ipv4.gateway 192.168.10.1 ipv4.dns 192.168.10.1 nmcli connection up ens160

改完之后用nmcli device show ens160或ip addr验证。这里有个很容易被忽略的细节:ipv4.addresses后面如果不带子网掩码或CIDR后缀,NetworkManager可能不认,所以一定要写全/24这种格式。此外,如果你要把DHCP改成静态,别忘了把ipv4.method一起改掉,否则系统会一直用DHCP把地址覆盖掉。

主机名的修改也是考试常客。临时改直接用hostnamectl set-hostname,改完立即生效。但如果你在/etc/hosts里也写了旧主机名的解析,有些服务还是会找到旧的。所以改完主机名之后,顺手检查一下/etc/hosts,把对应的行更新掉。这个习惯能帮你避开很多奇怪的“服务连不上”问题。

判断网络配置是否合格,我用一个很土但很有效的演练方法:配完之后重启虚拟机,再登录进去ping网关和DNS,然后执行nmcli connection show看一眼状态。能活过重启才算真的配好了。

2.2 本地软件仓库配置:别在环路上挣扎

软件仓库的题,考试里几乎必考。常见要求就是:给系统配一个本地仓库,指向光盘镜像或某个本地目录,让你能正常安装软件包。很多人在这一步栽跟头,原因不是不会写repo文件,而是不知道baseurl应该指向哪、gpgcheck该填几、仓库名不能随便起。

一个标准的本地repo文件,放到/etc/yum.repos.d/目录下,后缀必须是.repo,内容大概是这样的:

[BaseOS] name=BaseOS baseurl=file:///mnt/cdrom/BaseOS gpgcheck=0 enabled=1 [AppStream] name=AppStream baseurl=file:///mnt/cdrom/AppStream gpgcheck=0 enabled=1

挂载镜像的做法也很固定:

mkdir -p /mnt/cdrom mount /dev/cdrom /mnt/cdrom

RHEL 9的安装镜像里有两个重要的软件仓库目录:BaseOS和AppStream,两个都要挂上。如果只写了BaseOS,你会发现dnf安装很多常用软件时依然报错说找不到包,因为那些包在AppStream里。别问我是怎么知道的,我第一次练习就踩了这个坑,在终端里折腾了快十分钟才反应过来。

另外,考试时不一定给你光盘,也可能是给了个URL或目录。不管来源是什么,核心就是看这个目录里有没有repodata文件夹。repodata存在,说明这是一个合法的仓库根目录,你就把baseurl指到它上一级目录即可。没有repodata,那就是拿不到仓库,配置了也白配。

清理缓存也是个好习惯。每次改完repo文件,执行:

dnf clean all dnf repolist

看到列表里出现你新加的仓库ID,再用dnf install装个小包测试一下,比如dnf install -y vim,能正常装完,这个环节就稳了。

3. 用户权限与SELinux:最容易被扣分的地方

3.1 用户、组、密码策略的具体配置

用户和组的题目,RHCSA的考法特别直接,它不会让你创建一百个用户,而是给你一个场景:某部门来了新员工,要求创建用户、归入指定的组、设定一个过期时间、能用密码正常登录。这类题不难,但有几个细节容易丢分。

首先是创建用户的命令。useradd和adduser在RHEL里是同一个东西,但在别的发行版不一样,考试认准useradd就好。创建一个用户并加入附加组:

useradd -G wheel -s /bin/bash zhangsan echo 'zhangsan:password123' | chpasswd

如果要求创建用户时顺便指定家目录和UID:

useradd -u 2001 -d /home/dev01 -m -G devgroup dev01

-m的作用是同时创建家目录,别漏了,否则用户登录时会发现没有家目录可用,很多程序一启动就报错。设置密码时我习惯用chpasswd管道方式,因为它适合在脚本里批量处理,而且不普通地暴露在ps的输出里。交互式passwd当然也可以,但考试环境里非交互一次搞定更不容易断出错。

密码策略的题目也很高频,常见的就是“设置密码90天后过期”和“提前7天警告”。命令是:

chage -M 90 -W 7 zhangsan

-M是最大有效天数,-W是过期前警告天数。注意别和-m搞混,小写-m是修改密码后最少使用多少天才允许再改。如果你不确定当前策略,用chage -l zhangsan查看,这个输出里能看到所有相关字段,检查时很方便。

3.2 文件和目录权限进阶:ACL与特殊权限

文件权限这部分,基础读写执行权限大家都懂,但RHCSA考的往往是你“平时用不到但排查时很重要”的东西,比如ACL、SUID、SGID、sticky bit。最坑的情况是:题目要求“让某个用户能读写某个文件”,但该文件的所有者和管理组都不是这个用户,你直接把权限改成777,结果重启后被系统检查程序判为不规范配置。

正确的做法是用ACL。给指定用户增加权限:

setfacl -m u:dev01:rwx /data/project/

给一个组加权限:

setfacl -m g:devgroup:rwx /data/project/

查看ACL用getfacl。这里要特别注意:ACL对一个目录的设置不会自动递归到已有文件。如果你希望整个目录树都有权限,需要加-R递归,比如:

setfacl -R -m u:dev01:rwx /data/project/

还有默认ACL,这招在“新建文件也要自动带权限”的场景特别有用。设置默认ACL:

setfacl -m d:u:dev01:rwx /data/project/

这样之后在该目录下新建的文件和子目录,会自动应用这条ACL。这个能力在生产环境里很实用,比如公司共享目录下,每个部门的文件都希望同事能读写,又不想每次手动改权限,默认ACL就是解决方案。

SUID、SGID和sticky bit的检查方法也得记住。看权限位:如果可执行位上是rws,那是SUID或SGID;如果目录权限最后一位是t,那是sticky bit。设置方式也很直白:

chmod u+s /usr/bin/someapp chmod g+s /data/teamdir chmod +t /data/shared

sticky bit最常见在/tmp目录,它的作用是:目录下所有人都能创建文件,但只能删除自己创建的文件。RHCSA里有时候会让你给某个共享目录设sticky bit,目的就是防止用户之间互相删东西。

3.3 SELinux:从“关掉它”到“会查会改”

SELinux是很多人考RHCSA的拦路虎,也是实际生产环境里最容易被“一刀切”关掉的东西。我理解大家为什么想关它,因为调试时确实烦,它的报错信息初看像天书。但RHCSA考试里有SELinux的题,还会考你“在SELinux开启状态下调整上下文”,所以逃避没用,还是要正面回答。

先分清三个状态:enforcing(强制启用)、permissive(宽松模式,只记录不拦截)、disabled(彻底禁用)。查看当前状态:

getenforce

考试场景里系统通常是enforcing,你要做的是让某个服务能正常工作,而不是关掉SELinux。比如你配好了一个HTTP服务,但访问网页时总报权限错误,第一反应应该是查审计日志:

ausearch -m avc -ts recent

或者用更直接的工具:

grep "denied" /var/log/audit/audit.log | tail -20

看到具体的违规记录后,再看是什么类型的问题。最常见的两类,一是文件上下文标错了,二是布尔值开关没开。

文件上下文标错的经典例子:你把网页文件放在自定义目录,比如/webdata,但没有设置httpd_sys_content_t这个类型,于是httpd进程就无法读取。解决办法有两种,推荐先学会semanage:

semanage fcontext -a -t httpd_sys_content_t "/webdata(/.*)?" restorecon -Rv /webdata

-a表示新增规则,restorecon -Rv是把实际标签刷新成规则里的值。注意不执行restorecon的话,规则加了但当前文件标签还是旧的,问题依旧。另一种方法是直接用chcon临时改上下文,但不持久,重启后可能被重置,考试里如果没要求持久,chcon只能应急。

布尔值的场景也很常见,比如NFS的home目录共享、FTP上传这些。查询和修改:

getsebool -a | grep ftp setsebool -P ftpd_full_access on

-P参数很重要,表示persistent,写入持久化配置,重启不丢。没有-P,只是临时生效,重启就没了。

最后我建议你把每次的SELinux报错都当成一道小题来练:先看audit.log,判断是上下文还是布尔值,然后选对应的命令解决。练多了你就会发现SELinux其实有很强规律,它只是把权限控制从DAC模型提升到了MAC模型,每个进程、每个文件都有一张“身份证”,系统按规则核对身份,规则对了就通行无阻。

4. 存储、系统服务与自动化:考试里的大头

4.1 LVM和swap调整:这条考得最多

存储类的题目在RHCSA里占据的分数比重很高,LVM又是其中出现频率最高的考点。考法通常是给你一块新加的磁盘,要求你创建一个卷组、一个逻辑卷,格式化成文件系统,并且挂载到指定目录,还得能重启自动挂载。

整个过程可以分成清晰的几步。第一步是分区,因为LVM需要分区类型为Linux LVM(代码8e)。用fdisk或gdisk操作,创建完分区后,注意让系统重新读取分区表:

partprobe /dev/sdb lsblk

第二步是创建PV、VG、LV:

pvcreate /dev/sdb1 vgcreate vg0 /dev/sdb1 lvcreate -L 2G -n lvdata vg0

-L 2G是固定大小,如果你希望占满卷组剩余空间,可以用-l 100%FREE这样的百分比写法。给LV扩容是考试爱考的延伸操作:

lvextend -L +1G /dev/vg0/lvdata resize2fs /dev/vg0/lvdata # xfs用 xfs_growfs /挂载点

这里有个致命细节:ext系列文件系统在线扩容用resize2fs,而xfs要挂载之后用xfs_growfs加挂载点来扩容。如果你搞混了,就会提示找不到superblock或者不支持的操作,实际使用上差异很大。

第三步是格式化并挂载:

mkfs.xfs /dev/vg0/lvdata mkdir -p /data mount /dev/vg0/lvdata /data

持久化挂载是永远的考点。修改/etc/fstab时,我强烈建议你按这样写:

/dev/vg0/lvdata /data xfs defaults 0 0

用UUID其实更稳,因为考试环境里设备名可能会变。获取UUID用blkid。写完fstab后,一定执行一下:

mount -a

这条命令会按fstab的内容重新挂载一遍所有未挂载的项,能立刻发现fstab里有没有写错。没有报错就说明重启也没问题,这是验证fstab最快捷的方法。

swap的调整同样常考,比如要求增加一个1G的swap分区。创建swap分区的方式有两种:用磁盘分区,或者用文件。考试比较偏爱“增加swap分区”的方式,流程是:

mkswap /dev/sdb2 swapon /dev/sdb2

要让重启后继续生效,在fstab里加一行:

/dev/sdb2 swap swap defaults 0 0

验证用swapon -s看当前生效的swap设备。如果你之前的系统已经有了一个swap分区,新增后不要急着把旧swap关掉,考试要求“增加”就老老实实加新的,千万不要手滑把原有的swap分区给删了。

4.2 systemd、cron与日志的日常运维

systemd这部分,RHCSA考得不算深,但都是日常运维离不开的基础操作。你要能熟练完成:设置服务开机自启、立即启动服务、查看服务的运行状态、修改服务配置后重新加载。

最常用的几个命令:

systemctl enable --now httpd systemctl status httpd systemctl restart httpd systemctl daemon-reload

enable --now是同时完成开机自启和立即启动,一步到位。如果你改了某个服务的unit文件,比如改了/etc/systemd/system/下的自定义service,必须执行systemctl daemon-reload,否则systemd不识别的你的修改,直接restart也还是用旧配置。

自定义service文件的写法属于进阶题,考的概率不大,但了解一下没坏处。一个最简单的内容:

[Unit] Description=My Custom Service After=network.target [Service] ExecStart=/usr/local/bin/myscript.sh Restart=on-failure [Install] WantedBy=multi-user.target

重点是ExecStart要写绝对路径,而且脚本本身要加chmod +x,否则服务启动就会失败,journal日志里会显示权限不足。

定时任务方面,cron是必考项。常见的需求是“每天凌晨两点执行某个脚本”或“每周一清理日志文件”。最直接的方式是编辑crontab -e,这是当前用户的定时任务:

0 2 * * * /usr/local/bin/backup.sh

格式就是“分 时 日 月 周”五段,加要执行的命令。周一到周日对应数字1到7,也有用mon这类缩写的,但考试里你最好直接写数字,不容易错。如果你希望所有用户的任务由系统统一管理,写到/etc/crontab里也可以,但那个文件里还要多写一个“执行用户”字段,初学者容易漏。还有/etc/cron.d/和/etc/cron.daily/、/etc/cron.hourly/这些目录,它们的特点是用户不用自己处理,适合系统级脚本。

排查cron是否执行,我有一套固定方法:先查看日志:

journalctl -u crond -since today

再看用户的crontab内容:

crontab -l

如果日志显示任务被执行了但结果不对,多半是脚本的问题,比如脚本里用了相对路径、环境变量缺失等。cron环境里的PATH默认很干净,不包含/usr/local/bin,所以你脚本里的命令最好写全绝对路径,或者在脚本开头重新export PATH。

日志管理相对简单,重点是用journald查系统日志和用rsyslog分类记录。查看某服务的日志:

journalctl -u httpd -n 50 journalctl -u httpd --since "1 hour ago"

排查boot阶段问题:

journalctl -b -p err

-b表示当前启动,-p err只看错误级别以上的消息。这个命令是我排查开机故障时的首选。

如果你还要配logrotate做日志轮转,原理很简单:每天或每周把旧日志改名压缩,保留若干个历史版本。默认配置在/etc/logrotate.conf和/etc/logrotate.d/里,你新建一个文件,比如:

/var/log/myapp/*.log { daily rotate 7 compress missingok }

关键点是写清楚日志文件匹配路径,和轮转的频率。没有missingok的话,文件不存在时会报错。

4.3 归档压缩与ssh免密:效率和细节

归档压缩这部分,考法非常朴实:给定一个目录或一组文件,要求你用tar打包并压缩,放到指定位置,后续可能还要能解压出来。命令本身并不难:

tar -czvf /root/backup.tar.gz /etc

对应的解压:

tar -xzvf /root/backup.tar.gz -C /tmp/restore

-C指定解压目标目录,-c创建归档,-z用gzip压缩,-v显示过程,-f接文件名。这几个参数是打包默认套餐,我建议你默写出来。还有不同压缩格式的差异:-z对应gzip,-j对应bzip2,-J对应xz。考试一般默认要求gzip,但你能看懂另外两个也不亏,遇到系统资源紧张的时候,用xz压缩率会高很多。

ssh免密这个考点,生产环境里应用极广,考试里也不时会碰到。场景一般是“从本机以指定用户登录远程主机时,不需要输入密码”。实现方式就是用公钥认证,流程三步走:

ssh-keygen -t rsa ssh-copy-id remoteuser@remotehost ssh remoteuser@remotehost

ssh-keygen生成密钥时,会让你输入passphrase,我们通常直接回车,让它空密码,这样免密才没有交互。ssh-copy-id这条命令会把公钥追加到目标机的~/.ssh/authorized_keys里,顺便设置好权限。如果你要手动完成,就得在目标机创建~/.ssh目录,权限改成700,authorized_keys文件权限改成600,否则sshd会出于安全考虑拒绝使用这个密钥认证。

排查免密失败时,看服务端日志最靠谱:

journalctl -u sshd -since today

如果出现Authentication refused: bad ownership or modes,那基本就是权限问题。还有一种情况是SELinux上下文不对,restorecon -Rv ~/.ssh能解决。这几个问题我都在真实环境里踩过,排查思路基本就是“权限优先、上下文其次、配置最后”。

5. 常见问题与排查技巧实录

5.1 典型报错和排查速查表

练RHCSA过程中,你会反复遇到同样的一批报错。我整理了一个速查表,把频率最高的几个问题、判断方法和常用解决命令列在一起,方便你对照排查。

现象高概率原因检查/解决命令
重启后网络不通没把配置写进连接,而是临时改的nmcli connection show,检查ipv4.method
dnf安装包提示找不到仓库仓库目录没有repodata或baseurl路径写错ls /mnt/cdrom,确认目录结构
新用户无法登录家目录没创建或shell非法ls -ld /home/user,检查/etc/passwd
服务启动失败unit文件错误或脚本没有执行权限journalctl -u 服务名 -n 20
挂载后重启丢失fstab行格式错误或漏写mount -a,cat /etc/fstab
web页面访问403SELinux上下文不对ls -Z对比目标目录的context
挂载报错“wrong fs type”没有安装对应的文件系统驱动或设备名不对blkid查看真实文件系统类型
定时任务不执行脚本内环境变量缺失或crond未运行systemctl status crond,脚本内用绝对路径

这张表我建议你贴在显示器边上,练习时每遇到一个报错就对照一下,慢慢地你就形成了“看到现象→锁定方向→快速定位”的排查习惯。考试其实很考验这个习惯,因为两个半小时的实操题,时间一大半都消耗在“为什么我配了不生效”上。

5.2 踩坑实录:配置文件的“幽灵”干扰

有些问题的坑不在命令本身,而在你之前练习时留下的“历史包袱”。下面这几个场景,是我见过的最高频的“幽灵干扰”。

第一类,是远程仓库和本地仓库并存。你之前用默认的官方源试过几次,后来配置了本地源,但dnf还是去访问公网仓库,等半天然后超时。这时候你需要看看/etc/yum.repos.d/里是不是有不止一个repo文件,或者原来的repo配置里enabled=1没有关掉。把所有不用的仓库enabled=0,或者干脆把文件移走,只留下你配置的本地repo,问题立刻解决。

第二类,是fstab里写了旧的错误条目。比如你挂载了一个不存在的设备,重启后系统会进入emergency mode,卡在交互式救援界面。解决办法是在emergency模式里输入root密码,然后修改fstab用#注释掉错误行,重启。这类问题特别像“幽灵”,因为你可能根本不记得自己什么时候写过这一行,但它就是会在关键时候拖你下水。

第三类,是hosts文件里的旧解析。你改了主机名,但/etc/hosts里还放着旧主机名映射到127.0.0.1,结果某些服务启动时,解析到旧名字后行为异常。解决方法是打开/etc/hosts,把旧主机名替换成新的,一行就能避免无数的奇怪报错。

第四类,是环境变量和PATH的问题。你在shell里手工执行脚本一切正常,但cron一执行就失败,多半因为脚本里没有设置PATH。生产环境里,很多运维人员都在脚本开头显式声明:

#!/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

这一行加上,很多定时任务的诡异问题就消失了。

最后我还想强调一个习惯:每做完一个配置,立刻做一次“重启验证”。网络配置、fstab挂载、SELinux布尔值、定时任务,这些是特别容易被“当前会话生效”迷惑的。你只有在重启后重新登录,确认所有配置依然生效,考试时心里才有底。这个方法看起来笨,但它是检验持久化配置最有效的手段,没有之一。

我个人在实际带学员的过程中,见过太多“练的时候全对、考的时候全忘”的案例,根本原因不是知识点没记住,而是练习时不够系统、没有形成自己的检查清单。RHCSA考的是你作为系统管理员的基本功,基本功是否扎实,就看这些最基础的配置能不能在慌乱中依然做对。把上面这些操作练到不用想就能敲出来,再去考试,你会觉得题目比平时练习还轻松。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询