深入理解Linux文件系统和日志分析

news/2024/5/18 19:37:20

目录

一.inode与block

1.inode与block概述

1.1.文件数据包括元信息与实际数据

1.2.文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节

1.3.block(块)

1.4.inode(索引节点)

2.inode内容

2.1.inode包含文件的元信息

2.2.用stat命令可以查看某个文件的inode信息

2.3.Linux系统文件三个主要的时间属性

2.4.目录文件的结构

2.5.用户通过文件名打开文件时,系统内部的过程

2.6.查看inode号码的方法

3.文件仓储小结

3.1.硬盘分区后的结构

3.2.访问文件的简单流程

4.inode大小

4.1.inode也会消耗硬盘空间

4.2.格式化文件系统时确定inode的总数

4.3.使用df -i命令可以查看每个硬盘分区的inode总数和已使用的数量

5.inode的特殊作用

6.通过inode号删除rm常规方法删除不掉的文件

二.硬链接和软链接

1.链接文件

1.1.硬链接

1.2.软链接

三.恢复误删除的文件

1.恢复EXT类型的文件

1.1.编译安装extundelete软件包

安装依赖包

配置、编译及安装

1.2.模拟删除并执行恢复操作

2.恢复XFS类型的文件

2.1.xfsdump命令格式

2.2.xfsdump备份级别(默认为0)

2.3.xfsdump常用选项

2.4.xfsdump使用限制

四.相关实操

1.示例EXT

1.1.添加并查看新硬盘

1.2.开辟主分区,建立ext3文件系统

1.3.安装extundelete 以及涉及到的工具

1.4.删除ext3文件系统中的文件

创建2个文件ab

查看文件系统/dev/sdb1下存在哪些文件,i 节点是从 2 开始的,2 代表该文件系统最开始的目录

将两个ext3文件删除

1.5.恢复删除ext3文件系统中的文件

1.6.查看结果

2.示例XFS

2.1.创建xfs系统文件环境

2.2.安装xfsdump

2.3.备份整个分区

2.4.模拟数据丢失

2.5.恢复操作

3.总结:

五.日志文件

1.日志的功能

2.日志文件的分类及其说明

2.1.内核及系统日志

2.2.用户日志

2.3.程序日志

2.4.日志保存位置

2.5.主要日志文件介绍

3.内核及系统日志

3.1.由系统服务rsyslog统一管理

3.2.日志消息级别

3.3.日志记录的一般格式

4.用户日志分析

4.1.日志分析工具的引入

5.程序日志分析

5.1由相应的应用程序独立进行管理

分析工具

文本查看、grep过滤检索、Webmin管理套件中查看

awk、sed等文本过滤、格式化编辑工具

Webalizer、Awstats等专用日志分析工具

6.journalctl日志管理工具

6.1.journalctl 日志管理工具的简介

6.3.查看内核日志(不显示应用日志)

6.4.查看系统本次和上一次启动的日志

6.5.显示尾部指定行数的日志

6.6.查看某个服务的日志

6.7.查看指定进程的日志

6.8.查看指定用户的日志


一.inode与block

1.inode与block概述

在Linux系统中一切皆文件,因此目录也是一种文件。一个文件的文件名是放在目录中的,文件数

据存储在block(块)中,存文件元信息(比如文件的创建者、创建日期、文件大小、文件权限

等)的区域就叫做inode。因此,一个文件必须占用一个inode,并且至少占用一个block

1.1.文件数据包括元信息与实际数据

1.2.文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节

1.3.block(块)

  • 连续的八个扇区组成一个block(4K)
  • 是文件存取的最小单位

1.4.inode(索引节点)

  • 中文名为“索引节点”,也叫i节点
  • 用于存储文件元信息

2.inode内容

2.1.inode包含文件的元信息

  • 文件的字节数
  • 文件拥有者的USER ID(不包含文件名)
  • 文件的GROUP ID
  • 文件的读、写、执行权限
  • 文件的时间戳
  • 有关文件的其他数据

2.2.用stat命令可以查看某个文件的inode信息

ls  -i    stat  文件路径

2.3.Linux系统文件三个主要的时间属性

  • ctime(change time)

最后一次改变文件或目录(属性)的时间

  • atime(access time)

