☰
RHCSA第一次作业实操指南:命令行、用户与SELinux避坑要点
2026/10/9 6:48:37 网站建设 项目流程

第一次接触 RHCSA 的人,最容易把"作业"当成"刷题"。尤其是第一次作业,看起来就是改改主机名、建几个用户、配个 IP,似乎没什么技术含量。但我带过好几轮备考的学员,实话实说,第一次作业翻车率反而最高。原因很简单:题目都能看懂,命令也背了不少,但一旦要求"在纯命令行环境下、不看图形界面、用最规范的姿势把结果落地",很多人的操作就变形了。

这篇文章我就拿一份典型的 RHCSA 第一次作业来拆解。不聊虚的考试政策,只说实操——这份作业到底要做什么、每步命令为什么这么写、做完之后怎么验证,以及那些老师不会明说但评分系统一定会检查的细节。如果你是刚学 Linux 的小白,这篇文章可以帮你把第一次作业做得明明白白;如果你已经在备考 RHCSA,也建议对照自查一遍,把坏习惯扼杀在第一次作业里。

1. 拿到RHCSA第一次作业,先搞清楚评分机制再动手

1.1 作业不是练习册,是在模拟"无人监考的实操环境"

RHCSA 考试全程在虚拟机里操作,题目就是一段需求描述。比如"新建用户 tony,UID 为 1823,主组为 production,补充组为 staff,密码为 redhat"。没有图形界面,没有提示下一步,你需要在命令行里完成所有操作。考完后由评分系统自动检查结果,它不看过程、不看命令历史,只看最终状态。

我见过不少人平时练习喜欢开着图形界面点鼠标,或者用 root 登录后为所欲为。这些在第一次作业里就要改掉。第一次作业的核心目的,就是让你提前适应"命令行的、结果导向的"工作方式。老师不会因为你"最后好像弄出来了"就给分,评分系统只认配置文件的最终内容和系统里的实际状态。所以在做每一项操作前,先问自己:评分系统会怎么检查这一项?它读取哪个文件、执行哪条命令来验证?想清楚这一点,操作思路会完全不一样。

1.2 环境准备的两个硬性要求

第一,系统必须是带 systemd 的 RHEL 兼容发行版。官方考试用 RHEL,平时练习用 Rocky Linux、AlmaLinux 或者 CentOS Stream 都可以,命令没差别。也有人用 Ubuntu 练手,我强烈不建议——很多命令和目录结构不一样,等你切回 RHEL 环境会非常别扭,你将在第一次作业里花费双倍时间。

第二,至少准备两台虚拟机,或者一台练习机加一个快照。为什么?因为第一次作业里最常出的问题就是"配置网络失败"或者"改坏系统文件导致无法开机"。如果你只有一台机器,改坏了就得从头装系统,非常浪费时间。我刚带班的时候,有个学员在练习配置静态 IP 时把网卡参数写错,重启后 SSH 连不上,又不会进单用户模式改回来,最后只能重装。从那以后我就要求所有人都必须先拍快照,或者准备备用机。

虚拟机软件方面,VMware Workstation、VirtualBox 或者 KVM 都可以,关键是网卡模式要选对。建议用 NAT 或者桥接模式,保证宿主机能 SSH 进虚拟机。另外,安装系统时如果你的学习环境没有图形界面需求,选"最小化安装"就行,这样更贴近考试环境,也能逼自己掌握命令行操作。

2. 环境搭好后,先把三件套配置到位:主机名、静态IP、本地源

2.1 主机名和 hosts 解析:第一次作业的"送分题"也藏坑

RHCSA 第一次作业里几乎必有一道改主机名的题。比如要求"将系统主机名改为 server1.example.com"。很多人的第一反应是编辑/etc/hostname文件,这确实有效,但不够规范。

正确的命令是:

hostnamectl set-hostname server1.example.com

这条命令会同时更新/etc/hostname并且立即生效,不需要重启。如果你在真实考试环境里,系统可能会检查/etc/hostname文件内容,也可能执行hostnamectl status来查看,两种方式都指向同一个结果,所以用命令操作最稳妥。

这里有个细节要提醒:hostnamectl set-hostname只会设置主机名,不会自动修改/etc/hosts。RHCSA 题目经常要求"服务器能通过主机名解析到自己",所以通常还要编辑/etc/hosts:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.10.10 server1.example.com server1

不配置 hosts 的后果是,当你执行ping server1.example.com或者某些服务解析自身主机名时,可能会解析到 127.0.0.1 或者根本无法解析,后续配置服务时就会出现奇怪的问题。这个知识点虽然基础,但每次都有学员漏掉。

2.2 静态 IP 配置:用 nmcli 而不是改文件

