目录
7.1 文件名包含特殊字符,可能无法正常删除;直接删除inode,能起到删除文件的作用
7.2 移动或重命名文件时,只改变文件名,不影响inode号码
4.验证,并查看本机日志记录(实时查看 tail -f /var/log/secure)
8.查看接收方Zhuzi是否能收到发送方jieshou的日志记录
一.Linux文件系统
1.inode与block
文件数据包括元信息与实际信息;文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节。
- block:(块)
- 连续的八个扇区组成一个block(4k);
- 是文件存取的最小单位。
- inode:(索引节点)
- 中文译名为“索引节点”,也叫i节点;
- 用于存储文件元信息
- 同一个硬件设备上是唯一的,不可以跨设备,inode实际是资源,是可以被用完的,用完后无法创建任何文件。(xargs:读取前面的参数; -n1:一个一个给)
- inode和block的关系
-
文件数据包括实际数据与元信息(类似文件属性)。文件数据存储在“块"中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做inode。 因此,一 个文件必须占用一个inode, 并且至少占用一个block.
-
inode不包含文件名。文件名是存放在目录当中的。Linux系统中一切皆文件,因此目录也是一种文件。
-
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一 一对应关系,每个inode号码对应一个文件名。
2.查看inode号码的命令
1. 查看文件名对应的inode号码
ls -i 文件名
2. 查看文件inode信息中的inode号码
stat 文件名
3.inode包含文件的元信息
- 文件的字节数(字节占用多少空间,也称文件大小)
- 文件拥有者的 User ID
- 文件的 Group ID
- 文件的读、写、执行权限
- 文件的时间戳(ctime、atime、mtime)
- 文件类型
- 链接数
- 有关文件的其他数据
- 不包含文件名,文件名在目录结构中
4.Linux系统文件三个主要时间属性
- ctime(change time):最后一次改变文件或目录(属性)的时间
- atime(access time):最后一次访问文件或目录的时间
- mtime(modify time):最后一次修改文件或目录(内容)的时间
5.用户通过文件名打开文件时系统内部过程
5.1 系统找到这个文件名对应的inode号码
5.2 通过inode号码,获取inode信息
5.3 根据inode信息,找到文件数据所在的block,读出数据
访问文件的简单流程图示:
问题:如果把文件删除并没有做其他设置,此时真实数据并没有真的删除,删除的是inode号。
我的空间足够为什么不能继续建文件?
答案:因为inode号用完了
解决方法:1、如果是lvm逻辑卷,可以扩容 2、此时需要删除没有用的文件。
6.inode的大小
- inode也会消耗硬盘空间,每个inode的大小一般是128字节或256字节
- inode的总数,在格式化时就确定
- 如果磁盘还有空间,但inode号被全部占用,无法创建新文件。
- inode号在同一个文件系统内唯一,在不同的文件系统中可以重复。
- 查看每个硬盘分区的inode总数和已经使用的数量,可以使用命令: df -I
7.inode的特点
由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象
7.1 文件名包含特殊字符,可能无法正常删除;直接删除inode,能起到删除文件的作用
删除inode号的方法:
方法一: find 文件位置 -inum inode号码 -exec rm -rf {} \;
方法二: find 文件位置 -inum inode号码 -delete
7.2 移动或重命名文件时,只改变文件名,不影响inode号码
这里指的是非挂载磁盘,实例如下
打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名;文件数据被修改保存后,会生成一个新的inode 号码。
7.3 cp命令与inode
- 分配一个空闲的inode号
- 在inode表中生成新条目在目录中创建一个目录项
- 将名称与inode编号关联拷贝数据生成新的文件
7.4 rm命令
- 硬链接数递减,从而释放的inode号可以被重用
- 把数据块放在空闲列表中
- 删除目录项
- 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖
7.5 rm命令与inode
- 链接数递减,从而释放的inode号可以被重用把数据块放在空闲列表中
- 删除目录项
- 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖
二.日志
日志保存位置默认位于:/var/log目录下
1.日志的功能
- 用于记录系统、程序运行中发生的各种事件
- 通过阅读日志,有助于诊断和解决系统故障
2.日志文件的分类
2.1 内核及系统日志
- 由系统服务rsyslog统一进行管理,日志格式基本相似
- 主配置文件
/etc/rsyslog.conf
2.2 用户日志
- 记录系统用户登录及退出系统的相关信息
2.3 程序日志
- 由各种应用程序独立管理的日志文件,记录格式不统一
3.系统日志介绍
3.1 sysklogd 系统日志服务
CentOS 5 之前版本采用的日志管理系统服务
- syslogd: system application 记录应用日志
- klogd: linux kernel 记录内核日志
事件记录格式:
- 日期时间 主机 进程[pid]: 事件内容
- C/S架构:通过TCP或UDP协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理
3.2 rsyslog 系统日志服务
rsyslog是CentOS 6以后版本的系统管理服务:它提供了高性能,出色的安全性和模块化设计。
rsyslog特性:
- 多线程
- UDP, TCP, SSL, TLS, RELP
- MySQL, PGSQL, Oracle实现日志存储
- 强大的过滤器,可实现过滤记录日志信息中任意部分
- 自定义输出格式
- 适用于企业级中继
相关命令:
rpm -qi rsyslog
#查看rsyslog的详细信息
rpm -ql rsyslog
#查看rsyslog的文件列表
3.3 ELK
由Elasticsearch, Logstash, Kibana三个软件组成
- 非关系型分布式数据库基于apache软件基金会jakarta项目组的项目lucene
- Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系统日志等功能
- Logstash对日志进行收集、分析,过滤,并将其存储供以后使用
- Kibana 可以提供的日志分析友好的 Web 界面
4.rsyslog 管理
4.1 日志消息的级别
Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要):
级别 | 消息 | 级别 | 具体描述 |
---|---|---|---|
0 | EMERG | 紧急 | 会导致主机系统不可用的情况 |
1 | ALERT | 警告 | 必须马上采取措施解决的问题 |
2 | CRIT | 严重 | 比较严重的情况 |
3 | ERR | 错误 | 运行出现错误 |
4 | WARNING | 提醒 | 可能影响系统功能,需要提醒用户的重要事件 |
5 | NOTICE | 注意 | 不会影响正常功能,但是需要注意的事件 |
6 | INFO | 信息 | 一般信息 |
7 | DEBUG | 调试 | 程序或系统调试信息等 |
- 软件由它的配置文件所决定
- 决定它的服务方式、网络地址、个性化功能等
- 是yum 或rpm安装配置文件一般放在etc下
- 查看软件的配置文件位置,用rpm -qc 软件名 去查看,一般以 .conf结尾的是配置文件
- 在改配置文件前一定要先备份
4.2 服务名称
服务名称 | 说明 |
---|---|
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_LOCAL 0-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系统进行数据传递的协议,后来也常用在新闻组服务中 |
4.3 rsyslog配置文件
/etc/rsyslog.conf 配置文件格式:由三部分组成
-
MODULES:相关模块配置
-
GLOBAL DIRECTIVES:全局配置
-
RULES:日志记录相关的规则配置
5.用户登录日志
- /var/log/secure: 记录用户认证相关的安全事件信息。
- /var/log/lastlog: 记录每个用户最近的登录事件。二进制格式
- /var/log/wtmp: 记录每个用户登录、注销及系统启动和停机事件。二进制格式
- /var/ run/btmp: 记录失败的、错误的登录尝试及验证事件。二进制格式
6.日志记录的一般格式
7.last和lastb:查询用户登录的历史记录
7.1 last 命令用于查询成功登录到系统的用户记录
最近的登录情况将显示在最前面。通过 last 命令可以及时掌握 Linux 主机的登录情况,若发现未经授权的用户登录过,则表示当前 主机可能已被入侵。
7.2 lastb 命令用于查询登录失败的用户记录
如登录的用户名错误、密码不正确等情况都 将记录在案。登录失败的情况属于安全事件,因为这表示可能有人在尝试猜解你的密码。除 了使用 lastb 命令查看以外,也可以直接从安全日志文件/var/log/secure 中获得相关信息。
8.journalctl 日志管理工具(不常用)
日志的配置文件:/etc/systemd/journald.conf
9.查询当前登录的用户情况
9.1 users
users 命令只是简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话。 如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数
9.2 who
who命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可
以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。who 的默认输出包括用
户名、终端类型、登录日期及远程主机
9.3 w
w 命令用于显示当前系统中的每个用户及其所运行的进程信息,比 users、who 命令的 输出内容要丰富一些。
10.日志管理策略
- 及时做好备份和归档
- 延长日志保存期限
- 控制日志访问权限
- 日志中可能会包含各类敏感信息,如账户和口令等
- 集中管理日志
- 将服务器的日志文件发到统一-的日志文件服务器
- 便于日志信息的统- -收集、 整理和分析
- 杜绝日志信息的意外丢失、恶意篡改或删除
三.实操:将ssh服务日志单独存放
ssh远程连接协议:(1)压缩功能,传输快 (2)密文传输。
1.进入rsyslog配置文件,添加自己的文件位置
2.进入ssh配置文件,将ssh配置成使用local6
3.重启服务
4.验证,并查看本机日志记录(实时查看 tail -f /var/log/secure)
四.实操:通过网络将本地的日志远程备份到另一台机器
就算本机系统崩溃,我们可以查看另一台机器备份的日志,来排查故障。
1.两台机器都关闭防火墙工具与selinux
2.打开配置文件,进行修改配置