最后一次访问文件或目录的时间

  • mtime(modify time)

最后一次修改文件或目录(内容)的时间

2.4.目录文件的结构

  • 目录也是一种文件
  • 目录文件的结构
文件名1inode号码1
文件名2

inode号码2

............
  • 每个inode都有一个号码,操作系统用inode号码来识别不同的文件
  • Linux系统内部不使用文件名,而是用inode号码来识别文件
  • 对于用户,文件名只是inode号码便于识别的别称

2.5.用户通过文件名打开文件时,系统内部的过程

  1. 系统找到这个文件名对应的inode号码
  2. 通过inode号码,获取inode信息
  3. 根据inode信息,找到文件数据所在block,读出数据

2.6.查看inode号码的方法


ls -i命令:查看文件名对应的inode号码ls -i aa.txtstat命令:查看文件inode信息中的inode号码stat aa.txt

3.文件仓储小结

3.1.硬盘分区后的结构

3.2.访问文件的简单流程

  1. 用户访问文件时
  2. 通过文件名找到对应的inode号
  3. 通过inode号获取inode信息
  4. 根据inode信息判断用户是否有权限
  5. 有则指向对于的数据block并读取数据,无则拒绝访问

4.inode大小

4.1.inode也会消耗硬盘空间

  • 每个inode的大小
  • 一般是128字节或256字节

4.2.格式化文件系统时确定inode的总数

4.3.使用df -i命令可以查看每个硬盘分区的inode总数和已使用的数量

df -i

5.inode的特殊作用

由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象

  • 当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
  • 移动或重命名文件时,只改变文件名,不影响inode号码
  • 打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名 

6.通过inode号删除rm常规方法删除不掉的文件

find /opt  -inum inode号 -deletefind /opt  -inum inode号 -exec rm -rf {} \;find /opt  -inum inode号| xargs rm -rf

二.硬链接和软链接

1.链接文件

  • 为文件或目录建立链接文件
  • 链接文件分类
软链接(符号链接)硬链接
删除原文件后失效仍旧可用
使用范围适用于文件或目录只可用于文件
保存位置与原始文件可以位于不同的文件系统中必须与原始文件在同一个文件系统(如一个Linux分区)内

1.1.硬链接

ln 源文件 目标位置

1.2.软链接

ln [-s] 源文件或目录…… 链接文件或目标文件位置

提示:软硬链接具体可看之前的博客

三.恢复误删除的文件

1.恢复EXT类型的文件

extundelete 是一个开源的 Linux 数据恢复工具,支持 ext3、ext4文件系统。(ext4只能在centos6

版本恢复)

1.1.编译安装extundelete软件包

安装依赖包

配置、编译及安装

1.2.模拟删除并执行恢复操作

2.恢复XFS类型的文件

CentOS 7 系统默认采用 xfs类型的文件,xfs 类型的文件可使用 xfsdumpxfsrestore 工具进行备

份恢复

2.1.xfsdump命令格式

xfsdump -f 备份存放位置 要备份的路径或设备文件

2.2.xfsdump备份级别(默认为0)

  • 0:完全备份
  • 1-9:增量备份

2.3.xfsdump常用选项

  • -f:指定备份文件目录
  • -L:指定标签 session label
  • -M:指定设备标签 media label
  • -s:备份单个文件(后面不能直接跟路径)

2.4.xfsdump使用限制

  • 只能备份已挂载的文件系统
  • 必须使用root权限才能操作
  • 只能备份XFS文件系统
  • 备份后的数据只能让xfsrestore解析
  • 不能备份两个具有相同UUID的文件系统

四.相关实操

1.示例EXT

extundelete 是一个开源的 Linux 数据恢复工具,支持 ext3、ext4文件系统。(ext4只能在

centos6版本恢复),本示例模拟ext3文件系统损坏,借助extundelete,修复文件数据

1.1.添加并查看新硬盘

1.2.开辟主分区,建立ext3文件系统

1.3.安装extundelete 以及涉及到的工具

yum -y install e2fsprogs-devel e2fsprogs-libs

cd /xx01

tar xf extundelete-0.2.4.tar.bz2 
cd extundelete-0.2.4/
yum install -y gcc gcc-c++ make

