RHCE笔记

RHCE笔记

RHCE学习笔记

复习课

本地仓库:
vi /etc/yum.repos.d/

[BaseOS]
name=BaseOS
baseurl=/mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=/mnt/AppStream
gpgcheck=0
挂载
#临时
mount /dev/sr0 /mnt

#自动挂载
vi /etc/fstab

/dev/sr0     /mnt      iso9660 defaults        0 0

mount -a
常用工具安装
dnf install net-tools bash-completion wget curl vim tree -y

文件管理

[root@localhost ~]#echo hello world >> t1.txt 

[root@localhost ~]#cat > t2.txt <<EOF
> hello
> world
> python
> java
> EOF 

[root@localhost ~]#cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF
元数据
文件元数据(metadata)是文件系统中描述文件本身属性(而非文件内容)的数据
  。它们存储在 inode 中,主要包含:
  
  常见元数据字段:
  - 权限(rwxr-xr-x)— 属主、属组、其他人的读/写/执行权限
  - 所有者(uid/gid)— 文件的用户和组归属
  - 时间戳:
    - atime — 最后访问时间
    - mtime — 最后修改时间(内容变更)
    - ctime — 最后状态变更时间(权限/所有者/链接数等变更,非内容)
  - 文件大小 — 字节数
  - 链接计数 — 硬链接数量
  - 文件类型 — 普通文件、目录、符号链接、设备文件等
  - 扩展属性(xattrs)— 用户自定义或系统附加的键值对(如 SELinux 上下文)

  查看元数据使用 stat 命令:

  stat filename

  可以用 ls -l(部分信息)或 getfattr -d(扩展属性)。

  元数据与文件内容 分开存储:内容在 data blocks 中,元数据在 inode table 中。rm删除文件时,只是释放 inode 和 data block,但在某些文件系统下可通过 debugfs等工具恢复(前提是 inode 和数据块未被覆盖)。
[root@localhost ~]# stat a.txt 
  File: a.txt
  Size: 2518            Blocks: 8          IO Block: 4096   regular file
Device: 253,0   Inode: 100871888   Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2026-07-19 16:57:45.679395790 +0800
Modify: 2026-07-19 16:57:45.679395790 +0800
Change: 2026-07-19 16:57:45.682395782 +0800
 Birth: 2026-07-19 16:57:45.679395790 +0800
字段 含义
File a.txt 文件名,存储在目录项 (dentry),不在 inode 中
Size 2518 文件内容 2518 字节(~2.5KB)
Blocks 8 占用 8 个 512B 扇区 = 4096B(XFS 最小分配 4KB)
Slack 1578 Size 不足一个 block 产生的碎片空间,无法被其他文件使用
IO Block 4096 文件系统 I/O 块大小 4KB
File type regular file 普通文件(Linux 七种文件类型之一)
Device 253,0 主:次设备号,对应 /dev/mapper/rhel-root
Inode 100871888 元数据索引编号,文件系统内唯一
Links 1 硬链接计数,=1 表示只有一个文件名指向此 inode
权限 (八进制) 0755 0 (特殊) + 7 (属主) + 5 (属组) + 5 (其他人)
权限 (符号) -rwxr-xr-x 普通文件,属主 rwx (7),属组 r-x (5),其他人 r-x (5)
UID 0 → root 文件属主(超级管理员 uid=0)
GID 0 → root 文件属组(root 组)
SELinux User unconfined_u SELinux 非受限用户
SELinux Role object_r 客体角色(文件 / 目录等对象)
SELinux Type admin_home_t 管理员家目录文件标签
SELinux Level s0 最低敏感级别
atime 16:57:45.679 最后访问时间,读取时更新(cat/vim打开/less)
mtime 16:57:45.679 内容修改时间,写入时更新(echo / 重定向/vim :w)
ctime 16:57:45.682 元数据变更时间,chmod/chown/mv 时更新
birth 16:57:45.679 文件创建时间,XFS 支持记录

stat a.txt 文件元数据解析.png

