文件系统安全和日志分析

一、inode与block详解

1、inode和block概述

[[email protected] ~]# stat anaconda-ks.cfg ###使用stat命令即可查看某个文件的inode信息
文件:“anaconda-ks.cfg”
大小:1762 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:100663374 硬链接:1
权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-06-09 23:17:07.865922918 +0800
最近更改:2020-06-09 23:16:20.539017017 +0800
最近改动:2020-06-10 09:55:22.993890734 +0800
创建时间:-
文件系统安全和日志分析

stat命令:通过查看文件inode信息而查看到inode号码
[[email protected] ~]# stat anaconda-ks.cfg ###使用stat命令即可查看某个文件的inode信息
文件:“anaconda-ks.cfg”
大小:1762 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:100663374 硬链接:1
权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2020-06-09 23:17:07.865922918 +0800
最近更改:2020-06-09 23:16:20.539017017 +0800
最近改动:2020-06-10 09:55:22.993890734 +0800
创建时间:-
文件系统安全和日志分析

ls -i命令,查看文件名对应的inode号码
[[email protected] ~]# ls -i
1901891 11 100663417 aa 67891415 公共
100912609 1.sh 100663374 anaconda-ks.cfg 33625183 模板
100663396 1.ssh 100912578 bb 67891416 视频
102272058 1.txt 33555762 cangjin 33625184 图片
100912594 222.tar 1897165 canjin 100681484 文档
100912607 30 100663406 initial-setup-ks.cfg 11544 下载
100912576 30.txt 100912579 japanlovestory.list 11545 音乐
100912588 31.txt 100912583 new.txt 100681483 桌面
文件系统安全和日志分析

