拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

RHCSA结课作业攻略:Linux系统管理从LVM到SELinux实战

RHCSA结课作业攻略:Linux系统管理从LVM到SELinux实战

1. 结课作业到底是什么,以及它为什么值得认真对待

1.1 一门课程的收尾,一个实战的起点

RHCSA(红帽认证系统管理员)的结课作业,说实话跟大学里那种写篇报告、做个PPT的结课作业完全是两回事。它更像是一场针对真实生产场景的模拟考核:给你一台(或者几台)已经装好系统的虚拟机,规定时间内完成一系列系统管理任务,从用户创建、权限调整、存储配置,到服务部署、SELinux排错、防火墙放行,每一步都要在命令行里真正敲出来、跑通、验证通过。

我当时听到这门课要交结课作业时,心里其实有点没底。原因很简单:RHCSA的知识点覆盖面很广,从Linux基础命令到LVM逻辑卷管理,从systemd服务管理到网络配置,从Podman容器到KVM虚拟化,每个模块单独拎出来都能讲上好几个课时。而结课作业不会像平时的实验手册那样一步一步告诉你怎么做,它只给你最终需求,比如"给服务器配置一个静态IP,确保重启后依然生效"——至于用nmtui还是nmcli,用配置文件还是命令,全靠你自己判断。

这门课对自己最大的价值在于,它把零散的知识点串成了一条完整的运维链条。平时上课做实验,每节课都是独立的:这节课学useradd,下节课学lvcreate,再下节课学firewall-cmd。但真实工作里,没有人会告诉你"现在只允许你操作用户管理这一块"。结课作业就是逼你把用户、权限、存储、网络、服务、安全这些模块在同一个环境里协同运作起来,就像组装一台机器,缺了哪个螺丝都转不起来。

1.2 RHCSA到底考什么

如果你准备过RHCSA(对应考试编号EX200),应该知道它的考试范围并不是"Linux高级运维",而是一个系统管理员最基础、最日常的工作。红帽官方考试目标大致包括:

  • 理解并使用基本工具:文件管理、shell环境、文本处理、归档压缩
  • 创建和管理用户与组:用户属性、密码策略、sudo授权
  • 管理文件权限:常规权限、特殊权限(SUID/SGID/Sticky)、ACL访问控制列表
  • 配置和管理存储:分区、格式化、挂载、LVM逻辑卷、Swap交换空间
  • 管理系统服务:systemd单元管理、开机自启、服务状态排查
  • 配置网络:静态IP、主机名解析、网络接口管理(nmcli)
  • 管理软件包:dnf安装、更新、卸载、仓库配置
  • 配置安全:firewalld防火墙、SELinux上下文与布尔值
  • 编写脚本与自动化:简单shell脚本、cron计划任务
  • 容器管理(新版考试):使用Podman运行、管理、自启动容器
  • 虚拟化(旧版考试范围,视考试版本而定):KVM虚拟机创建与管理

注意这里没有任何花哨的东西。不会考你内核编译,不会考你集群架构,更不会考你Kubernetes编排。RHCSA的核心定位是"确保你有能力管理一台独立的Red Hat系服务器"。但恰恰是这个"基础"让它变得难——因为基础意味着没有任何容错空间,一个小配置写错,整个服务就起不来,而考试环境下你几乎没有重新开始的余地。

1.3 作业与考试的关系:别把它当成走过场

很多同学对结课作业的态度是"应付一下",觉得反正最终目标是考证,作业交不交无所谓。我劝你千万别这么想。以我的经验来看,结课作业跟真实考试之间的差距,可能只隔着一张试卷。我那次作业里的题目,有大约七成跟后来实际考试中的考点重叠:同样的用户创建带UID和组要求,同样的LVM扩容后自动挂载,同样的httpd服务配好SELinux上下文才能访问网页。练作业就是在练考试,这不是套话,而是实打实的规律。