"将 ens160 配置为静态 IP 地址 192.168.10.10/24,网关 192.168.10.1,DNS 为 192.168.10.1"——这是 RHCSA 作业里的标配题目。配置网络的方法有很多,但第一次作业我希望你直接练成用nmcli。

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

为什么推荐nmcli而不是直接编辑/etc/sysconfig/network-scripts/ifcfg-ens160?因为在 RHEL 8/9 里,NetworkManager 是默认的网络管理服务。手动改配置文件如果和 NetworkManager 的状态不同步,重启后配置可能被覆盖或者不生效。nmcli的底层实际上也是在改配置文件,但它同时会通知 NetworkManager 重载,确保配置一致。

有一个超级常见的坑:改了 IP 之后忘记执行nmcli connection up,或者执行了 up 但用的是nmcli device disconnect之后再 up,导致网络断掉。如果 SSH 连接因此断开,你只能去宿主机控制台操作。所以我的习惯是,改网络配置前先拍快照,改完后立即测试连通性:

ping -c 3 192.168.10.1

如果你发现网络起不来,不要慌。先在宿主机用ip addr查看网卡状态,确认是不是网卡名不对(比如你记成 ens160 但实际是 ens192)。使用nmcli device status可以快速确认所有网卡和连接状态,这个命令在排错时非常好用。

2.3 dnf 软件源:后面所有安装题的命脉

RHCSA 作业阶段通常会要求配置软件仓库,因为后续有很多"安装 httpd"、"安装 vsftpd"之类的题目。如果 dnf 源是坏的,后面的题全军覆没。

典型题目是:配置一个本地仓库或者远程仓库,仓库 ID 为 baseos 和 appstream,GPG 校验关闭。

vim /etc/yum.repos.d/local.repo
[BaseOS] name=BaseOS baseurl=http://192.168.10.1/repos/BaseOS enabled=1 gpgcheck=0 [AppStream] name=AppStream baseurl=http://192.168.10.1/repos/AppStream enabled=1 gpgcheck=0

写完后执行:

dnf clean all dnf makecache

这里我想多说一句gpgcheck=0。很多培训机构会直接告诉你考试环境就这样写,没问题。但你要理解:gpgcheck=1是生产环境的安全要求,作业里之所以关闭,是因为本地仓库往往没有对应的 GPG 密钥。如果你在真实服务器上也照抄gpgcheck=0,那就是给自己留安全隐患。所以作业归作业,心里得有数,知道为什么这样配置。

验证仓库是否可用,最简单的办法:

dnf repolist

如果能列出 baseos 和 appstream 两个仓库,说明配置成功。下一步随便装一个包试试:

dnf install -y httpd

这一步非常关键。有些人配置完仓库,dnf repolist是正常的,但一安装包就报错,往往是因为防火墙把 80 端口或者访问仓库服务器的流量拦了,或者是仓库服务器端本身服务没起来。第一次作业就把这个流程跑通,后面你会省很多心。

3. 用户、组和密码策略:RHCSA 第一次作业的核心主战场

3.1 用 useradd 命令时的参数顺序和细节

用户管理是 RHCSA 考试的重头戏,第一次作业也往往占最大比重。"创建用户 tony,UID 为 1823,主组为 production,补充组为 staff,密码为 redhat"——这种题看起来简单,实际很容易出错。

我的推荐命令:

groupadd production groupadd staff useradd -u 1823 -g production -G staff -m -s /bin/bash tony echo redhat | passwd --stdin tony

拆开解释:

  • -u 1823:指定 UID。如果不指定,系统会自动分配,评分时检查id tony输出就会发现 UID 对不上。
  • -g production:指定主组。注意区分主组和补充组。主组只能有一个,用-g;补充组可以有多个,用-G。
  • -G staff:指定补充组。如果题目要求加两个补充组,用逗号分隔,比如-G staff,devops。
  • -m:创建用户的同时创建家目录。有些同学做作业时用了useradd tony不加-m,某些发行版默认不创建家目录,后面题目要求"在 tony 家目录下创建文件"时就会找不到路径。
  • -s /bin/bash:指定登录 shell。考试环境里如果用户需要能登录执行命令,shell 必须是 /bin/bash 或类似的有效 shell,默认可能是 /bin/sh 或者 /sbin/nologin,所以最好显式指定。

关于密码,我推荐用echo redhat | passwd --stdin tony。虽然 RHCSA 考试环境里--stdin选项是可用的,但有些同学用的是其它发行版,这个选项可能不支持。如果你在 Ubuntu 上练习,请改用chpasswd:

echo "tony:redhat" | chpasswd

记住:passwd命令设置完密码后,如果题目里还有"首次登录必须修改密码"要求,需要额外执行:

chage -d 0 tony

这条命令把用户最后一次修改密码的日期设为 0,强制用户下次登录时修改密码。第一次作业里可能不考这个,但既然学到这里,顺手记住没坏处。

3.2 组的创建与用户从属关系:附加组别搞混