文件类型
标识字符 文件类型全称 简要说明
- 普通文件(regular file) 文本文件、程序二进制文件、日志、压缩包等常规数据文件
d 目录文件(directory) 等同于文件夹,用于存放和管理下级文件与子目录
l 符号链接(symbolic link) 软链接,文件快捷方式,指向原文件路径
c 字符设备文件(character device) 按字符流式读写外设,例如键盘、串口、终端 /dev/tty
b 块设备文件(block device) 按数据块批量读写存储硬件,例如硬盘、分区 /dev/sda
s 套接字文件(socket) 用于本机进程间双向通信,典型示例 /run/docker.sock
p 命名管道(FIFO/named pipe) 单向半双工进程间数据传递,先进先出管道通信
文件系统

Linux 常见文件系统分类

传统磁盘文件系统

适用于磁盘分区持久化存储,是服务器、物理机主流落地文件系统。

类型 核心特点 适用场景
ext4 Linux 经典主流文件系统,极致成熟稳定,完全向后兼容 ext2/ext3;日志机制完善,兼容性极强、故障率低 Linux 通用默认选择,个人服务器、普通业务、中小型分区通用场景
xfs 专为高负载优化,支持高并发读写、超大文件读写性能优异;支持在线扩容,元数据日志机制高效 RHEL/CentOS 系统默认文件系统,大数据、数据库、高并发业务、超大分区场景
btrfs 支持写时复制(COW),内置快照、数据压缩、校验和纠错功能;支持灵活的分区扩容、缩容,容错性强 需要数据快照备份、文件压缩、数据校验、轻量化容错的业务场景
ZFS 源自 Solaris,功能强于 btrfs;自带存储池管理、数据校验、自动修复、快照、重复数据删除,数据完整性拉满 企业级存储、重要数据留存、对数据安全与完整性要求极高的场景

特殊用途文件系统

非磁盘持久化文件系统,多用于系统内核交互、临时存储、容器、网络挂载等特殊场景。

类型 核心说明
tmpfs 基于内存+Swap 实现的临时文件系统,读写速度极快,重启数据全部丢失,用于存放临时缓存文件
proc 挂载在 /proc,虚拟文件系统,专门用于暴露内核进程、系统运行状态、硬件参数等实时信息
sysfs 挂载在 /sys,用于统一暴露系统设备、硬件驱动、总线信息,支撑硬件管理与识别
devtmpfs 挂载在 /dev,自动管理系统设备节点,实现硬件设备的识别与调用
overlay 联合挂载文件系统,是 Docker 容器镜像分层存储的核心,实现镜像多层叠加、读写层分离
nfs/cifs 网络文件系统,支持跨主机文件共享,多用于局域网、服务器集群文件互通

文件系统核心区别

精准区分 ext4、xfs、btrfs、ZFS 的核心特性差异

对比维度 详细特性对比
日志机制 ext4:完整日志;xfs:仅元数据日志,性能更高;btrfs/ZFS:COW 机制替代传统日志
最大存储上限 ext4:16TB~1EB;xfs:最高8EB;btrfs:最高16EB,超大分区支持最优
写时复制(COW) btrfs、ZFS 原生支持;ext4、xfs 无原生 COW 能力
在线容量调整 xfs:仅支持在线扩容,不支持缩容;ext4、btrfs:支持在线扩容、缩容
数据压缩 btrfs、ZFS 内置文件压缩功能;ext4、xfs 无原生压缩,需依赖上层工具实现
快照功能 btrfs、ZFS 原生支持快照备份;ext4、xfs 无原生快照,需借助 LVM 补充实现

查询磁盘文件系统

排查设备文件系统类型,推荐按顺序执行,精准排查,过滤冗余设备:

  1. 查看当前目录所属文件系统:df -hT .
  2. 查看所有块设备文件系统(过滤容器/快照虚拟设备):lsblk -f | grep -v loop
  3. 查看所有设备完整文件系统、UUID 信息:blkid
  4. 查看内核实时挂载设备表:cat /proc/mounts | grep ^/dev
vim快捷操作
1、光标移动

shift+g:将光标定位到文件最后一行

gg:将光标定位到文件和一行

w:每按一次光标向后移动一个单词的位置

b:b个单词的位置

l:每按一次光标向后移动一个字符位置

h:每按一次光标向前移动一个字符位置

j:每按一次光标向下移动一行

k:每按一次光标向上移动一行

shift+$:将光标移到当前行的最后

shift+^:将光标移到当前行的最前面

2、模式切换

i:将命令模式切换为编辑模式,所输入的字符在光标之前

