CentOS Linux SELinux 安全上下文错误引起的宕机故障
(首发:学习日记 CentOS Linux SELinux 安全上下文错误引起的宕机故障 – 学习日记 )
在某些情况下,我们会用一些外部的文件复制替换系统中原有的文件,如文件损坏,或者安装了错误版本的软件、或者怀疑原文件被替换成含病毒的版本等。这里以 VirtualBox 虚拟机中的 CentOS 7 为例,演示的是在启用 SELinux 的情况下,错误的复制替换系统中 /lib64/libc-2.17.so 造成的宕机故障及修复。其它启用了 SELinux 的 Linux 系统也可作为参考。视频演示地址:https://www.bilibili.com/video/BV1vL4y1u7CU?share_source=copy_web
CentOS Linux SELinux 安全上下文错误引起的宕机故障
一、查看系统状态
为了方便查看系统的启动信息,我们修改一下 grub 启动配置文件 /boot/grub2/grub.cfg,把默认启动项 linux16 /vmlinuz-3.10.0* 开头那行中的 rhgb quiet 去掉。然后,我们查看一下系统中 SELinux 的状态,使用 getenforce 命令显示如下:
[root@centos ~]# getenforce
Enforcing
这表示系统是启用了 SELinux 的。查看 /lib64/libc-2.17.so 属性:
[root@centos ~]# ls -Z /lib64/libc-2.17.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0 /lib64/libc-2.17.so
以普通用户 test 的身份复制一份 libc-2.17.so 到家目录下备用:
[root@centos ~]# su - test
上一次登录:六 3月 5 11:46:21 CST 2022tty1 上
[test@centos ~]$ pwd
/home/test
[test@centos ~]$ cp /lib64/libc-2.17.so ./ -v
"/lib64/libc-2.17.so" -> "./libc-2.17.so"
[test@centos ~]$ ls -Z libc-2.17.so
-rwxr-xr-x. test test unconfined_u:object_r:user_home_t:s0 libc-2.17.so
可以看到,复制的文件 SELinux 安全上下文已经改变了。其中的类型由“lib_t”变成了“user_home_t”。
二、在 Live CD 环境下复制替换文件
我们用 /home/test/libc-2.17.so 复制替换 /lib64/libc-2.17.so 。在运行的系统下,一般情况是不能够完成的,系统会立刻重启,替换不会成功。但不排除在某些情况下,在系统运行的情况下是可以替换成功的。这里用 CentOS-7-livecd-x86_64.iso 启动系统,在 Live CD 的环境下用 /home/test/libc-2.17.so 替换 /lib64/libc-2.17.so:
[liveuser@localhost Desktop]$ sudo mount /dev/centos/root /mnt -v
mount: /dev/mapper/centos-root mounted on /mnt.
[liveuser@localhost Desktop]$ cd /mnt
[liveuser@localhost mnt]$ ls -Z home/test/libc-2.17.so lib64/libc-2.17.so
-rwxr-xr-x. liveuser liveuser unconfined_u:object_r:user_home_t:s0 home/test/libc-2.17.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0 lib64/libc-2.17.so
[liveuser@localhost mnt]$ sudo cp home/test/libc-2.17.so lib64/libc-2.17.so -av
‘home/test/libc-2.17.so’ -> ‘lib64/libc-2.17.so’
[liveuser@localhost mnt]$ ls -Z home/test/libc-2.17.so lib64/libc-2.17.so
-rwxr-xr-x. liveuser liveuser unconfined_u:object_r:user_home_t:s0 home/test/libc-2.17.so
-rwxr-xr-x. liveuser liveuser unconfined_u:object_r:user_home_t:s0 lib64/libc-2.17.so
这里因为使用了 cp -a 参数,所以 /lib64/libc-2.17.so 的 SELinux 安全上下文的类型变成了“user_home_t”。然后,我们重新从硬盘启动系统,就会发现已经不能启动成功。启动画面会报告 libc-2.17.so 相关的 SELinux 安全上下文相关错误信息,如:
[ 38.204015] type=1400 audit(1646560498.018:43): avc: denied { read } for pid=716 comm="systemd-logind" name ="libc-2.17.so" dev="dm-0" ino=550218 scontext=system_u:system_r:systemd_logind_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file permissive=0
从上面的信息可以看出是 libc-2.17.so 的 SELinux 安全上下文有问题。
三、修复 libc-2.17.so 安全上下文
我们重启系统,在 grub 默认启动项 linux16 /vmlinuz-3.10.0* 开头那行的末尾加上一个空格,再加上 selinux=0 ,这样,临时禁止了 SELinux,我们就可以进入系统修复 libc-2.17.so 的安全上下文。进入系统,查看 SELinux 状态:
[root@centos ~]# getenforce
Disabled
然后,我们参照 /lib64/libcidn-2.17.so 这个动态链接库文件来修复 /lib64/libc-2.17.so 的 SELinux 安全上下文。
:
[root@centos ~]# ls -Z /lib64/libc*.so
-rwxr-xr-x. test test unconfined_u:object_r:user_home_t:s0 /lib64/libc-2.17.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0 /lib64/libcidn-2.17.so
lrwxrwxrwx. root root system_u:object_r:lib_t:s0 /lib64/libcidn.so -> ../../lib64/libcidn.so.1
-rwxr-xr-x. root root system_u:object_r:lib_t:s0 /lib64/libcrypt-2.17.so
lrwxrwxrwx. root root system_u:object_r:lib_t:s0 /lib64/libcrypt.so -> ../../lib64/libcrypt.so.1
-rw-r--r--. root root system_u:object_r:lib_t:s0 /lib64/libc.so
[root@centos ~]# chcon -v --reference=/lib64/libcidn-2.17.so /lib64/libc-2.17.so
正在更改"/lib64/libc-2.17.so" 的安全环境
[root@centos ~]# ls -Z /lib64/libc-2.17.so
-rwxr-xr-x. test test system_u:object_r:lib_t:s0 /lib64/libc-2.17.so
[root@centos ~]# chown root:root /lib64/libc-2.17.so -v
changed ownership of "/lib64/libc-2.17.so" from test:test to root:root
[root@centos ~]# ls -Z /lib64/libc-2.17.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0 /lib64/libc-2.17.so
[root@centos ~]#
然后,重启系统。修复完毕。
还有一种修复方式,就是同样用上面在 grub 启动项后面加 selinux=0 的方法进入系统后,直接 touch /.autorelabel 就行。这样,重启系统后会进行整个文件系统的 relabel,修复错误的 SELinux 安全上下文。
CentOS Linux SELinux 安全上下文错误引起的宕机故障相关推荐
- linux selinux 安全上下文 修改
一.chcon命令 1.功能 手动修改文件的SELinux安全上下文 2.命令格式 chcon [-R] [-t type] [-u user] [-r role] 文件 chcom ...
- “如何避免总线错误或不可纠正的错误导致的宕机事件”之tolerant介绍
实验目的:证明修改tolerant参数为3时,uncorrected error和fatal error等不可纠正错误.总线错误不会导致机器宕机. 实验意义:对于已发生的硬件MCE error导致的宕 ...
- linux 宕机 内存,Linux内存使用高,触发系统宕机
网上的解决方案:用ps查看各进程的内存,大约就占用了4G, 绝大部分内存都是被Page Cache所占用.Linux内核的策略是最大程度的利用内存cache 文件系统的数据,提高IO速度,虽然在机制上 ...
- 特斯拉看位置说服务器错误,特斯拉App惊现大面积宕机!车主集体发飙,官方处理太弱智了...
如果要在汽车厂商中选出一位"网红"的话,特斯拉绝对当仁不让! 别的不说,光凭它有个大嘴巴的老板就自带流量了,再加上最近中国区那跳楼般的降价幅度,不红都没有天理- 只是很可惜,特斯拉 ...
- centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课...
centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课 rsync可以增量同步,scp不行 ...
- Linux安全 chage sudo授权 selinux安全上下文 gpg加密 aide入侵检测系统 audit 审计
chage -E 日期 用户名 指定用户失效日期 chage -d0 用户 强制用户修改密码 passwd -l 用户名 锁定密码 passwd -u 用户名 解锁 passwd -S 用户名 看状态 ...
- CentOS Linux 8 - AppStream 错误:为仓库 ‘appstream‘ 下载元数据失败 : Cannot prepare internal mirrorlist: No URLs
问题描述 CentOS Linux 8 - AppStream 错误:为仓库 'appstream' 下载元数据失败 : Cannot prepare internal mirrorlist: No ...
- CentOS Linux 8 - AppStream 错误
问题描述 今天2022年3月7日在CentOS 8.2上安装软件时,遇到如下报错: CentOS Linux 8 - AppStream 错误:为仓库 'appstream' 下载元数据失败 : Ca ...
- (翻译) MongoDB(10) 在 Red Hat 企业版或者 Centos Linux 上安装MongoDB社区版
概述 使用这个教程在 Red Hat 企业版 Linux 或者 CentOS6/7 Linux 使用 .rpm 软件包安装 MongoDB 社区版. 虽然一些发行版包含自己的 MongoDB 软件包, ...
最新文章
- 机器学习:正负样本数据量不平衡处理方法
- python连接oracle超时设置,Python连接Oracle设置过程记录
- 她发明了可以“喝的饭”,估值已超过10亿美金!从此每天多睡半小时....
- java 银行管理系统怎么储存账户信息_银行管理系统 实现用户注册 登录 存、取款 交易记录查询和修改用户信息等功能...
- Android零基础入门第87节:Fragment添加、删除、替换
- 16 岁高中生成功将 Linux 移植到 iPhone,并贴出详细指南
- 薪酬体系:了解越多,满意越高
- 网众无盘linux挂载u盘,个人总结出的49条网众无盘系统常见故障解决方法
- 热门小说排行榜(JSP实现)
- 中间代码生成-四元式
- raid数据恢复,Raid5磁盘阵列数据恢复案例,服务器数据恢复
- 每天几分钟,教你免费下载苹果的app,赚Amazon Gift Card 亲测可用【非广告】
- 征兵系统集合版(登录系统+信息填写及查看功能)
- 写给安徽合肥高三的你——少年不惧岁月长,敢挽桑弓射玉衡
- HDMI2.0RE驱动控制方案AG7120和AG7220性能参数对比
- python爬虫小说设计过程_Python制作爬虫采集小说
- 【已解决】LaTeX调整图片大小
- java访问FTP可重用ssl通道
- 力扣解题思路:位运算系列
- java与go对接AES-GCM加解密