组管理相关的坑主要在"从属关系"上。我见过不少学员创建完用户后,用usermod -g staff tony想把用户加进 staff 组,结果发现id tony输出里主组变成了 staff,production 反而不见了。原因就是-g是改主组,改附加组应该用-aG:

usermod -aG staff tony

-a是 append(追加)的意思,不加-a直接-G会把用户从现有附加组里全部移除,只保留你要设置的组。这个参数是 RHCSA 作业最经典的失分点之一,我特意把它放在这里重点提醒。

另外,如果你需要向一个已存在的组里添加用户,可以用:

gpasswd -a tony staff

这条命令不会像usermod那样容易出错,因为它的语义就是"把用户加入组",不需要记忆-a的追加逻辑。做作业时用哪条都可以,但心里要清楚区别。

3.3 批量创建用户时的高效做法

有些老师的第一次作业会布置"批量创建用户"。比如:

for user in alice bob charlie; do useradd -m -s /bin/bash "$user" echo "$user:redhat" | chpasswd done

chpasswd可以批量读取"用户名:密码"格式的输入,非常适合脚本化操作。我在实际工作中批量初始化测试环境时也是这么干的。不过作业阶段,我更建议你手动逐个执行,加深对参数的记忆,批量写法看一眼了解即可。

4. 权限、目录结构和 SELinux:那些在作业里被忽略的隐藏分

4.1 数字权限和特殊权限位:setgid 漏掉就扣分

RHCSA 作业里经常出现类似这样的题:"创建目录 /data/project,属主为 root,属组为 project,权限为 2770,该目录下新建的文件自动属于 project 组。"

第一眼看上去,不就是mkdir、chown、chmod三件套吗?但重点在 2770 这个数字上。2 开头的权限表示 setgid 位。setgid 的作用是:在这个目录下新建的文件和子目录,其属组自动继承目录的属组,而不是创建者的默认属组。

操作如下:

mkdir -p /data/project chown root:project /data/project chmod 2770 /data/project

验证 setgid 是否生效,看权限位的s:

ls -ld /data/project # drwxrws--- 2 root project 6 Jan 1 00:00 /data/project

注意属组权限里的s,不是x。如果输出是drwxrwx---,说明 setgid 没设置成功。

为什么要考这个?因为 RHCSA 考试非常实用,setgid 是 Linux 系统管理里"多用户协作目录"的标准方案。作业阶段就把它练熟,比临考前突击记得牢。

如果题目要求 ACL,比如"让 tony 用户对 /data/project 有读写权限,但不要改目录属组",用:

setfacl -m u:tony:rwx /data/project getfacl /data/project

ACL 不是第一次作业的必考项,但知道setfacl基本用法会让你在做权限题时多一个灵活的手段。

4.2 SELinux:打开它,别关它

说到 RHCSA,就绕不开 SELinux。很多人装系统时会直接禁掉 SELinux,理由是"反正练习环境不需要"。这个想法大错特错。RHCSA 考试环境的 SELinux 是强制开启的(Enforcing),评分系统里很多题目就是考查你能否在 SELinux 开启的情况下把服务配置好。如果在作业阶段就关掉 SELinux,那等于放弃练习考试中最难也最值分的部分。

第一次作业对 SELinux 的要求很简单:确认它处于 Enforcing 状态,并且知道怎么查看上下文。

getenforce # 输出 Enforcing

如果输出是 Disabled,说明系统安装时在/etc/selinux/config里写死了关闭状态,这个必须修改文件后重启才能启用;如果是 Permissive,可以用setenforce 1临时切换到 Enforcing。

SELinux 的另一个基础操作是查看文件的 SELinux 上下文:

ls -Z /data/project

RHCSA 考试中典型的 SELinux 题目是"把 /var/www/html 下文件的上下文改为 httpd_sys_content_t",常见做法:

chcon -R -t httpd_sys_content_t /var/www/html # 或者 restorecon -Rv /var/www/html

chcon是临时修改上下文,restorecon是按照策略默认值恢复。两者应用场景不同:chcon适合把上下文改成一个非默认的类型;restorecon适合你之前改错了、想恢复默认的情况。第一次作业至少把这两个命令记下来,后面学到 httpd、ftp 服务时会反复用到。

4.3 防火墙别粗暴关闭

和 SELinux 类似,很多学员为了方便,直接systemctl stop firewalld并systemctl disable firewalld。练习时确实省事,但考试时防火墙默认是开启的,你需要知道怎么放行端口而不是关闭防火墙。

第一次作业如果涉及安装和启服务(比如配置了 httpd),请用正规姿势:

firewall-cmd --permanent --add-service=http firewall-cmd --reload

或者放行指定端口:

firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --reload

记住--permanent和--reload要配对使用。只加--permanent不 reload,当前会话不生效;只 reload 不加--permanent,重启后失效。

