Linux文件系统和日志管理

本文详细介绍了Linux文件系统中的inode概念,包括其作用、区别于block的特点,以及inode号和inode表的结构。此外,文章着重讲解了日志的重要性、保存位置、格式和类别,特别是rsyslog服务的特性和配置。涵盖了文件操作中的inode操作、日志管理以及rsyslog在系统安全管理中的应用。
摘要由CSDN通过智能技术生成

1. inode概述

1.1什么是inode

文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。 这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"

1.2Inode和block的区别?

inode 号是用于标识和管理文件的唯一索引节点的标识符,inode表包含文件的元数据。
block 块是文件系统中用于存储文件实际数据的最小单位,由文件系统进行分配和管理,并通过 inode 号中的指针关联到对应的文件。

1.3什么是inode号

每个inode都有一个号码,文件名和inode号码是一一对应关系,操作系统用inode号码来识别不同的文件。

同一设备下文件inode号不可以相同

不同设备下文件inode号可以相同

1.4什么是inode表

每个文件的属性信息,比如:文件的大小,时间,类型,权限等,称为文件的元数据 (meta data 元信息 )
元数据是存放在inode(index node)表中。inode 表中有很多条记录组成,第一条记录对应的存放了一个文件的元数据信息。

1.4.1 inode表内容

每一个inode表记录对应的保存了以下信息:

  • inode number 节点号
  • 文件类型
  • 权限
  • UID
  • GID
  • 链接数(指向这个文件名路径名称个数)
  • 该文件的大小和不同的时间戳
  • 指向磁盘上文件的数据块指针
  • 有关文件的其他数据

如何查看inode号

ls -i 
查看当前文件夹下文件的inode号

在这里插入图片描述

stat +文件名
查看文件的全部信息

在这里插入图片描述

df  -i
查看文件系统下的inode号

在这里插入图片描述

1.4.2 目录

目录是个特殊文件,目录文件的内容保存了此目录中文件的列表及inode number对应关系
文件引用一个是 inode号
是通过文件名来引用一个文件
一个目录是目录下的文件名和文件inode号之间的映射

文件是如何找到实际数据的

linux 通过文件夹中会有一张 文件名和inode一一对应关系的表 (名字) 去找inode号 inode指向对应的实际数据

在这里插入图片描述

1.用户访问文件时 先去查找 自己 文件夹中的目录项
2.文件名和inode之间对应的关系
3.通过 inode号利用指针 去指向 实际数据

ls -i +文件夹名
#显示该文件夹下所以文件及inode号

在这里插入图片描述

cp 和 inode:

cp 命令:

  • 分配一个空闲的inode号,在inode表中生成新条目
  • 在目录中创建一个目录项,将名称与inode编号关联
  • 拷贝数据生成新的文件

rm 命令:

  • 硬链接数递减,从而释放的inode号可以被重用
  • 把数据块放在空闲列表中
  • 删除目录项
  • 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

mv和inode

  • 如果mv命令的目标和源在同一设备,

    不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!

    删除旧的目录对应关系新建目录对应关系

[root@localhost a]#find -inum 69 -exec rm {} \;
#通过find命令查找indoe号来删除指定的文件
[root@localhost a]#find -inum 69 -delete
1.4.3三种时间戳

当新创建一个文件时,这个文件的最后访问时间、最后内容修改时间、最后状态更新时间都是一致的。

修改一个文件的权限状态信息,只会更新这个文件的最后状态修改时间

当查看文件时,文件的 Access time 会更新。

当需要了解这个文件有没有被修改过 - Modify Time
当需要了解这个文件最后被查看的时间 - Access Time
当需要了解这个文件权限最后变动的时间 - Change Time

在这里插入图片描述

为什么磁盘空间还有很大空间,但是不能继续创建文件

inode号是有限的
电脑发完就没有了

解决方法:删除空文件或者扩容

2.日志

2.1什么是日志

所谓日志(Log)是指系统所指定对象的某些操作和其操作结果按时间有序的集合

2.2日志的功能

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

遇事不决看日志

2.3日志保存位置

  • 默认保存在 /var/log目录下
    在这里插入图片描述

2.4日志文件的格式

日志文件的格式包含以下 4 列:

  • 事件产生的时间。
  • 产生事件的服务器的主机名。
  • 产生事件的服务名或程序名。
  • 事件的具体信息。
