#004 · 2025-07-25✓ PASS
RHCSA 学习笔记
RHEL9 环境下的 RHCSA 红帽认证系统管理员完整学习笔记,涵盖系统基础、文件管理、用户权限、网络存储、进程服务等核心考点。
RHCSA(Red Hat Certified System Administrator)是红帽认证体系中的基础认证,也是企业 Linux 运维岗位的核心证书之一。本文整理自课程复习资料,覆盖全部核心考点。
一、Linux 基础与环境搭建
1.1 学习环境搭建
- 安装 VMware 虚拟机软件
- 创建虚拟机并安装 RHEL9 系统
- 配置基础环境
关闭防火墙:
systemctl disable firewalld --now
关闭 SELinux:
vim /etc/selinux/config
# 将 enforcing 修改为 disabled
1.2 重置 root 密码
# 1. 重启系统,在启动项选择界面按 e 键
# 2. 在 linux 行末尾添加 rd.break,按 ctrl+x
# 3. 依次执行:
mount -o remount,rw /sysroot/
chroot /sysroot/
echo "新密码" | passwd --stdin root
touch /.autorelabel
exit
exit
1.3 基础命令
| 命令 | 功能 |
|---|---|
date | 查看/设置系统日期时间 |
timedatectl | 设置时区 |
pwd | 显示当前工作目录路径 |
cd | 切换目录 |
ls | 列出目录内容 |
cat /etc/redhat-release | 查看系统发行版信息 |
uname -r | 查看内核版本信息 |
ip a 或 ifconfig | 查看 IP 地址 |
1.4 关机与重启
poweroff # 关机(推荐)
shutdown --now # 关机(推荐)
init 0 # 关机(旧式)
reboot # 重启(推荐)
init 6 # 重启(旧式)
二、文件管理
2.1 文件类型
Linux 中共有七种文件类型:
| 符号 | 类型 |
|---|---|
- | 普通文件 |
d | 目录文件 |
l | 链接文件(软链接) |
c | 字符设备文件 |
b | 块设备文件 |
p | 管道文件 |
s | 套接字文件 |
2.2 查看文件
| 命令 | 说明 |
|---|---|
cat | 一次性显示全部内容(适合小文件) |
more | 向下翻页查看 |
less | 可向上/向下翻页查看 |
head | 查看文件前 10 行(默认) |
tail | 查看文件后 10 行(默认),tail -f 动态追踪 |
grep | 过滤文件内容 |
cut | 切割文件内容 |
sort | 对文件内容排序 |
uniq | 去掉文件中重复内容 |
tr | 替换文件中的字符 |
wc | 统计文件行数/词数/字节数 |
2.3 创建文件
# 创建空文件
touch filename
# 创建大文件(测试用)
dd if=/dev/zero of=testfile bs=1M count=100
# 数据流方式创建
echo "content" > file.txt
echo "append" >> file.txt
# cat 配合 EOF 创建
cat > file1 <<EOF
hello
world
EOF
# tee 创建
tee f1.txt
# 输入内容后按 ctrl+d 结束
2.4 文件操作命令
# 复制文件
cp source target
cp -r source_dir/ target_dir/
# 远程复制
scp file user@host:/path/
# 移动/重命名
mv old_name new_name
mv file /target/path/
# 删除文件
rm file
rm -rf directory # 递归强制删除
# 查找文件
whereis command # 查找二进制文件路径和文档
which command # 查找二进制文件路径
find /path -name "pattern" -type f # 按名称/类型/大小/权限查找
2.5 链接文件
# 硬链接(同一个 inode,不能跨文件系统,不能链接目录)
ln source target
# 软链接(符号链接,类似快捷方式)
ln -s source target
| 区别 | 硬链接 | 软链接 |
|---|---|---|
| inode | 相同 | 不同 |
| 跨文件系统 | 不支持 | 支持 |
| 链接目录 | 不支持 | 支持 |
| 删除源文件 | 仍可访问 | 失效 |
2.6 压缩与解压
# zip / unzip
zip archive.zip file1 file2
unzip archive.zip
# gzip / gunzip
gzip file
gunzip file.gz
# tar(最常用)
tar -czf archive.tar.gz directory/ # 压缩(gzip)
tar -xzf archive.tar.gz # 解压(gzip)
tar -cjf archive.tar.bz2 directory/ # 压缩(bzip2)
tar -xjf archive.tar.bz2 # 解压(bzip2)
tar -cf archive.tar directory/ # 仅打包
tar -xf archive.tar # 解包
2.7 数据流与重定向
| 数字 | 名称 | 说明 |
|---|---|---|
| 0 | stdin | 标准输入(键盘) |
| 1 | stdout | 标准输出(终端) |
| 2 | stderr | 标准错误输出(终端) |
command > file # 覆盖输出重定向
command >> file # 追加输出重定向
command 2> err.txt # 错误输出重定向
command &> all.txt # 正确和错误都重定向到同一文件
command > all.txt 2>&1 # 等价写法
三、用户与组管理
3.1 用户分类
| 类型 | UID/GID 范围 | 说明 |
|---|---|---|
| 超级用户 (root) | 0 | 拥有所有权限,不受权限限制 |
| 系统用户 | 1-999 | 用于运行系统进程或服务,不用于登录 |
| 普通用户 | 1000+ | 日常使用,权限受限 |
3.2 用户组分类
- 基本组(主组/私有组):每个用户只有一个基本组
- 附加组(公有组):每个用户可以有零到多个附加组
3.3 相关配置文件
/etc/passwd:用户信息,7 列(冒号分隔)
| 列 | 含义 |
|---|---|
| 1 | 用户名 |
| 2 | 密码占位符(x) |
| 3 | UID |
| 4 | GID |
| 5 | 用户描述信息 |
| 6 | 家目录 |
| 7 | 登录 Shell |
/etc/shadow:密码信息,9 列(冒号分隔)
| 列 | 含义 |
|---|---|
| 1 | 用户名 |
| 2 | 加密后的密码($算法$盐$密文) |
| 3 | 最后一次修改时间(1970-01-01 起的天数) |
| 4 | 密码最小使用天数 |
| 5 | 密码最大使用天数 |
| 6 | 密码过期警告天数 |
| 7 | 密码过期宽限天数 |
| 8 | 账号过期时间 |
| 9 | 保留字段 |
/etc/group:组信息,4 列
| 列 | 含义 |
|---|---|
| 1 | 组名称 |
| 2 | 组密码占位符 |
| 3 | GID |
| 4 | 组成员列表 |
/etc/login.defs:记录了系统相关默认值,如 umask 默认值、家目录位置等。
3.4 用户管理命令
# 创建用户
useradd username
useradd -u 1500 -g groupname -d /home/custom -s /bin/bash username
# 修改用户
usermod -l newname oldname # 修改用户名
usermod -u 700 username # 修改 UID
usermod -aG groupname username # 添加附加组
# 设置密码
passwd username
echo "password" | passwd --stdin username
# 删除用户(务必带 -r 删除家目录和邮件)
userdel -r username
# 切换用户
su - username
3.5 组管理命令
# 创建组
groupadd groupname
groupadd -g 5000 groupname
# 修改组
groupmod -n newname oldname
# 管理组成员
gpasswd -a username groupname # 添加用户到组
gpasswd -d username groupname # 从组中移除用户
# 删除组
groupdel groupname
3.6 查看登录信息
| 命令 | 说明 |
|---|---|
users | 查看当前所有登录用户 |
last | 显示当前与过去登录用户信息 |
lastlog | 查看用户最后登录日志 |
w | 显示当前登录用户及其操作 |
who | 查看当前登录用户名 |
四、权限管理
4.1 基本权限
权限格式:
rwx rwx rwx
所属者(u) 所属组(g) 其他用户(o) a = u+g+o
| 权限 | 字母 | 数字 | 说明 |
|---|---|---|---|
| 读 | r | 4 | 查看文件内容 / 列出目录 |
| 写 | w | 2 | 修改文件内容 / 在目录中创建删除 |
| 执行 | x | 1 | 执行文件 / 进入目录 |
| 无 | - | 0 | 无权限 |
# 修改权限
chmod 755 file # 数字方式:rwxr-xr-x
chmod u+x file # 符号方式:所属者加执行权限
chmod g-w,o-rwx file # 符号方式:组去写,其他全部去权
# 修改所属者和所属组
chown user file # 只改所属者
chown user:group file # 同时改所属者和所属组
chown :group file # 只改所属组
chown -R user:group dir/ # 递归修改
4.2 特殊权限
| 权限 | 字母 | 数字 | 说明 |
|---|---|---|---|
| SUID | s(属主位) | 4 | 临时以文件所有者权限执行(仅对二进制文件有效) |
| SGID | s(属组位) | 2 | 临时以文件所有组权限执行 |
| SBIT (Sticky) | t | 1 | 目录中文件只有创建者和 root 可删除 |
chmod 4755 file # 设置 SUID
chmod 2755 file # 设置 SGID
chmod 1777 dir # 设置 SBIT
4.3 ACL 权限
在不修改原有权限的基础上,为特定用户或组临时增加权限。
# 设置 ACL
setfacl -m u:username:rwx file
setfacl -m g:groupname:r-x file
# 查看 ACL
getfacl file
# 删除 ACL
setfacl -x u:username file
setfacl -b file # 删除全部 ACL
4.4 umask 掩码
管理文件和目录创建时的默认权限:
- 文件默认权限 = 666 - umask
- 目录默认权限 = 777 - umask
# 查看当前 umask
umask
# 临时设置
umask 022
# 永久设置:编辑 /etc/login.defs 中的 UMASK 值
五、网络管理
# 查看 IP 地址
ip addr show
ip a
# 查看路由表
ip route show
# 使用 nmcli 管理网络(RHEL9 推荐)
nmcli device status
nmcli connection show
nmcli connection add type ethernet con-name eth0 ifname eth0
nmcli connection modify eth0 ipv4.addresses 192.168.1.100/24
nmcli connection modify eth0 ipv4.gateway 192.168.1.1
nmcli connection modify eth0 ipv4.dns 8.8.8.8
nmcli connection modify eth0 ipv4.method manual
nmcli connection up eth0
# 修改主机名
hostnamectl set-hostname new-hostname
# 测试网络连通性
ping -c 4 8.8.8.8
六、软件管理
6.1 DNF/YUM(推荐方式)
# 安装软件
dnf install package-name
dnf install -y package-name # 自动确认
# 搜索软件
dnf search keyword
# 查看软件信息
dnf info package-name
# 更新软件
dnf update package-name
dnf update # 更新所有
# 卸载软件
dnf remove package-name
# 查看已安装
dnf list installed
# 清理缓存
dnf clean all
6.2 RPM
rpm -ivh package.rpm # 安装(不自动解决依赖)
rpm -qa # 查询所有已安装
rpm -qa | grep keyword # 按关键字过滤
rpm -qi package-name # 查看包详细信息
rpm -ql package-name # 查看包安装的文件列表
rpm -e package-name # 卸载
6.3 配置本地 YUM 仓库
在 /etc/yum.repos.d/ 目录下创建 .repo 结尾的文件:
[local-repo]
name=Local Repository
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
6.4 源码安装
# 1. 安装编译环境
dnf groupinstall "Development Tools"
# 2. 配置
./configure --prefix=/usr/local/app
# 3. 编译
make
# 4. 安装
make install
七、进程管理
7.1 基本概念
- 程序:存储在磁盘上的可执行文件(静态)
- 进程:程序在内存中运行的实例(动态)
- 线程:进程内的执行单元
7.2 进程查看
# 查看当前 shell 进程
ps
# 查看系统所有进程(BSD 风格)
ps aux
# 查看系统所有进程(标准风格)
ps -ef
# 实时监控进程
top
# 交互命令:P-按CPU排序 M-按内存排序 k-终止进程 q-退出
# 查看进程树
pstree
# 查看网络连接
ss -tunlp
netstat -tunlp
7.3 进程控制
# 按 PID 终止进程
kill PID # 发送 TERM 信号(优雅终止)
kill -9 PID # 发送 KILL 信号(强制终止)
kill -15 PID # 默认终止信号
# 按名称终止
killall process_name
pkill process_name
# 后台运行
command & # 后台运行
nohup command & # 终端关闭后继续运行
# 查看后台任务
jobs
# 将后台任务调回前台
fg %job_id
# 暂停进程
ctrl+z
# 恢复运行
bg %job_id
八、服务管理(systemd)
# 启动/停止/重启服务
systemctl start service_name
systemctl stop service_name
systemctl restart service_name
# 重新加载配置(不中断服务)
systemctl reload service_name
# 开机自启
systemctl enable service_name
systemctl disable service_name
# 查看服务状态
systemctl status service_name
# 查看服务是否运行
systemctl is-active service_name
# 查看服务是否开机自启
systemctl is-enabled service_name
# 列出所有服务
systemctl list-units --type=service
# 屏蔽服务(完全禁止启动)
systemctl mask service_name
systemctl unmask service_name
九、存储管理
9.1 磁盘分区
# 查看磁盘信息
lsblk
fdisk -l
# MBR 分区(使用 fdisk)
fdisk /dev/sdb
# n-新建分区 d-删除分区 w-保存退出 q-不保存退出
# GPT 分区(使用 gdisk)
gdisk /dev/sdb
# 使内核重新读取分区表
partprobe
9.2 格式化与挂载
# 格式化文件系统
mkfs.xfs /dev/sdb1
mkfs.ext4 /dev/sdb1
# 查看块设备信息
lsblk
blkid
# 挂载
mount /dev/sdb1 /mnt/data
mount -t xfs /dev/sdb1 /mnt/data
# 卸载
umount /mnt/data
# 永久挂载(编辑 /etc/fstab)
# /dev/sdb1 /mnt/data xfs defaults 0 0
# 查看磁盘使用情况
df -h
du -sh /path/
9.3 LVM 逻辑卷管理
LVM 三层架构:PV(物理卷)→ VG(卷组)→ LV(逻辑卷)
# 创建物理卷
pvcreate /dev/sdb1 /dev/sdc1
pvdisplay
pvscan
# 创建卷组
vgcreate vg_data /dev/sdb1 /dev/sdc1
vgdisplay
vgextend vg_data /dev/sdd1 # 扩展卷组
# 创建逻辑卷
lvcreate -n lv_data -L 10G vg_data
lvdisplay
lvextend -L +5G /dev/vg_data/lv_data # 扩展逻辑卷
# 扩展文件系统(XFS)
xfs_growfs /mnt/data
# 扩展文件系统(ext4)
resize2fs /dev/vg_data/lv_data
# 删除
lvremove /dev/vg_data/lv_data
vgremove vg_data
pvremove /dev/sdb1
9.4 RAID 磁盘阵列
# 创建 RAID(使用 mdadm)
mdadm -C /dev/md0 -l 5 -n 3 /dev/sdb1 /dev/sdc1 /dev/sdd1
# 查看 RAID 状态
cat /proc/mdstat
mdadm -D /dev/md0
# 停止 RAID
mdadm -S /dev/md0
十、Vim 编辑器
Vim 三种模式:命令模式、编辑模式、末行模式。
| 操作 | 说明 |
|---|---|
i | 进入编辑模式(光标前插入) |
a | 进入编辑模式(光标后插入) |
o | 下方新建一行进入编辑模式 |
Esc | 返回命令模式 |
:w | 保存 |
:q | 退出 |
:wq 或 ZZ | 保存并退出 |
:q! | 强制退出不保存 |
/keyword | 搜索关键字 |
dd | 删除当前行 |
yy | 复制当前行 |
p | 粘贴 |
u | 撤销 |
ctrl+r | 重做 |
:set nu | 显示行号 |
gg | 跳到文件开头 |
G | 跳到文件末尾 |
十一、综合最佳实践
- 最小权限原则:使用普通用户操作,必要时通过 sudo 提权
- 定期备份:关键配置文件定期备份到安全位置
- 日志监控:使用
journalctl查看系统日志,tail -f /var/log/messages实时监控 - 防火墙配置:使用 firewalld 管理防火墙规则
- SELinux 配合:防火墙与 SELinux 双重防护
- 软件更新:定期
dnf update保持系统安全更新