I:将命令模式切换为编辑模式,并且将光标移到所以行的最前面

a:将命令模式切换为编辑模式,会将光标向后移到一位

A:将命令模式切换为编辑模式,并且将光标移到所以行的最后面

o:将命令模式切换为编辑模式,会在光标所在行之下产生一个新行

O:将命令模式切换为编辑模式,会在光标所在行之上产生一个新行

esc:将编辑模式切换为命令模式

3、文件保存

w:将文件写入(保存)

w filepath:将文件另存为指定路径下

q:退出但不保存

q!:强制退出且不保存

wq:保存并退出

shift+z+z:保存并退出

4、查找和替换

/keyword:根据关键字来查找,按 n 向下查找,按 N 向上查找

:%s/被替换的内容/将替换的内容/g

用户管理

Linux 用户和组

基本概念

  • 用户(User):每个进程都有一个属主,决定它能访问哪些文件
  • 组(Group):用户的集合,用于批量管理权限
配置文件
文件 用途
/etc/passwd 用户账户信息
/etc/shadow 用户密码(加密存储)
/etc/group 组信息
/etc/gshadow 组密码

用户分类
类型 UID 范围 说明
root 0 超级管理员,不受权限限制
系统用户 1-999(RHEL) 运行服务的专用账户,如 chronysshd
普通用户 1000+ 日常登录的用户

查看当前用户

whoami        # 当前用户名
id            # 当前用户完整信息(uid/gid/所属组)

/etc/passwd 格式详解

每行一个用户,7 个字段用冒号分隔:

root:x:0:0:root:/root:/bin/bash
  ↑   ↑ ↑ ↑  ↑     ↑      ↑
  |   | | |  |     |      └─ 默认 shell(/bin/bash)
  |   | | |  |     └──────── 家目录(/root)
  |   | | |  └────────────── 备注 GECOS(root)
  |   | | └───────────────── GID 主组编号(0)
  |   | └─────────────────── UID 用户编号(0)
  |   └───────────────────── 密码占位符(实际在 /etc/shadow)
  └───────────────────────── 用户名(root)

x 表示密码加密存储在 /etc/shadow 中——/etc/passwd 所有人可读,/etc/shadow 仅 root 可读。


/etc/group 格式详解
root:x:0:
wheel:x:10:user1,user2
  ↑   ↑ ↑    ↑
  |   | |    └─ 附加成员列表(逗号分隔)
  |   | └────── GID(10)
  |   └──────── 密码占位符
  └───────────── 组名(wheel)

主组 vs 附加组

每个用户有且只有一个主组(primary group),记录在 /etc/passwd 的 GID 字段。

用户可以属于零个或多个附加组(supplementary groups),记录在 /etc/group 中。

区别

场景 使用哪个组
创建文件时,文件的属组 主组
访问文件时,拥有的权限 主组 + 所有附加组

示例

$ id
uid=1000(zhang) gid=1000(zhang) groups=1000(zhang),10(wheel),1001(docker)
#                     ↑ 主组                    ↑ 附加组
  • zhang 创建的文件属组 = zhang
  • zhang 能访问 wheel 组和 docker 组的权限资源

增删改查命令

用户操作

useradd
Options:
-b:指定用户家目录的基础父目录
-c:添加用户备注信息(GECOS字段)
-d:手动指定用户家目录完整路径
-D:查看/修改useradd新建用户时的默认配置
-e:设置账号失效过期日期,格式YYYY-MM-DD
-f:设置密码过期后多少天账号停用(宽限期)
-g:指定用户**主组**(初始登录组)
-G:指定用户多个附加附属组,多组用逗号分隔
-h:查看帮助信息
-m:自动创建用户家目录(常用)
-M:不自动创建用户家目录
-N:不自动创建与用户名同名的私有主组
-o:允许创建UID重复的用户
-p:填写加密后的密码,一般不直接使用
-r:创建系统用户,无家目录、无过期时间、UID偏小
-s:指定用户登录Shell,如/bin/bash、/sbin/nologin
-u:手动指定用户UID编号
-U:创建和用户名同名的用户组(默认行为)

eg:useradd -m -d /home/myhome -c "测试账号" -s /bin/bash test
命令 作用
useradd zhangsan 创建用户
passwd zhangsan 设置/修改密码
usermod -aG wheel zhangsan 将用户添加到附加组
userdel -r zhangsan 删除用户(-r 同时删家目录和邮件池)