查看每个硬盘分区的inode总数和已经使用的数量
[[email protected] ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/mapper/centos-root 26214400 172706 26041694 1% /
devtmpfs 478425 401 478024 1% /dev
tmpfs 482689 1 482688 1% /dev/shm
tmpfs 482689 1361 481328 1% /run
tmpfs 482689 16 482673 1% /sys/fs/cgroup
/dev/sda1 524288 341 523947 1% /boot
/dev/mapper/centos-home 128512000 211 128511789 1% /home
tmpfs 482689 9 482680 1% /run/user/0
/dev/sr0 0 0 0 - /run/media/root/CentOS 7 x86_64
文件系统安全和日志分析

硬链接:
在opt目录中创建1文件,vi 1编辑
[[email protected] opt]# touch 1
[[email protected] opt]# vi 1
fsdf v
sfddf
v
fs

~
“1” 7L, 21C written
[[email protected] opt]# ln 1 3
[[email protected] opt]# stat 1
文件:“1”
大小:21 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:33625213 硬链接:2
权限:(0644/-rw-r–r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:usr_t:s0
最近访问:2020-06-23 19:51:10.629314718 +0800
最近更改:2020-06-23 19:51:10.629314718 +0800
最近改动:2020-06-23 19:51:15.241314213 +0800
创建时间:-
[[email protected] opt]# stat 3
文件:“3”
大小:21 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:33625213 硬链接:2
权限:(0644/-rw-r–r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:usr_t:s0
最近访问:2020-06-23 19:51:10.629314718 +0800
最近更改:2020-06-23 19:51:10.629314718 +0800
最近改动:2020-06-23 19:51:15.241314213 +0800
创建时间:-
[[email protected] opt]# rm -rf 1
[[email protected] opt]# ll
总用量 89492
-rw-r–r--. 1 root root 0 6月 15 22:36 10.txt
-rwxr-xr-x. 1 root root 98 6月 10 17:57 1.sh
lrwxrwxrwx. 1 root root 1 6月 23 19:50 2 -> 1
-rw-r–r--. 1 root root 21 6月 23 19:51 3
-rw-r–r--. 1 root root 0 6月 15 22:34 30.txt
-rw-r–r--. 1 root root 45 6月 15 22:36 30.txt.tar.gz
-rw-r–r--. 1 root root 49 6月 10 09:36 31.txt
-rw-r–r--. 1 root root 83151858 6月 15 22:03 31.txt.tar.gz
-rw-r–r--. 1 root root 45 6月 15 22:33 backup.txt.tar.gz
drwxr-xr-x. 12 501 games 4096 6月 12 10:00 httpd-2.4.25
-rw-r–r--. 1 root root 8460433 6月 12 09:54 httpd-2.4.25.tar.gz
drwxr-xr-x. 5 root root 121 6月 15 22:02 opt
drwxr-xr-x. 2 root root 6 10月 31 2018 rh
[[email protected] opt]# cat 3
fsdf v
sfddf
v
fs

软链接:
[[email protected] opt]# toouch 1
bash: toouch: 未找到命令…
相似命令是: ‘touch’
[[email protected] opt]# touch 1
[[email protected] opt]# vi 1
dda
d
dafds
fg
gs
g
sd
gsd
g
fdgs
fsdffffs
a
aa
~
“1” 21L, 56C written
[[email protected] opt]# ln -s 1 2
[[email protected] opt]# ll
总用量 89492
-rw-r–r--. 1 root root 56 6月 23 19:50 1
-rw-r–r--. 1 root root 0 6月 15 22:36 10.txt
-rwxr-xr-x. 1 root root 98 6月 10 17:57 1.sh
lrwxrwxrwx. 1 root root 1 6月 23 19:50 2 -> 1
-rw-r–r--. 1 root root 0 6月 15 22:34 30.txt
-rw-r–r--. 1 root root 45 6月 15 22:36 30.txt.tar.gz
-rw-r–r--. 1 root root 49 6月 10 09:36 31.txt
-rw-r–r--. 1 root root 83151858 6月 15 22:03 31.txt.tar.gz
-rw-r–r--. 1 root root 45 6月 15 22:33 backup.txt.tar.gz
drwxr-xr-x. 12 501 games 4096 6月 12 10:00 httpd-2.4.25
-rw-r–r--. 1 root root 8460433 6月 12 09:54 httpd-2.4.25.tar.gz
drwxr-xr-x. 5 root root 121 6月 15 22:02 opt
drwxr-xr-x. 2 root root 6 10月 31 2018 rh
[[email protected] opt]# stat 1
文件:“1”
大小:56 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:33625154 硬链接:1
权限:(0644/-rw-r–r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:usr_t:s0
最近访问:2020-06-23 19:50:11.754321190 +0800
最近更改:2020-06-23 19:50:11.754321190 +0800
最近改动:2020-06-23 19:50:11.755321190 +0800
创建时间:-
[[email protected] opt]# stat 2
文件:“2” -> “1”
大小:1 块:0 IO 块:4096 符号链接
设备:fd00h/64768d Inode:33625188 硬链接:1
权限:(0777/lrwxrwxrwx) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:usr_t:s0
最近访问:2020-06-23 19:50:22.067320058 +0800
最近更改:2020-06-23 19:50:20.833320191 +0800
最近改动:2020-06-23 19:50:20.833320191 +0800
创建时间:-
[[email protected] opt]# rm -rf 1
[[email protected] opt]# ll
总用量 89488
-rw-r–r--. 1 root root 0 6月 15 22:36 10.txt
-rwxr-xr-x. 1 root root 98 6月 10 17:57 1.sh
lrwxrwxrwx. 1 root root 1 6月 23 19:50 2 -> 1
-rw-r–r--. 1 root root 0 6月 15 22:34 30.txt
-rw-r–r--. 1 root root 45 6月 15 22:36 30.txt.tar.gz
-rw-r–r--. 1 root root 49 6月 10 09:36 31.txt
-rw-r–r--. 1 root root 83151858 6月 15 22:03 31.txt.tar.gz
-rw-r–r--. 1 root root 45 6月 15 22:33 backup.txt.tar.gz
drwxr-xr-x. 12 501 games 4096 6月 12 10:00 httpd-2.4.25
-rw-r–r--. 1 root root 8460433 6月 12 09:54 httpd-2.4.25.tar.gz
drwxr-xr-x. 5 root root 121 6月 15 22:02 opt
drwxr-xr-x. 2 root root 6 10月 31 2018 rh
[[email protected] opt]# cat 2
cat: 2: 没有那个文件或目录

#####EXT 类型文件恢复#####
删除一个文件,实际上并不清除 inode 节点和 block 的数据,只是在这个文件的父目录 里面的 block 中,
删除这个文件的名字。Linux 是通过 Link 的数量来控制文件删除的,只有 当一个文件不存在任何 Link 的时候,
这个文件才会被删除。 在 Linux 系统运维工作中,经常会遇到因操作不慎、操作错误等导致文件数据丢失的情 况,
尤其对于客户企业中一些新手。当然,这里所指的是彻底删除,即已经不能通过“回收 站”找回的情况,
比如使用“rm -rf”来删除数据。针对 Linux 下的 EXT 文件系统,可用的恢复工具有 debugfs、ext3grep、extundelete 等。
其中 extundelete 是一个开源的 Linux 数据 恢复工具,支持 ext3、ext4 文件系统。

在数据被误删除后,第一时间要做的就是卸载被删除数据所在的分区,如果是根分区的 数据遭到误删,
就需要将系统进入单用户模式,并且将根分区以只读模式挂载。这样做的原 因很简单,因为将文件删除后,
仅仅是将文件的 inode 节点中的扇区指针清零,实际文件还 存储在磁盘上,如果磁盘继续以读写模式挂载,
这些已删除的文件的数据块就可能被操作系统重新分配出去,在这些数据库被新的数据覆盖后,
这些数据就真的丢失了,恢复工具也回 天无力。所以以只读模式挂载磁盘可以尽量降低数据库中数据被覆盖的风险,
以提高恢复数 据成功的比例。

下面将介绍使用 extundelete 工具如何恢复误删除的文件。

1.编译安装 extundelete
在编译安装 extundelete 之前需要先安装两个依赖包 e2fsprogs-libs 和 e2fsprogs-devel,
这两个包在系统安装光盘的/Package 目录下就有,使用 rpm 或 yum 命令将其安装。
e2fsprogs-devel 安装依赖于 libcom_err-devel 包。 安装完依赖包之后,
即可将提前上传的 extundelete 软件包解压、配置、编译、安装

[[email protected] opt]# yum -y install e2fsprogs-devel e2fsprogs-libs
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
file:///mnt/repodata/repomd.xml: [Errno 14] curl#37 - “Couldn’t open file /mnt/repodata/repomd.xml”
正在尝试其它镜像。
软件包 e2fsprogs-libs-1.42.9-13.el7.x86_64 已安装并且是最新版本
正在解决依赖关系
–> 正在检查事务
—> 软件包 e2fsprogs-devel.x86_64.0.1.42.9-13.el7 将被 安装
–> 正在处理依赖关系 libcom_err-devel(x86-64) = 1.42.9-13.el7,它被软件包 e2fsprogs-devel-1.42.9-13.el7.x86_64 需要
–> 正在处理依赖关系 pkgconfig(com_err),它被软件包 e2fsprogs-devel-1.42.9-13.el7.x86_64 需要
–> 正在检查事务
—> 软件包 libcom_err-devel.x86_64.0.1.42.9-13.el7 将被 安装
–> 解决依赖关系完成

依赖关系解决

================================================================================
Package 架构 版本 源 大小

正在安装:
e2fsprogs-devel x86_64 1.42.9-13.el7 centosplus 72 k
为依赖而安装:
libcom_err-devel x86_64 1.42.9-13.el7 centosplus 31 k

事务概要

安装 1 软件包 (+1 依赖软件包)

总下载量:103 k
安装大小:179 k
Downloading packages:

Error downloading packages:
e2fsprogs-devel-1.42.9-13.el7.x86_64: [Errno 256] No more mirrors to try.
libcom_err-devel-1.42.9-13.el7.x86_64: [Errno 256] No more mirrors to try.
文件系统安全和日志分析

装一下wget软件
[[email protected] opt]# yum -y install wget

文件系统安全和日志分析

下载
[[email protected] opt]# wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
–2020-06-23 22:12:45-- http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
正在解析主机 nchc.dl.sourceforge.net (nchc.dl.sourceforge.net)… 140.110.96.69, 2001:e10:ffff:1f02::17
正在连接 nchc.dl.sourceforge.net (nchc.dl.sourceforge.net)|140.110.96.69|:80… 已连接。
已发出 HTTP 请求,正在等待回应… 200 OK
长度:108472 (106K) [application/octet-stream]
正在保存至: “extundelete-0.2.4.tar.bz2”

100%[======================================>] 108,472 8.44KB/s 用时 13s

2020-06-23 22:12:58 (8.44 KB/s) - 已保存 “extundelete-0.2.4.tar.bz2” [108472/108472])
文件系统安全和日志分析

安装bzip2
[[email protected] opt]# yum -y install bzip2
文件系统安全和日志分析

[[email protected] opt]# tar xvf extundelete-0.2.4.tar.bz2
extundelete-0.2.4/
extundelete-0.2.4/acinclude.m4
extundelete-0.2.4/missing
extundelete-0.2.4/autogen.sh
extundelete-0.2.4/aclocal.m4
extundelete-0.2.4/configure
extundelete-0.2.4/LICENSE
extundelete-0.2.4/README
extundelete-0.2.4/install-sh
extundelete-0.2.4/config.h.in
extundelete-0.2.4/src/
extundelete-0.2.4/src/extundelete.cc
extundelete-0.2.4/src/block.h
extundelete-0.2.4/src/kernel-jbd.h
extundelete-0.2.4/src/insertionops.cc
extundelete-0.2.4/src/block.c
extundelete-0.2.4/src/cli.cc
extundelete-0.2.4/src/extundelete-priv.h
extundelete-0.2.4/src/extundelete.h
extundelete-0.2.4/src/jfs_compat.h
extundelete-0.2.4/src/Makefile.in
extundelete-0.2.4/src/Makefile.am
extundelete-0.2.4/configure.ac
extundelete-0.2.4/depcomp
extundelete-0.2.4/Makefile.in
extundelete-0.2.4/Makefile.am
文件系统安全和日志分析