5. 交作业前的标准自查流程:与其等批改,不如先当考官

5.1 重启大法:所有配置都得经得起 reboot

我第一次做 RHCSA 模拟作业时,老师给了一个建议:所有配置完成后,重启虚拟机,然后逐一检查。这个建议救了我无数次。因为很多配置当时生效,重启后就失效了——网络接口没设自动连接、服务没设开机自启、用户家目录权限不对导致无法登录,各种问题都是重启后才暴露的。

重启后你要快速检查这几项:

hostnamectl status # 主机名是否保留 ip addr show ens160 # IP 是否还是静态配置 systemctl status firewalld # 防火墙规则是否还在 id tony # 用户和组是否还在 ls -ld /data/project # 特殊权限位是否还在

这组命令基本覆盖了第一次作业的主要考点。我当时做作业时,重启后果然发现网络没起来——因为用nmcli配置静态 IP 时,忘记设置connection.autoconnect yes。这件事让我明白,评分的最终环境是一个"重启过的安静状态",你的配置必须在这个状态下依然正确。

5.2 用命令输出验证,而不是用眼睛瞅

提交作业前,很多人都栽在"自以为做对了"上。原因是图形界面看一眼或者ls输出差不多就认为没问题了。正确的做法是使用精确的验证命令,逼着自己看关键字段。

我整理了一个自查清单,你可以直接抄:

检查项验证命令需要看到的正确结果
主机名hostnamectl status --static题目要求的主机名
静态 IPip -4 addr show ens160inet 后是要求的 IP/24
网关ip route show defaultdefault via 要求的网关
DNScat /etc/resolv.conf或nmcli dev show ens160要求的 DNS 地址
用户 UIDid tonyuid=1823(tony)
附加组id tony或groups tony包含 staff
目录权限ls -ld /data/projectdrwxrws--- 且属组为 project
setgid 传递touch /data/project/test后ls -l /data/project/test文件属组为 project
SELinux 状态getenforceEnforcing
SELinux 上下文ls -Z /data/project期望的 context 类型
软件包rpm -q httpd显示完整版本号
服务状态systemctl is-enabled httpdenabled
防火墙firewall-cmd --list-allhttp 服务或对应端口已放行

这套验证思路不只是为了交作业,它本身就是 RHCSA 考试的核心能力——理解"用什么命令能证明系统状态满足要求"。

5.3 出错后的第一反应:看日志,别重装

我知道很多人做作业时一报错就想着重装系统或者恢复快照。这种思路要不得。第一次作业就是训练排错能力的好机会,最常见的报错和处理我列一下:

配置网络后ping不通,先分三路排查:

ip addr show dev ens160 # 确认网卡是否有 IP ip route show # 确认路由和默认网关 ping -c 3 192.168.10.1 # 确认到网关的连通性

如果到网关不通,多半是 IP 或者掩码配错了;如果到网关通但到外部 IP 不通,检查 DNS 和默认路由:

ping -c 3 8.8.8.8 # 绕过 DNS 测外网连通性

用户创建后无法登录,先看密码策略:

passwd -S tony # 查看密码状态 /etc/shadow 里第二字段的开头 # 看看是否有加密密码

没有加密密码就说明密码没设置成功,重新执行passwd tony。

SELinux 导致服务无法读取文件(典型的Permission denied),第一步要看日志:

ausearch -m avc -ts recent

这条命令能列出最近的 SELinux 拦截记录,根据记录的上下文类型判断是标签错了还是布尔值没开。第一次作业不要求你能完全读懂 AVC 日志,但至少知道去哪看,别把 SELinux 问题误判成文件权限问题。

6. 做完作业之后:把第一次的标准动作固化成肌肉记忆

第一次作业的真正价值,不是得分,而是让你把"查看需求 → 执行操作 → 验证结果"这套链路内化。我见过太多学员在作业阶段不注重顺序,想到哪做到哪,结果考场上东一榔头西一棒子,效率极低。

以配置静态 IP 为例,固化后的标准流程是:先nmcli connection show看当前连接名,再 modify,再 up,最后ip addr show验证。每一步之间思路清晰,不会有"我刚才改到哪了"的迷茫感。

RHCSA 的实操题量不小,平时作业养成的习惯就是考试时的本能反应。第一次作业就把验证动作练成本能,后面学 LVM、服务管理、存储挂载时,你才能把精力集中在新技术上,而不是反复纠结基础命令。

按我个人的经验,能做对和能快速做对是两回事。第一次作业不需要追求极限速度,但一定要保证每一步都是规范的。规范操作你也许会觉得慢,但熟练之后它反而是最快的路径——因为错误少了,返工自然就少了。把这份作业认真做完、按自查表验证、重启后再检查一遍,你就已经比大多数备考者起跑得更稳了。

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

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

立即咨询