更关键的是,结课作业通常有明确的验收标准,比如"重启后服务依然正常""挂载信息写入fstab""防火墙规则永久生效"。这些要求其实就是在模拟考试的判分逻辑。RHCSA考试本身有一个特点:不看过程,只看结果。你命令敲得再漂亮,如果重启后服务挂了,那一题就是零分。结课作业如果能养出"每次操作完都主动重启验证"的习惯,你离通过考试就近了一大半。

2. 学习路径与实验环境搭建思路

2.1 我的四周学习路线图

准备RHCSA不需要拉长战线,但也不能临时抱佛脚。我当时给自己定的计划是四周,前提是每天能保证三小时左右的实操时间。第一周回归基础,把文件操作、权限、用户管理这些"肌肉记忆型"知识点练到不用看笔记也能顺手敲出来;第二周集中突破存储和systemd,这俩是考试中的大头,而且概念偏抽象,光靠背不行,必须动手做;第三周主攻SELinux、防火墙、网络配置这些"安全三件套";第四周做整合模拟训练,每天完整过一遍结课作业的模拟题,卡时间,练手速,找漏洞。

学习节奏上,我特别想强调一个体会:RHCSA不适合用"看视频+记笔记"的方式学。你可以用视频快速建立整体认知,但真正让你通过考试的是手指的记忆。一个典型的例子是LVM扩容,步骤看起来很简单——pvcreate、vgcreate、lvcreate、mkfs、mount、写fstab——但每一步的参数、顺序、检查点,如果你不在真机上反复敲上五六遍,上了考场一紧张就全乱了。

2.2 实验环境怎么搭

搭建实验环境本身也是一项技术活,强制要求:你没法用Windows的WSL或者虚拟机模拟"完整版RHEL体验",因为RHCSA考试的判分环境就是一台标准RHEL服务器,任何发行版上的差异都有可能造成操作习惯的偏差。

我在结课阶段用的是VMware Workstation装了一台RHEL 9虚拟机,分配4GB内存、3个CPU核心、80GB磁盘。为什么是80GB?因为RHCSA涉及LVM、Swap、分区挂载这些存储实验,磁盘给小了会处处掣肘。网络模式一定要选"仅主机模式"或者"NAT模式",并保证能正常连上外网,因为安装软件包(比如httpd、podman)离不开dnf仓库。

如果你有条件,建议直接多开两台虚拟机,一台当"服务器",一台当"客户端",专门用来测SSH登录、NFS共享、Web访问这些跨主机的服务。考试环境里经常是两三个系统之间互相访问,提前适应多机协同操作对考试帮助很大。

2.3 模拟练习的关键选择

模拟题的选择上,我踩过一些弯路。最初我在网上找了一大堆RHCSA模拟题,有的版本太老(还在用system-config-network),有的难度偏离真实考试(加了很多根本没用的高级知识点)。后来我的经验是:不要贪多,选一到两套口碑比较好的模拟题反复做,每套题至少完整做三遍,做到平均每道题能在五分钟内完成且重启后依然生效。

另外一个很关键的选择是善用"快照"(Snapshot)。每完成一个阶段的配置,比如配好了网络或者搞定了一个LVM卷,就给虚拟机打个快照。这样后面做实验搞坏了系统,可以秒级回滚,不用重装。RHCSA的学习过程本质上就是不断"搞破坏—修复—再搞破坏"的过程,快照是你最好的安全网。

3. 核心知识点拆解与实操要点

3.1 用户、权限与ACL:最容易被扣分的部分

用户管理是RHCSA的入门题,但恰恰是很多人的丢分区。别笑,用户创建听起来太简单了——useradd加上一个用户名回车,搞定。可考试很少这么温柔,它通常会这样出题:"创建用户harry,设置UID为1300,所属组为sysadmin,并保证该用户的登录Shell为/bin/bash,在系统30天后强制要求他修改密码。"

这道题考察的知识点其实很集中:useradd的-U选项、-g选项、-s选项,以及chage命令。你需要知道useradd的默认UID范围(1000开始)不满足题目要求时必须显式指定UID;你需要知道创建用户时如果不指定组,系统会创建一个同名私有组,而题目要求的是加入已有组,这时候必须用-g而不是-G。