#以 /var/log/messages/为例
tail -f /var/log/messages/
##实时查看/var/log/messages/文件日志记录后十行

在这里插入图片描述

2.5日志的类别

  • 用户日志:记录用户登录、退出相关信息
  • 内核和系统日志:由系统服务rsyslog统一管理,日志格式基本类似
  • 程序日志:由各种应用程序独立管理的日志文件,记录格式不统一
2.5.1用户日志
用户日志
/var/log/lastlog记录系统中所有用户最后一次的登录时间的曰志。这个文件也是二进制文件.不能直接用Vi 查看。而要使用lastlog命令查看
/var/log/secure记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
/var/log/wtmp永久记录所有用户的登陆、注销信息,同时记录系统的启动、重启、关机事件。同样,这个文件也是二进制文件.不能直接用Vi查看,而要使用last命令查看
/var/tun/ulmp记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用Vi查看,而要使用w、who、users等命令查看

查询当前登录的用户情况

users

#users 命令只是简单地输出当前登录的用户名称,
每个显示的用户名对应一个登录会话。
如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数

在这里插入图片描述

who 
#who命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可 
以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。

在这里插入图片描述

who 的默认输出包括 :用户名、终端类型、登录日期及远程主机

w
#w 命令用于显示当前系统中的每个用户及其所运行的进程信息,比 users、who 命令的 输出内容要丰富一些。

在这里插入图片描述
查询用户登录的历史记录

last

#last 命令用于查询成功登录到系统的用户记录,
#最近的登录情况将显示在最前面。
#通过 last 命令可以及时掌握 Linux 主机的登录情况,若发现未经授权的用户登录过,则表示当前 主机可能已被入侵。

在这里插入图片描述

lastb

lastb 命令用于查询登录失败的用户记录,
如: 登录的用户名错误、密码不正确等情况都 将记录在案。
登录失败的情况属于安全事件,因为这表示可能有人在尝试猜解你的密码。
除了使用 lastb 命令查看以外,也可以直接从安全日志文件/var/log/secure 中获得相关信息。

在这里插入图片描述

2.5.2内核和系统日志

日志的配置文件 位置在 /etc/rsyslog.conf

vim /etc/rsyslog.conf
#查看rsyslog.conf 配置文件
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
#表示所有info等级以上的所有等级的信息都写到对应的日志文件里
mail.none
#表示某事件的信息不写到日志文件里(这里比如是邮件)

在这里插入图片描述
信息的优先级别重要程度

在 Linux 内核中,根据日志消息的重要程度不同,将其分为不同 的优先级别(数字等级越小,优先级越高,消息越重要)。

数字等级信息类别含义
0EMERG(紧急):会导致主机系统不可用的情况。
1ALERT(警告):必须马上采取措施解决的问题。
2CRIT(严重):比较严重的情况。
3 ERR(错误):运行出现错误。
4WARNING(提醒):可能影响系统功能,需要提醒用户的重要事件。
5NOTICE(注意):不会影响正常功能,但是需要注意的事件。
6NFO(信息):一般信息。
7DEBUG(调试):程序或系统调试信息等

内核和公共消息日志存储位置

内核及大多数系统消息被记录到公共日志文件/var/log/messages 中,而其他一些程序

消息被记录到各自独立的日志文件中,此外日志消息还能够记录到特定的存储设备中,或者

直接发送给指定用户。

对于 rsyslog 服务统一管理的大部分日志文件,使用的日志记录格式基本上是相同的。

以公共日志/var/log/messages 文件的记录格式为例
在这里插入图片描述
每 一条消息均包括以下四个字段

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

3.rsyslog

rsyslog是CentOS 6以后版本的系统管理服务:它提供了高性能,出色的安全性和模块化设计。
当应用有限的处理时,RSYSLOG每秒可以将超过一百万的消息传递到本地目的地。即使在远程的目的地和更精细的处理中,性能通常也被认为是惊人的”。

http://www.rsyslog.com/
官网

3.1rsyslog 特性

  • 多线程
  • UDP, TCP, SSL, TLS, RELP
  • MySQL, PGSQL, Oracle实现日志存储
  • 强大的过滤器,可实现过滤记录日志信息中任意部分
  • 自定义输出格式 可以日志
  • 适用于企业级
rpm -qi rsyslog #服务器

在这里插入图片描述

3.2rsyslog配置文件

/etc/rsyslog.conf
#配置文件所在

