我有一台运行带有 SElinux 的 Centos7/XFS 的服务器,它出现了问题(与 SElinux 无关),必须从几周前的快照中恢复。该服务器还每晚将 rsync 备份到专用的异地备份 Docker 容器中。
我恢复了快照,然后从夜间备份中恢复了关键文件/数据库,因为我不知道问题出在哪里。不幸的是,恢复的文件的上下文/标签现在完全错误,并显示 Docker 容器标签(恢复的服务器没有不是运行 Docker)。例如:
在 /root 中:
[root@mail ~]# ls -alZ
dr-xr-x---. root root system_u:object_r:container_file_t:s0:c18,c703 .
dr-xr-xr-x. root root system_u:object_r:root_t:s0 ..
-rw-------. root root system_u:object_r:container_file_t:s0:c18,c703 anaconda-ks.cfg
drwxr-xr-x. root root system_u:object_r:container_file_t:s0:c18,c703 archive
drwxr-xr-x. root root system_u:object_r:container_file_t:s0:c18,c703 bak
etc . . .
并且 /etc 文件也显示容器标签:
[root@mail audit]# ls -alZ
drwxr-x---. root root system_u:object_r:container_file_t:s0:c18,c703 .
drwxr-xr-x. root root system_u:object_r:etc_t:s0 ..
-rw-r-----. root root system_u:object_r:container_file_t:s0:c18,c703 auditd.conf
-rw-r-----. root root system_u:object_r:container_file_t:s0:c18,c703 auditd.conf.bak
-rw-r-----. root root system_u:object_r:container_file_t:s0:c18,c703 audit.rules
-rw-r-----. root root system_u:object_r:container_file_t:s0:c18,c703 audit-stop.rules
drwxr-x---. root root system_u:object_r:container_file_t:s0:c18,c703 rules.d
etc . . .
我已经运行touch .autorelabel
并重新启动,fixfiles restore
甚至fixfiles relabel
重新restorecon
安装了目标策略 - 所有这些都没有效果。服务器在 Permissive 下运行良好,但我想让 SElinux 再次运行。服务器正在运行完美在出现不相关问题之前启用 SElinux 并随后进行恢复。
如何才能恢复整个文件系统以前(默认)的 SElinux 上下文和标签,而无需手动抓取目录并手动修复它们?
答案1
因此,经过一夜好眠,在对 ServerFault 和手册页进行更多研究后,我找到了答案:
`restorecon -vRF'
我错过了 F(强制)选项 - 现在一切都运行良好。