组操作

命令 作用
groupadd devops 创建组
groupmod -n newname oldname 修改组名
groupdel devops 删除组
gpasswd -a user group 将用户加入组
gpasswd -d user group 从组移除用户

查询操作

命令 作用
id zhangsan 查看用户详情
groups zhangsan 查看用户所属所有组
getent passwd 查看所有用户(兼容网络数据库)
getent group 查看所有组
cat /etc/passwd | cut -d: -f1 列出系统所有用户名

文件权限关联
-rwxr-xr--
 ↑  ↑  ↑
 |  |  └─ Others(其他人)
 |  └──── Group(属组)
 └─────── Owner(属主)
 
# 特殊权限:
SUID:(所属者 x-->s)
这个特殊权限是只对可执行文件有效,它的作用是临时以文件的创建者身份来运行,运行结束后权限回收——简单来说就是临时提权。
SGID:(所属组 x-->s)
这个特殊权限是对可执行文件或者目录有效,它的作用是临时以文件或目录的所属者身份去运行,运行结束后回收。
SBIT:(目录 x-->t)
这个特殊权限是只对目录有效,它的作用是如果目录有这个特殊权限,好么在这个目录下所创建的目录和文件只能是创建者或者该目录的创建者才能删除。

修改归属

chown  zhangsan:devops  file.txt   # 同时改属主:属组
chown  zhangsan         file.txt   # 只改属主
chgrp  devops           file.txt   # 只改属组

实用技巧

# 查看当前登录的用户
who

# 查看自己所属组
groups

# 切换用户
su - zhangsan                # 切换并加载环境变量
sudo -u zhangsan cmd         # 以 zhangsan 身份执行单条命令

# 查看文件创建时的默认权限掩码
umask                        # 如 0022
# 文件默认权限 = 666 - umask = 644(rw-r--r--)
# 目录默认权限 = 777 - umask = 755(rwxr-xr-x)

Read more

Linux 运维文件写入操作

Linux 运维文件写入操作

面向 Linux 运维/SRE 的文件写入操作参考手册。既讲每条命令怎么用,也讲它背后的机制(为什么这么行为),配真实输出示例与边界情况,最后给出常见陷阱速查表与标准动作模板。 目录 1. 总览:运维"写文件"的全景 2. Shell 重定向:机制与基础符号 3. 重定向顺序的坑:为什么 2>&1 > f 不行 4. 文件描述符与 exec:持久打开、交换、关闭 5. 防止误覆盖:noclobber 与 >| 6. Here 文档与 Here 字符串 7. tee:

By Admin
Linux 定时任务(附学习指南)

Linux 定时任务(附学习指南)

Linux 系统的定时任务(Scheduled Tasks)是运维和开发中最常用的自动化手段之一。系统中最核心的两套定时任务工具是 cron(定时器) 和 at(一次性任务队列)。下面从原理到实战逐层展开。 一、cron:周期性定时任务 1. cron 是什么 cron 是一个守护进程(daemon),负责在约定的时间点自动执行用户定义的任务。它对应的服务名在大多数发行版中是 crond,相关的命令和文件包括: 命令/文件 作用 crond cron 守护进程 crontab 用户管理自己的定时任务 /etc/crontab 系统级定时任务(注意有用户字段,格式不同) /etc/cron.d/ 系统级定时任务的扩展目录(每个文件类似 /etc/crontab) /etc/cron.hourly/、daily/、weekly/

By Admin
自定义你的DSH

自定义你的DSH

DSH 界面主题定制插件 给 DSH 换一套界面主题 把设计 Token 变成所见即所得的「DIY 主题」设置面板。配色、字体、背景、阴影、圆角,改完立即生效,不用写一行代码。 GitHub 仓库 更多内容 DeepSeek Harness(DSH)是 DeepSeek 推出的 AI 编程助手框架。通过 dsh web 启动浏览器界面,就能和 AI 对话、读写文件、执行命令、规划任务。功能强大,但外观一直比较朴素,默认只有浅色、深色、跟随系统三档。 我写了一个插件 dsh-ui-customizer,把界面定制做成了所见即所得的「主题设置面板」:进入 设置

By Admin