ACL(访问控制列表)也是一个经典考点。场景通常是:某个文件属于root:root,权限是750,现在要求让特定用户tom拥有读写权限,但不能改变文件属主,也不能把权限改成777让所有人可读。这时唯一正确的答案就是setfacl -m u:tom:rwx。这里有个非常容易踩的坑:ACL设置完成后,ls -l看到的权限位后面会多出一个加号(如-rwxr-x---+),有的同学会以为这是异常状态,其实这正是ACL生效的标志。别忘了用getfacl验证。

经验价值比较大的一个点:几乎所有权限题做完之后,都要用另一个普通用户去实际访问一次,验证权限符合题目要求,而不是只看ls的输出。这个习惯能帮你抓住大量"看似正确、实际无效"的错误配置。

3.2 存储与LVM:从分区到逻辑卷的完整链路

存储管理是RHCSA的重头戏,而且是最能拉开分数差距的部分。考试不只是考"你会不会用fdisk",它更想确认你有没有完整的逻辑思维能力。

比如LVM扩容题,常见场景是这样:系统里有一块新加的10GB磁盘,要求把它做成一个逻辑卷,挂载到/data目录,文件系统类型为ext4,要求重启后依然挂载。完整步骤链是:fdisk分区(或者直接用整块磁盘做PV)→ pvcreate → vgcreate → lvcreate -L指定大小或者-l100%FREE → mkfs.ext4格式化 → mkdir建挂载点 → mount挂载 → 写入/etc/fstab。这里每一步都有考点:

  • 如果用fdisk分区,需要按t修改分区类型为8e(Linux LVM),涻命令p打印分区表检查结果
  • pvcreate后要用pvs或pvdisplay确认PV创建成功
  • lvcreate时要确认卷组里有足够的空闲空间,用vgs或vgdisplay查看Free空间
  • mkfs指定文件系统类型时,ext4和xfs的命令参数不一样,别搞混
  • /etc/fstab的写法有套路:推荐使用UUID而不是设备名,因为设备名在重启后可能变化

Swap交换空间的创建也是RHCSA的保留题目。它相对简单,但有一个频繁出现的坑:用swapon -a激活交换分区后,还需要写入/etc/fstab(类型是swap)才能保证永久生效。有些同学会用mkswap格式化完就结束,结果reboot以后swap直接消失,白白丢分。

3.3 systemd与网络:重启不变性才是王道

systemd服务管理和网络配置看起来是两件事,但在RHCSA的语境里它们有一个共同的灵魂——持久化。考试题目如果让你"配置httpd服务开机自启",最终判分验证很可能就是重启机器后确认服务状态为running。同样,网络题"配置静态IP,重启后不丢配置",考察的就是你有没有把配置固化到/etc/NetworkManager/system-connections里,而不是只执行一个ip addr add临时生效。

systemd这块需要掌握的核心命令其实不超过十个:systemctl status/start/stop/restart/reload/enable/disable/is-enabled,以及systemctl list-unit-files --type=service查看所有单元的开机启动状态。

网络配置我的经验是:尽量用nmcli搞定一切,别去手工编辑ifcfg文件。nmcli的语法确实有点绕,比如配置静态IP的完整命令是:

nmcli con mod ens160 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.1 ipv4.method manual nmcli con up ens160

不要从ens160那一行直接修改,那样很容易把NetworkManager弄糊涂。

3.4 SELinux与防火墙:安全配置的守门员

SELinux和firewalld是RHCSA的"安全双雄",也是最容易让初学者心态崩溃的两个模块。但如果掌握了背后的逻辑,它们其实比存储和网络简单得多——因为它们讲究的是规则,不是灵活性。

SELinux有一个非常经典的核心观念:任何进程访问任何文件,都要经过三大检查——类型(type)、布尔值(boolean)、文件上下文(file context)。RHCSA考试最常见的SELinux题型是:"某服务无法访问文件,请你诊断并修复,要求保持SELinux的enforcing模式。"这种题的常规解法是:

