考 RHCSA 最头疼的往往不是知识点本身,而是不知道从哪开始准备:网上资料零零散散,今天看到一个命令用法,明天看到一个配置片段,攒了一堆收藏却形不成体系。这篇文章围绕 Red Hat Certified System Administrator(RHCSA,EX200)备考第一阶段的完整路径来展开,从考试逻辑、环境搭建到核心命令、实战案例、高频踩坑,一次讲清楚。适合准备考证的运维新手、想系统补 Linux 基础的后端开发,以及正在刷 LinkedIn Cert Prep 系列课程的读者。
1. RHCSA 是什么,为什么值得考
1.1 考试定位
RHCSA 全称 Red Hat Certified System Administrator,是红帽认证体系中的初级系统管理员认证。考试编号是 EX200,采用纯实操形式:你坐在一台安装了 Red Hat Enterprise Linux 的电脑前,根据题目要求在真实系统里完成配置任务,改错、漏改、改坏了都不会有提示,最终由系统自动判分。
这和传统笔试、选择题考试完全不同。它考的不仅是“知道某个命令”,而是“在限定时间内,能不能把一台服务器配置成题目要求的状态”。
对于正在学习 Red Hat Enterprise Linux 的人来说,RHCSA 也是目前认可度最高的入门级 Linux 实操认证之一。很多企业在招聘 Linux 运维、初级 DevOps 工程师时,会把 RHCSA 作为加分项甚至硬性条件。
1.2 Cert Prep 第一部分覆盖什么
LinkedIn 上的 “Red Hat Certified System Administrator (RHCSA) (EX200) Cert Prep” 系列课程通常会拆成多个部分来讲解。第一部分一般聚焦在最基础也最高频的内容上:
- Linux 命令行操作与文件管理
- 用户与用户组管理
- 文件权限与 ACL
- 软件包管理(dnf/yum、rpm)
- 进程管理与 systemd 服务管理
- 网络基础配置
- 系统日志
- SELinux 基础
这些知识点不仅是考试前 60% 的基础,也是后续 RHCE(Red Hat Certified Engineer,红帽认证工程师)考试的地基。本文会按照这个范围展开,并给出可以照着做的完整示例。
1.3 一次能考过的关键
根据大量通过者的经验,RHCSA 备考的核心可以总结成一句话:不要只看,一定要在虚拟机里动手敲。考试题目都是你在日常练习中做过的操作,区别只在于熟练度和速度。所以,本文的每个命令、每个配置,都建议你打开终端亲自执行一遍。
2. 环境准备:用虚拟机搭一套练习环境
RHCSA 考试基于 Red Hat Enterprise Linux(RHEL),但部分读者没有现成的 RHEL 环境。这里给出两条练习路径:
- 官方路径:注册红帽开发者订阅,可以合法获得 RHEL 的免费订阅用于学习,具体方式是在红帽官网注册开发者账号,进入“Red Hat Developer”后绑定订阅,然后在系统上用 subscription-manager 注册即可。
- 替代路径:使用与 RHEL 完全二进制兼容的 Rocky Linux 或 AlmaLinux。两者的命令、配置文件路径与服务管理方式都借鉴自 RHEL,适合先熟悉操作,考试前再用 RHEL 环境过一遍。
注意:Red Hat 5.8、6.x 等老版本在 2024 年之后已经远离主流运维场景,RHCSA 考试也早已切换到 RHEL 8/9 的任务体系。不建议在新项目中学习老版本命令体系,尤其是网络管理、软件源配置差异很大。
2.1 VMware 虚拟机安装 RHEL 9
“vmvare 虚拟机安装 red hat enterprise” 是备考人群搜索最多的关键词之一。在 VMware Workstation 中安装 RHEL 9 的流程如下:
- 下载 RHEL 9 ISO 镜像(官方评估版 ISO 或通过开发者订阅下载)。
- 新建虚拟机,操作系统类型选择 “Red Hat Enterprise Linux 9 64-bit”。
- 内存建议分配 4GB 以上,处理器 2 核以上,磁盘 40GB 以上。
- 网络适配器选择 NAT 模式,方便虚拟机访问外网下载软件包。
- 安装时选择 “Minimal Install” 最小化安装,避免图形界面带来的额外负载。
- 磁盘分区建议使用默认自动分区,考试练习阶段不需要手动折腾 LVM 细节。
- 设置 root 密码,并创建一个普通用户(比如 student),后面练习 sudo 权限会用到。
安装完成并重启后,第一件事是配置主机名和 IP 地址,保证能通过 SSH 连接,同时确认能访问软件源。
2.2 软件源配置
如果你使用的是 Rocky Linux 或 AlmaLinux,安装完成后默认就有可用的软件源,直接执行:
sudo dnf makecache如果你是 RHEL 9 且注册了开发者订阅,执行:
sudo subscription-manager register --username <你的红帽账号> --password <你的密码> sudo subscription-manager attach --auto然后验证软件源:
sudo dnf repolist如果无法使用官方 CDN,也可以配置本地镜像仓库,但练习阶段不建议折腾这一步,先保证能安装 httpd、vim 等基础软件即可。
2.3 练习环境的目录规划
考试时你会在多个虚拟机之间切换,练习阶段也建议养成规范操作的思路。可以把练习内容按模块拆分,例如:
~/rhcsa/01_users # 用户与权限 ~/rhcsa/02_packages # 软件包管理 ~/rhcsa/03_services # systemd 服务 ~/rhcsa/04_network # 网络配置每次练习之前,先对虚拟机做一个快照,方便练坏了快速回滚。
3. 核心知识点拆解:RHCSA Part1 高频内容
3.1 命令行与文件管理
RHEL 9 中默认 shell 是 Bash。你需要熟练掌握文件管理命令:
ls -l /etc cd /var/log pwd cp -r /etc/skel /tmp/skel_backup mv /tmp/skel_backup /tmp/skel_bak rm -rf /tmp/skel_bak find /var/log -name "*.log" -mtime -7 grep -r "error" /var/log/messages tar -czf /tmp/etc_backup.tar.gz /etc这些命令看起来简单,但考试中经常混合考察。例如“找出 /var/log 下 7 天内修改过的 .log 文件并复制到 /tmp 下”,就需要同时用到 find、cp 和 -exec 或管道组合。
需要特别注意的是:
rm -rf在真实服务器上必须谨慎,虽然是考试,也建议先ls确认路径。tar解包时用-xzf对应.tar.gz,用-xJf对应.tar.xz。
3.2 用户与用户组管理
用户管理是 RHCSA 的高频考点。核心命令:
# 创建用户 sudo useradd -m -s /bin/bash alice # 设置密码 sudo passwd alice # 创建用户组 sudo groupadd developers # 把用户加入附加组 sudo usermod -aG developers alice # 查看用户信息 id alice # 查看用户主要组 groups alice考试中经常出现的考点:
useradd与adduser的区别:RHEL 中adduser是useradd的符号链接,没有 Debian/Ubuntu 中交互式创建用户的行为。usermod -aG中-a是追加的意思,不加-a会覆盖用户的附加组,这是非常容易踩坑的点。- 修改用户主要组用
usermod -g,修改附加组用usermod -G。 - 删除用户时,
userdel -r会连同用户家目录和邮件目录一起删除。
sudo 权限配置也是必考内容。普通用户授权方式有两种,推荐使用 drop-in 文件方式:
# /etc/sudoers.d/alice alice ALL=(ALL) ALL这种方式比直接修改/etc/sudoers更安全,而且visudo -c可以检查语法。执行下面的命令创建文件:
echo "alice ALL=(ALL) ALL" | sudo tee /etc/sudoers.d/alice3.3 文件权限与 ACL
RHEL 9 默认文件权限遵循 Linux 标准模式:读 r=4,写 w=2,执行 x=1。需要熟练掌握:
chmod 750 /data/project chown root:developers /data/project chmod u+s /data/project/bin/tool chmod g+s /data/project对于目录来说,setgid位(g+s)很常用:它能让新创建的文件自动继承目录的用户组。考试中“让某个目录下新建的文件都归 developers 组所有”,答案就是chmod g+s配合适当的组权限。
ACL(访问控制列表)用于精细权限控制:
# 给用户 bob 在 /data/project 目录上设置 rwx 权限 setfacl -m u:bob:rwx /data/project # 查看 ACL getfacl /data/project # 删除某条 ACL setfacl -x u:bob /data/project # 清空所有 ACL setfacl -b /data/project注意:ls -l输出中,如果一个文件有 ACL,权限位末尾会出现+,例如drwxrwx---+。
3.4 软件包管理
RHEL 9 使用dnf作为包管理器,yum是它的兼容别名。常用操作:
# 搜索 dnf search httpd # 安装 sudo dnf install -y httpd # 卸载 sudo dnf remove -y httpd # 查看软件包是否已安装 rpm -q httpd # 查看软件包安装的文件列表 rpm -ql httpd # 查看某个文件属于哪个软件包 dnf provides /etc/httpd/conf/httpd.conf考试中rpm的命令经常以“查询”为主,比如“找出 /etc/ssh/sshd_config 属于哪个包”,用rpm -qf即可:
rpm -qf /etc/ssh/sshd_config软件包管理还有一个常考考点:dnf history 回滚。如果误装了一个包,可以通过dnf history查看历史记录,然后用dnf history undo <编号>回滚。
3.5 systemd 服务管理
RHEL 7 之后,系统初始化全面切换到了 systemd。RHCSA 考试中 systemd 是绝对核心。必会命令:
# 启动并设置开机自启 sudo systemctl enable --now httpd # 查看状态 systemctl status httpd # 重载配置 sudo systemctl daemon-reload # 重启和停止 sudo systemctl restart httpd sudo systemctl stop httpd # 查看服务是否开机自启 systemctl is-enabled httpd # 查看服务是否正在运行 systemctl is-active httpd如果考试中要求“创建一个新的 systemd 服务”,你需要会写单元文件。一个最小示例:
# /etc/systemd/system/myapp.service [Unit] Description=My Custom Application After=network.target [Service] Type=simple User=alice ExecStart=/usr/local/bin/myapp.sh Restart=on-failure [Install] WantedBy=multi-user.target写完单元文件后执行:
sudo systemctl daemon-reload sudo systemctl enable --now myapp注意Type=simple表示 ExecStart 启动的进程就是主进程;如果脚本需要先 fork 到后台,可能需要用Type=forking并指定 PIDFile。
3.6 网络配置
RHEL 8/9 推荐使用nmcli管理网络。常见操作:
# 查看所有连接 nmcli connection show # 修改连接为静态 IP nmcli connection modify eth0 ipv4.addresses 192.168.100.100/24 nmcli connection modify eth0 ipv4.gateway 192.168.100.1 nmcli connection modify eth0 ipv4.dns 8.8.8.8 nmcli connection modify eth0 ipv4.method manual # 生效 nmcli connection up eth0命令中eth0需要根据实际连接名称修改,运行nmcli connection show查看。另外,hostnamectl set-hostname用于修改主机名:
sudo hostnamectl set-hostname node1.example.com考试中网络题目通常要求“配置静态地址并保证重启后生效”。nmcli修改后的配置会在重启后保留,但要注意,如果 NetworkManager 被禁用,整个网络栈可能不受控,所以要确认 NetworkManager 服务处于活动状态。
3.7 日志与 SELinux 基础
日志查看考点集中在journalctl:
# 查看当前启动的所有日志 journalctl -b # 查看某个服务的日志 journalctl -u httpd # 实时查看 journalctl -f # 查看最后 50 行 journalctl -n 50SELinux 是 RHCSA 的难点,也是很多考生认为“玄学”的部分。其实考试只需要掌握三个核心概念:
- SELinux 有三种模式:Enforcing(强制)、Permissive(宽容)、Disabled(禁用)。查看当前模式用
getenforce。 - 文件标签(context)决定进程能否访问文件。例如 httpd 默认只能访问标记为
httpd_sys_content_t的目录。 - 排错顺序:先看日志,再修改标签或布尔值。
常用命令:
# 临时切换模式 sudo setenforce 0 # 永久修改模式 sudo vim /etc/selinux/config # 查看文件上下文 ls -Z /var/www/html # 修改文件上下文 sudo semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?" sudo restorecon -Rv /data/www如果遇到“服务无法读取文件”的报错,先getenforce看 SELinux 是否开启,再用ausearch -m avc查被拒绝的记录。很多时候问题不是权限位,而是上下文标签不对。
4. 完整实战:从零初始化一台 RHEL 服务器
下面把前面拆解的知识点整合到一个完整场景中。假设你刚装好一台最小化 RHEL 9 虚拟机,需要完成以下任务:
- 创建用户 alice、bob,创建组 developers,把 alice 和 bob 加入该组。
- 为 alice 配置 sudo 权限。
- 创建目录 /data/project,要求组内成员可读写,且新建文件自动继承组。
- 安装 httpd,并调整 SELinux 让 /data/www 目录可被 httpd 读取。
- 配置 httpd 开机自启,并放行防火墙。
- 验证服务可访问。
4.1 用户与组配置
# 创建组 sudo groupadd developers # 创建用户并设置密码 sudo useradd -m -s /bin/bash alice echo "alice:Passw0rd!" | sudo chpasswd sudo useradd -m -s /bin/bash bob echo "bob:Passw0rd!" | sudo chpasswd # 将用户加入附加组 sudo usermod -aG developers alice sudo usermod -aG developers bob # 验证 id alice id bob为 alice 配置免密 sudo:
echo "alice ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/alice sudo visudo -c输出应该包含parsed OK字样。
4.2 目录权限与默认继承组
# 创建目录 sudo mkdir -p /data/project # 设置目录归属 sudo chown root:developers /data/project # 目录权限:rwxrwx---,所有者 root 和组 developers 可读写执行 sudo chmod 2770 /data/project # 验证 ls -ld /data/project2是 setgid 位。此时在 /data/project 下新建文件的组会是 developers,而不是创建者自己的主组。用 alice 验证:
sudo -u alice touch /data/project/test.txt ls -l /data/project/test.txt可以看到文件的组为 developers。
4.3 安装 httpd 并配置 SELinux
# 安装 httpd sudo dnf install -y httpd # 创建网站目录 sudo mkdir -p /data/www echo "RHCSA Practice Page" | sudo tee /data/www/index.html # 修改 httpd 默认文档根目录(也可以直接在 /var/www/html 下建,这里演示自定义目录)修改 httpd 配置,让 DocumentRoot 指向 /data/www:
sudo vim /etc/httpd/conf/httpd.conf找到DocumentRoot行,修改为:
DocumentRoot "/data/www"然后找到<Directory "/var/www">区块,改为:
<Directory "/data/www"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>如果不想改整个配置文件,也可以创建/etc/httpd/conf.d/www.conf:
<VirtualHost *:80> DocumentRoot "/data/www" <Directory "/data/www"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> </VirtualHost>修改配置后,设置 httpd 的 SELinux 上下文:
# 给 /data/www 及其子目录打上 httpd 的内容标签 sudo semanage fcontext -a -t httpd_sys_content_t "/data/www(/.*)?" sudo restorecon -Rv /data/www # 验证 ls -Zd /data/www然后启动服务并设置开机自启:
sudo systemctl enable --now httpd systemctl status httpd4.4 防火墙放行
RHEL 9 默认启用了 firewalld。放行 HTTP 服务:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload验证:
sudo firewall-cmd --list-all4.5 结果验证
从本机或宿主机访问虚拟机 IP:
curl http://<虚拟机IP>/预期输出:
RHCSA Practice Page到这一步,一台服务器完成基础初始化,也完整覆盖了 RHCSA Part1 的核心操作。
5. 常见问题与排查思路
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| dnf install 报 “No URLs in mirrorlist” 或 “Cannot find a valid baseurl” | 软件源没配置好,或未注册订阅 | 检查/etc/yum.repos.d/下的 .repo 文件;RHEL 先确认 subscription-manager 注册状态 |
| useradd 创建用户后无法 su 切换 | 未设置密码,或 shell 不是可登录 shell | passwd <用户名>设置密码,确认/etc/passwd中 shell 是/bin/bash |
| usermod 后用户组没生效 | 用户已登录,缓存未刷新 | 重新登录或执行newgrp <组名> |
| chmod 2770 后新文件组不对 | 目录没有 setgid 位,或修改了错误的目录 | chmod g+s /data/project后重新测试 |
| httpd 启动失败,端口占用 | `ss -tlnp | grep :80` 查看占用进程 |
| 网页显示 Forbidden | SELinux 上下文或目录权限问题 | 先getenforce确认 SELinux 模式,再用ausearch -m avc查 AVC 拒绝记录;临时用setenforce 0测试是否 SELinux 导致 |
| 防火墙放行后外部仍无法访问 | 服务不在 firewall 规则中,或默认 zone 不对 | firewall-cmd --list-all确认 http 服务已添加 |
| nmcli 修改 IP 后重启失效 | 修改的是临时连接,或 NetworkManager 未接管 | 用nmcli connection modify而不是ip addr add |
| systemctl enable 报错 | 缺少 [Install] 段 | 在 unit 文件末尾添加[Install] WantedBy=multi-user.target,再daemon-reload |
| journalctl 看不到日志 | 服务以非 systemd 方式启动,或日志级别过滤 | 先确认服务由 systemd 管理;用journalctl -u <服务名> --since today |
| rpm -qf 无法查询 | 文件被修改过,或路径不对 | 用rpm -qf /etc/ssh/sshd_config查原始包文件路径;如果文件来自源码安装则无法查询 |
排查时建议按照“先看服务状态,再看日志,再看 SELinux,最后看防火墙”的顺序,不要上来就重启服务。
6. 备考最佳实践与工程习惯
6.1 每天固定演练,不贪多
RHCSA 的内容范围很固定,真正拉开差距的是熟练度。建议每天抽 30 到 60 分钟,在一台快照好的虚拟机里完成一组“任务组合”,例如:
- 创建 3 个用户、2 个组,修改 sudo 权限。
- 配置一个 LAMP 环境的 httpd 服务。
- 调整一个目录的 ACL 权限。
- 用 nmcli 修改 IP 并保证重启生效。
每次练完做一个快照或直接回滚,第二天重新来一遍,直到不需要看笔记也能顺畅完成。
6.2 刻意用英文环境
考试界面默认是英文,而很多命令、报错、配置文件的关键信息都是英文。如果平时一直在中文语言环境里练习,考试时看到英文界面会不习惯。建议练习阶段就将系统语言切换为英文:
sudo localectl set-locale LANG=en_US.UTF-86.3 先理解再记忆,优先掌握--help和 man
考试允许使用 man 手册,但时间有限。建议对每个核心命令至少知道--help中能快速找到答案的选项,不要死记硬背所有参数。比参数更重要的是思路:例如看到“新建文件自动继承组”立刻想到setgid;看到“进程占用端口”立刻想到ss -tlnp。
6.4 学会查看系统状态
很多题目表面上问的是“xxx 没生效”,实际考察的是你有没有系统化排错思路。日常练习中,养成执行完一个步骤就验证的习惯:
id <用户> ls -ld <目录> systemctl is-active <服务> curl http://localhost/确认每一步都生效了,再进入下一步。这个习惯在考试中能省下大量时间。
6.5 谨慎使用-y和rm
练习时dnf install -y没问题,但考试中如果遇到交互式确认,可以通过-y跳过。不过rm -rf这类命令没有后悔药,执行前先ls确认路径,养成“先看后删”的习惯。真实生产环境中,这条原则更重要。
6.6 定期回归基础
很多人学到 LVM、Kickstart 这些进阶内容后,反而把用户管理、权限命令忘了。RHCSA 的考试范围虽然是基础,但所有进阶题都建立在正确的用户、权限、SELinux 上下文之上。建议每周至少花 15 分钟快速过一遍基础命令。
7. 下一步怎么学
如果你已经掌握了本文中的用户、权限、软件包、systemd 和 SELinux 基础,下一步可以往这些方向继续推进:
- LVM 逻辑卷管理:创建卷组、逻辑卷、扩展文件系统。
- 磁盘分区与自动挂载:fdisk/gdisk、mkfs、/etc/fstab。
- 日志轮转与远程日志。
- 容器基础:Podman 与 rootless 容器。
- Kickstart 无人值守安装。
这正好是 Cert Prep 后续部分和 RHCE 考试会涉及的内容。先把虚拟机环境保持好,每天坚持一套组合练习,RHCSA 并没有想象中那么难。如果本文对你有帮助,可以收藏备用,后面我会继续整理 LVM、网络绑定、系统调优这些更高阶的备考内容。