在这里插入图片描述

MODULES:相关模块配置

在这里插入图片描述

GLOBAL DIRECTIVES:全局配置

在这里插入图片描述

RULES:日志记录相关的规则配置

全局配置没有日志记录相关的规则配置的优先级高
只有没有日志记录相关的规则配置时,才会使用全局配置
在这里插入图片描述

#自定义的分类
local0-local7

3.3服务名称

服务名称说 明
auth(LOG AUTH)安全和认证相关消息 (不推荐使用authpriv替代)
authpriv(LOG_AUTHPRIV)安全和认证相关消息(私有的)
cron (LOG_CRON)系统定时任务cront和at产生的日志
daemon (LOG_DAEMON)与各个守护进程相关的曰志
ftp (LOG_FTP)ftp守护进程产生的曰志
kern(LOG_KERN)内核产生的曰志(不是用户进程产生的)
Iocal0-local7 (LOG_LOCAL0-7)为本地使用预留的服务
lpr (LOG_LPR)打印产生的日志
mail (LOG_MAIL)邮件收发信息
news (LOG_NEWS)与新闻服务器相关的日志
syslog (LOG_SYSLOG)存syslogd服务产生的曰志信息(虽然服务名称己经改为reyslogd,但是很多配罝依然沿用了 syslogd服务的,所以这里并没有修改服务名称)
user (LOG_USER)用户等级类别的日志信息
uucp (LOG_UUCP>uucp子系统的日志信息,uucp是早期Linux系统进行数据传递的协议,后来 也常用在新闻组服务中

实际应用

将ssh服务的日志单独设置:

ssh服务功能:远程连接其他主机
但ssh的服务日志在 /var/log/secure 与其他软件日志混杂在一起
所以要将ssh日志单独存放

1.查看ssh服务的日志位置

tail -f  /var/log/secure

在这里插入图片描述
2.编辑ssh配置文件

vim /etc/ssh/sshd_config
#修改配置文件

SyslogFacility LOCAL6

在这里插入图片描述
3.添加路径

vim /etc/rsyslog.conf
#在rsyslog 配置文件中添加路径

local6.*                              /var/log/ssh.log

在这里插入图片描述

systemctl restart rsyslog.service sshd
#重启服务

在这里插入图片描述
4.使用另一台主机远程连接
在这里插入图片描述
在这里插入图片描述
完成

网络日志(远程日志功能)
将n台主机的日志汇聚到一台主机上

在这里插入图片描述

192.168.67.100

1.查看环境

rpm -ql rsyslog
#查看该软件是否支持TCP和UDP

在这里插入图片描述

ss -natp | grep 514
#查看514端口是否被占用

在这里插入图片描述
未显示被占用

2.配置文件

vim /etc/rsyslog.conf
#rsyslog的配置文件

在这里插入图片描述
再次查看端口是否被占用
在这里插入图片描述
显示514端口已被占用

配置192.168.67.101
重复以上步骤

在这里插入图片描述
修改配置文件

54 *.info;mail.none;authpriv.none;cron.none          /var/log/messages
#复制54行                                                   改成ip地址
55 *.info;mail.none;authpriv.none;cron.none            @@192.168.67.100

                        #两个@ 代表使用  tcp  一个代表udp
如果修改 的是udp  @192.168.91.100
如果要想指定端口  @192.168.91.100:端口号

在这里插入图片描述
写日志进去

logger "1111111"
#发送日志

在这里插入图片描述

在这里插入图片描述
成功

四、日志管理工具 journalctl
命令格式

journalctl [选项] 

常用选项
-u  仅显示特定系统服务或单元的日志消息

-b  仅显示特定引导过程的日志消息

-p  仅显示特定优先级的日志消息

-n  显示指定行数的日志消息

-f  实时跟踪日志,持续显示新的日志消息
--since=<time> 和 --until=<time>: 仅显示指定时间范围内的日志消息。
查看指定时间的日志 
journalctl --since""
journalctl --since="年-月-日 时间"              //查看从某个具体时间开始的日志

journalctl --since "" --until ""   //某个时间段的日志
journalctl --since=""  --until="" //查看某一具体时间段的日志


查看昨天的日志
journalctl --since "yesterday"
查看20分钟之前的日志
journal --since"20 min ago"

查看2023.7.11 19:00后的日志
journalctl --since="2023.7.11 19:00:00"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值