# 查看SELinux状态 getenforce # 查看文件上下文 ls -Z /var/www/html/index.html # 恢复正确的上下文 restorecon -Rv /var/www/html/

还有一种题型是改变SELinux布尔值。比如让Apache能够访问用户家目录(httpd_enable_home_dirs),或者让vsftpd能写入上传目录(ftp_home_dir、allow_ftpd_full_access)。用setsebool -P httpd_enable_home_dirs on设置并持久化,然后getsebool验证。

firewalld的考点集中在service、port、permanent这三个概念上。考试经常会出"放行HTTP服务,让外部能访问Web",对应命令是firewall-cmd --permanent --add-service=http,然后firewall-cmd --reload。注意:如果不加--permanent,规则只对当前运行时生效,重启就没了;同样,加完永久规则后必须reload,光有规则文件没加载等于没放行。验证用firewall-cmd --list-all,一眼就能看出当前活动的区域里有没有放行相应服务。

4. 结课作业的完整实现过程

4.1 作业要求还原

我这份结课作业模拟了一套综合实战环境,一共八道题,限时90分钟,要求在server1.example.com这台服务器上完成。我把题目整理成了下表,你看一眼就知道它覆盖面有多广:

题号任务要求考察重点
1创建用户alice和bob,alice UID=1500,bob加入developers组,密码有效期为30天用户管理、chage
2新建逻辑卷lvdata,大小8G,挂载到/data,格式为xfs,开机自动挂载LVM、fstab
3配置ens160静态IP 192.168.100.50/24,网关192.168.100.1,重启不丢失nmcli、NetworkManager
4安装并启动httpd,创建首页/var/www/html/index.html,内容为RHCSA Lab,防火墙放行HTTP访问dnf、systemd、firewalld
5修复Web服务无法访问文件的问题,保持SELinux enforcing模式SELinux上下文
6创建计划任务:每天凌晨2点执行/bin/backup.shcrontab
7用tar归档/etc目录并压缩为gzip格式到/backups/etc-backup.tar.gztar、gzip
8使用podman运行容器,设置宿主机开机自启podman、systemd

这些题目单看每一道都不算难,但合在一起需要你在90分钟内连续跳转于用户管理、磁盘操作、网络配置、服务管理、安全模块之间,非常考验熟练度和脑子的清醒程度。

4.2 第一题:用户创建与密码策略

创建用户alice并指定UID是纯命令操作,几乎不用思考:

useradd -u 1500 alice

但紧接着的"密码有效期30天"需要两步走。第一步用passwd alice给用户设置一个符合要求的初始密码,第二步用chage来设置有效期:

chage -M 30 alice

这里有个容易遗漏的细节:检查是否生效要root用户执行chage -l alice,它会显示"密码过期时间/上次更改密码日期"等信息。如果你只是设置了密码但没设chage,系统默认的策略(通常是99999天)不会因为你的"自觉"而改变,这是一类典型的"我以为配好了其实没配好"的题。

创建bob并加入developers组时,必须确认developers组已经存在。如果组不存在要先groupadd developers,否则useradd -G developers会报错。然后:

useradd -G developers bob passwd bob

然后用id bob确认用户所属组已经包含developers。有些同学习惯用usermod -aG developers bob来追加组,这在bob还没创建时是无意义的,先后顺序要理清楚。

4.3 第二题:LVM逻辑卷创建与自动挂载

这道题是整个作业里耗时最长、步骤最多的。我给自己定的策略是:先用lsblk查看新磁盘的名称和大小,确认设备路径是/dev/sdb,再开始操作:

# 创建PV pvcreate /dev/sdb # 创建VG vgcreate vgdata /dev/sdb # 创建LV lvcreate -L 8G -n lvdata vgdata # 格式化 mkfs.xfs /dev/vgdata/lvdata # 创建挂载点并临时挂载 mkdir /data mount /dev/vgdata/lvdata /data # 写入fstab实现永久挂载 echo "/dev/vgdata/lvdata /data xfs defaults 0 0" >> /etc/fstab