./configure --prefix=/usr/local/extundelete && make && make install
ln -s /usr/local/extundelete/bin/* /usr/bin/

1.4.删除ext3文件系统中的文件

echo 123 > a.txt
echo 123 > b.txt
创建2个文件ab

extundelete /dev/sdb1 --inode 2
查看文件系统/dev/sdb1下存在哪些文件,i 节点是从 2 开始的,2 代表该文件系统最开始的目录
rm -rf a.txt
rm -rf b.txt
将两个ext3文件删除

1.5.恢复删除ext3文件系统中的文件

umount /xx01
extundelete /dev/sdb1 --restore-all

1.6.查看结果

ls
ls RECOVERED_FILES/

2.示例XFS

CentOS 7 系统默认采用 xfs类型的文件,xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进

行备份恢复,目前市面上并没有开源的xfs文件恢复工具,但是利用备份恢复依旧是最优的选择方

案。本次实验就是模拟对重要的xfs文件进行备份,在误删后,进行恢复

2.1.创建xfs系统文件环境

fdisk /dev/sdb
partprobe
mkfs -t xfs /dev/sdb1
mkdir /date
mount /dev/sdb1 /date/
cd /date
cp /etc/passwd ./
mkdir test
touch ./test/a

2.2.安装xfsdump

rpm -qa | grep xfsdump
yum install -y xfsdump

2.3.备份整个分区

xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump_sdb1 -M sdb1]

2.4.模拟数据丢失

cd /data/
rm -rf ./*

2.5.恢复操作

xfsrestore -f /opt/dump_sdb1 /date/

3.总结:

两个实验都展示了重要数据丢失后的恢复手段,但是第二个实验比第一个完成的更加顺利,数据保

存的更加完整

五.日志文件

1.日志的功能

  • 用于记录系统、程序运行中发生的各种事件
  • 通过阅读日志,有助于诊断和解决系统故障

2.日志文件的分类及其说明

2.1.内核及系统日志

  • 由系统服务 rsyslog 统一进行管理,日志格式基本相似
  • 主配置文件 /etc/rsyslog.conf

2.2.用户日志

  • 记录系统用户登录及退出系统的相关信息

2.3.程序日志

  • 由各种应用程序独立管理的日志文件,记录格式不统一

2.4.日志保存位置

  • 默认位于:/var/log目录下

2.5.主要日志文件介绍

日志种类位置功能描述
内核及公共消息日志/var/log/messages记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息
计划任务日志/var/log/cron记录crond计划任务产生的事件信息
系统引导日志/var/log/dmesg记录Linux系统在引导过程中的各种事件信息
邮件系统日志/var/log/maillog记录进入或发出系统的电子邮件活动
用户登录日志/var/log/secure记录用户认证相关的安全事件信息
/var/log/lastlog记录每个用户最近的登录事件(二进制格式)
/var/log/wtmp记录每个用户登录、注销及系统启动和停机事件(二进制格式)
/var/run/btmp记录失败的、错误的登录尝试及验证事件(二进制格式)

3.内核及系统日志

3.1.由系统服务rsyslog统一管理

  • 软件包:rsyslog-7.4.7-16.el7.x86 64
  • 主要程序:/sbin/rsyslogd
  • 配置文件:/etc/rsyslog.conf

3.2.日志消息级别

级号消息级别说明
0EMEGR紧急会导致主机系统不可用的情况
1ALERT警告必须马上采取措施解决的问题
2CRIT严重比较严重的情况
3ERR错误运行出现错误
4WARNING提醒可能会影响系统功能的事件
5NOTICE注意不会影响系统但值得注意
6INFO信息一般信息
7DEBUG调试程序或系统调试信息等

3.3.日志记录的一般格式

more  /var/log/messages    //以查看message目录为例子

  • 时间标签:消息发出的日期和时间
  • 主机名:生成消息的计算机的名称
  • 子系统名称:发出消息的应用程序的名称
  • 消息:消息的具体内容

4.用户日志分析

4.1.日志分析工具的引入

user查看当前用户名称
who查看当前登录的用户、终端、登录时间、IP地址
W查看当前登录的用户、终端、IP地址、登录时间、占用CPU进程、进程等
last命令用于查询成功登录到系统的用户记录
lastb命令用于查询登录失败的用户记录

5.程序日志分析

5.1由相应的应用程序独立进行管理

Web服务:/var/log/httpd/

  • access_log ——记录客户访问事件
  • error_log ——记录错误事件

代理服务:/var/log/squid/

  • access.log、cache.log
分析工具
文本查看、grep过滤检索、Webmin管理套件中查看
awk、sed等文本过滤、格式化编辑工具
Webalizer、Awstats等专用日志分析工具

6.journalctl日志管理工具

6.1.journalctl 日志管理工具的简介

日志管理工具journalctl是centos7上专有的日志管理工具,该工具是从messages这个文件里读取信

息。Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalctl一个命令,查看

所有日志(内核日志和应用日志)

日志的配置文件是/etc/systemd/journald.conf

6.2.查看所有日志(默认情况下,只保存本次启动的日志)

journalctljournalctl -r(-r表示倒序,从尾部看)

6.3.查看内核日志(不显示应用日志)

journalctl -k

6.4.查看系统本次和上一次启动的日志

journalctl -b  [-0]journalctl -b -1(需更改设置,如上次系统崩溃,需要查看日志时,就要看上一次的启动日志)

6.5.显示尾部指定行数的日志

journalctl -n 20 [-f]

6.6.查看某个服务的日志

journalctl -u nginx.service [-f]

6.7.查看指定进程的日志

journalctl _PID=1

6.8.查看指定用户的日志

journalctl _UID=0  --since today

http://www.mrgr.cn/p/74618868

相关文章

军工单位安全内网文件导出,怎样做到严密的安全管控?

军工单位是指承担国家下达的军事装备、产品研制、生产计划任务的企、事业单位,主要包括电子工业部、航空工业总公司、航天工业总公司、兵器工业总公司、核工业总公司、船舶工业总公司、中国工程物理研究院及各省国防工业办公室等。 军工单位的特点主要体现在以下几个方面: 承…

Vue3中使用无缝滚动插件vue3-seamless-scroll

官网:https://www.npmjs.com/package/vue-seamless-scroll 1、实现效果文字描述: 表格中的列数据进行横向无缝滚动,某一列进行筛选的时候,重新请求后端的数据,进行刷新 2、安装:npm i vue3-seamless-scrol…

Keil和VSCode协同开发STM32程序

系列文章 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. 配置环境 2. 测试打开工程 3. 测试编译工程 随着项目的复杂度上升,开发者不仅需要强大的硬件支持,还需要一个高效和灵活的开发环境。 vscode是一款集成大量可以便携开发插件的代码…

爬虫js逆向(python调用js学习)

首先介绍pyexecjs的使用 PyExecJs 是一个python 库,用于在 Python 环境中执行javaScript代码。它实际上是对 Execs 库的 Python 封装,Execls 本身是一个通用的 JavaScript 运行环境的抽象层。使用PyExecJs,你可以在Python 中执行JavaScript代码,而无需启动一个完整的JavaSc…

维基百科、百度百科和搜狗百科词条的创建流程

随着网络的发展,百度百科、搜狗百科、维基百科等百科网站已经成为大众获取知识的重要途径。因为百科具有得天独厚的平台优势,百科上的信息可信度高,权威性强。所以百科平台也成为商家的必争之地。这里小马识途聊聊如何创建百度百科、搜狗百科…

贪吃蛇(C语言版)

在我们学习完C语言 和单链表知识点后 我们开始写个贪吃蛇的代码 目标:使用C语言在Windows环境的控制台模拟实现经典小游戏贪吃蛇 贪吃蛇代码实现的基本功能: 地图的绘制 蛇、食物的创建 蛇的状态(正常 撞墙 撞到自己 正常退出&#xf…

智能组网怎么样?

智能组网技术的出现,使得网络连接更加便捷和智能化。无论我们身处何地,只要有网络覆盖,就能轻松进行远程连接和访问。智能组网到底如何实现的呢?本文将就智能组网的优势进行探讨,以便更好地了解其特点和应用场景。 【天…

idle的下载和环境配置(python)

1.进入官网:https://www.python.org/ 2.downloads->windows选择对应版本(这里我选择3.10.0是因为听说10比较稳定) 3. 找到刚下载的Python程序安装包,双击打开,运行安装程序。 直接点击下一步,直至安装成功,点击完成就可以了。如果想切换安装目录,可以在那一步换一下安…

自己手动在Linux上实现一个简易的端口扫描器

背景 常常听到网络攻击有一个东西叫做端口扫描器,可以扫描指定服务器开放的端口,然后尝试连接,并寻找漏洞,最终攻破服务器。而那些使用的端口扫描器都是一个个现成的程序,看上去很厉害的样子。而实际上这些东西对于懂…

[dp 小计] SOSdp

复健 SOSdp(sum over subsets dynamic programming)。 引入 令 \(F(x)=\sum\limits_{u\subseteq x} A(u)\) 其中 \(A\) 为给定数组,求出 \(\forall x, F(x)\) 。 思路一 暴力枚举子集,时间复杂度 \(O(4^n)\)。 思路二 优化子集枚举,时间复杂度 \(O(3^n)\)。 思路三 考虑 SOS…

HTTP慢连接攻击的原理和防范措施

随着互联网的快速发展,网络安全问题日益凸显,网络攻击事件频繁发生。其中,HTTP慢速攻击作为一种隐蔽且高效的攻击方式,近年来逐渐出现的越来越多。 为了防范这些网络攻击,我们需要先了解这些攻击情况,这样…

Redis篇:缓存击穿及解决方案

1.何为缓存击穿 缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了(有可能是正好过期了),无数的请求访问会在瞬间给数据库带来巨大的冲击。 常见的解决方案有两种: 互斥锁 逻…

【深度学习】yolo-World,数据标注,zeroshot,目标检测

仓库:https://github.com/AILab-CVC/YOLO-World 下载权重: 仓库下载和环境设置 下载仓库:使用以下命令从 GitHub 上克隆仓库: git clone --recursive https://github.com/AILab-CVC/YOLO-World.git创建并激活环境&#xff1a…

Xinlinx FPGA内的存储器BRAM全解

目录 一、总体概述1.7系列FPGA的BRAM特点2.资源情况 二、BRAM分类1.单端口RAM2.简单双端口RAM3.真双端口RAM 三、BRAM的读写1、Primitives Output Registers读操作注意事项2.三种写数据模式(1)Write_First(2)Read_First&#xff0…

贪吃蛇的简单实现(c语言)

前言:学完了C语言的基础语法,和一点数据结构的知识,拿贪吃蛇来练练手,并熟悉以前的知识。写完之后,有一种成就感,为以后的学习饱满激情。 注意这里的讲解是由部分到整体的思路。 目录 控制台不能是终端&am…

UE4网络图片加载库(带内存缓存和磁盘缓存)

UE4网络图片加载库,带内存缓存和磁盘缓存,支持自定义缓存大小,支持蓝图和C++代码调用 1、调用示例 2、对外暴露函数 3、源代码-网络模块 KeImageNet.h // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreM…

BERT-CRF 微调中文 NER 模型

文章目录 数据集模型定义数据集预处理BIO 标签转换自定义Dataset拆分训练、测试集 训练验证、测试指标计算推理其它相关参数CRF 模块 数据集 CLUE-NER数据集:https://github.com/CLUEbenchmark/CLUENER2020/blob/master/pytorch_version/README.md 模型定义 imp…

vulfocus靶场couchdb 权限绕过 (CVE-2017-12635)

Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台&…

WDS+MDT网络启动自动部署windows(七)添加驱动

简介: 以前的ghost,是封装万能驱动。 现在安装原版ISO,是手动安装驱动。 那么WDS+MDT,怎么装驱动更方便呢? 本来是轻接触,lite touch,通过设置rules,bootstrap,可以达到只选择一下任务序列即可。 那么也要自动安装驱动。 WDS也可以注入驱动,但是是在使用原版安装镜像…

【嵌入式AI部署神经网络】STM32CubeIDE上部署神经网络之指纹识别(Pytorch)——篇一|环境搭建与模型初步部署篇

前言:本篇主要讲解搭建所需环境,以及基于pytorch框架在stm32cubeide上部署神经网络,部署神经网络到STM32单片机,本篇实现初步部署模型,没有加入训练集与验证集,将在第二篇加入。篇二详细讲解STM32CubeIDE上…