我特意没有用"-l 100%FREE"来创建LV,而是指定了-L 8G,因为题目指定了大小。如果你手滑把8G写成了10G,而卷组总容量只有10G,mkfs是能过,但后续创建快照或者扩展别的卷就麻烦了。

写入fstab后的验证动作必不可少。一种经验是先用mount -a测试fstab语法是否正确,然后reboot一次确认自动挂载真实生效。考试时很多人不敢重启,害怕起不来,但如果不重启验证,fstab里哪怕写错一个UUID也会在判分时暴露。fstab的判断标准其实也很简单:系统能正常启动到登录界面,/data目录里有内容,df -hT显示/dev/vgdata/lvdata名为xfs且挂载点正确。

4.4 第四题:Web服务配置与防火墙放行

httpd的安装配置本身不复杂:

dnf install -y httpd systemctl enable --now httpd echo "RHCSA Lab" > /var/www/html/index.html

这里有个前后顺序的讲究:如果先写HTML再启动服务,完全没有问题;但如果先启动服务,再去写/var/www/html/index.html,有可能因为SELinux上下文不对导致访问时403。不过别慌,这正是第五题要解决的问题。

防火墙放行HTTP服务:

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

验证是否放行成功用firewall-cmd --list-all,确认services列表里包含http。很多人会在这一步漏掉--permanent或者忘记reload,这样一来,当前shell里服务确实通了,但重启后防火墙规则全部还原,http访问直接超时,这种错误最可惜。

4.5 第五题:SELinux问题排查与修复

这道题的经典陷阱在于:你(或者系统)先把index.html放到了/var/www/html里,但它的SELinux上下文可能还是普通文件的默认值,没被正确标记为httpd_sys_content_t。Apache访问它时,SELinux就会拒绝读取,浏览器端表现就是403 Forbidden。

我的排查思路是:

# 查看文件上下文 ls -Z /var/www/html/index.html # 如果类型是admin_home_t之类,就执行 restorecon -Rv /var/www/html/ # 再用ls -Z检查是否变成httpd_sys_content_t

如果restorecon没有效果,就需要用semanage fcontext来修改默认规则:

semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?" restorecon -Rv /var/www/html/

最终验证要"落地"到实际访问上,用curl http://localhost/,看到页面输出RHCSA Lab,才算彻底解决。常见的误区是搞定了SELinux上下文,但忘了firewalld还没放行,导致服务依然无法访问。每次修完安全模块的问题,记得把SELinux状态、防火墙规则、服务状态三个维度都检查一遍。

4.6 作业验收与自我检查清单

做完八道题不代表作业就交成功了。我给自己列了一个验收清单,每一道题都按照"能不能重新启动后仍然正常工作"的标准来复查:

  • 用户alice和bob能正常登录吗?chage -l显示30天有效期吗?
  • /data目录挂载了吗?df -hT输出正常吗?重启后还在吗?
  • ip addr show显示静态IP是192.168.100.50吗?
  • curl http://localhost有响应吗?服务是enabled状态吗?
  • getenforce显示Enforcing吗?curl测试真的通吗?
  • crontab -l显示定时任务吗?/bin/backup.sh有执行权限吗?
  • /backups/etc-backup.tar.gz存在吗?tar -tzf能列出完整文件列表吗?
  • podman ps显示容器运行吗?systemctl status container-name显示enabled吗?

整套检查做下来大概需要十到十五分钟,但这十五分钟的价值远高于多做一套模拟题。考试判分看的就是这些"重启后依然成立"的结果,养成这种检查习惯,你会发现考试时心里踏实很多。

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

5.1 我踩过的那些坑

第一个让我印象特别深的坑是fstab写错UUID导致系统起不来。那次我临时挂载LVM卷用mount命令成功了,就顺手把设备路径/dev/vgdata/lvdata写进了fstab,结果重启后系统掉进了救援模式。原因在于我的内核参数或设备枚举顺序变化导致LV设备节点还没准备好,挂载就失败了。后来我学乖了,一律用blkid /dev/vgdata/lvdata查UUID,把UUID写进fstab。UUID的好处是稳定,设备路径可能变,UUID不会变。

第二个坑是SELinux布尔值修改后没持久化。我执行setsebool httpd_enable_home_dirs on给Web服务放行家目录访问,当时能用,但重启后失效。复查才发现我少加了-P参数。setsebool不带-P只改运行时值,加了-P才能把改动写入/etc/selinux/targeted/booleans.local。这类"当时能用、重启失效"的问题在RHCSA的学习里特别典型,因为考试判分一定会考持久性。

第三个坑是网络配置时用了ip命令而非nmcli。有次实验我图省事,直接ip addr add 192.168.100.50/24 dev ens160,IP立刻生效,但NetworkManager毫不知情,重启后配置全部丢失。从那以后我养成了一个习惯:所有网络配置一律通过nmcli或者编辑/etc/NetworkManager/system-connections/下的配置文件,绝不用ip命令做"宿命式"配置。

5.2 考试环境的几个隐蔽规则

基于我实际参与考试的经验,这里补充几个RHCSA考场里非常容易踩的隐藏规则。

第一,root密码不是考试给你的,而是你在考场里自己设置的。进入系统前你会拿到一个root密码的提示,登录后第一件事是修改密码并妥善记住。有些同学考场上慌了,改完密码以后忘了自己改成了什么,后面题目要用root操作时直接锁死,这属于非技术性翻车,太可惜。

第二,考试评分系统并不看你敲过的命令,它只在你交卷后检查系统的最终状态。这意味着"我执行过""我试过"这类口头证明毫无意义,系统只认结果。所以做完任何题目,都请站在一个陌生管理员的角度去检查这台机器:它重启后是什么状态?服务还活着吗?文件还有效吗?

第三,网络服务和防火墙题要特别注意"测试时用的源地址"。考试环境里,判分机可能从不同于你本地测试的IP段访问你的服务,firewalld如果只放行了固定IP,判分机就会访问超时。正确做法是permanent放行整个服务或端口,而不是用--add-rich-rule放行单个源地址。

5.3 几件容易被忽略的小事

再分享几个从日常实验中总结出来的小技巧,它们单独拿出来都不起眼,但关键时刻能救你一命。

第一,安装软件包前先dnf makecache。考试如果要求你安装httpd、vsftpd或者podman,这些包往往不在默认安装列表里。dnf仓库如果没有良好的缓存,安装过程可能要等很久,考场里时间就是分数。提前把常用包的依赖关系搞清楚,或者至少熟练使用dnf install -y,不要让"确认依赖是Y还是n"这种事浪费你的注意力。

第二,做LVM实验前先用lsblk和blkid看一遍现有磁盘状态。很多事故都是因为新磁盘上残留旧分区表或者旧文件系统导致的。如果发现磁盘上已经有分区(比如/dev/sdb1),再去做pvcreate /dev/sdb会报错。正确做法是确认磁盘完全裸奔,或者使用fdisk删除所有分区重新建立。

第三,养成写完配置就重启一次的习惯,尤其是在课程的最后阶段。我第一次完整做完一套模拟题后不敢重启,怕环境起不来。后来狠下心重启,结果发现fstab写错、SELinux布尔值没持久化、防火墙规则没加载,一次性暴露了三个问题。相反,每次重启都能帮我提前暴露"隐藏问题",练到后期,我反而期待重启了。这套"重启验证法"可以说是RHCSA学习中性价比最高的习惯。

根据我个人操作中的体会,RHCSA的结课作业真正考验的不是你记住了多少条命令,而是你在混乱、限时、多服务协作的环境下,能否保持清晰的思路,能否用最少的操作实现"重启不变"的目标。每次做完作业,把系统重启一遍,看到所有服务都老老实实起来、所有数据都在,那种踏实感其实比考试通过带来的快乐还实在。如果你也正在准备RHCSA,把这个方法用起来,你会在考场里感谢自己平时的这份较真。

返回列表