无法从 root 下 /usr/lib 中的符号链接中删除和删除 SELinux 上下文或 ACL

无法从 root 下 /usr/lib 中的符号链接中删除和删除 SELinux 上下文或 ACL

我使用的是 Fedora 27,并且在通过dnf update.问题正如这里所描述的:https://superuser.com/q/1005740/683161

我尝试删除 下的符号链接/usr/lib,但不能,即使在 root 下:

vplagov@thinkpad:~ $ sudo rm -f /usr/lib/cpp 
rm: cannot remove '/usr/lib/cpp': Operation not permitted
...
vplagov@thinkpad:~ $ file /usr/lib/cpp 
/usr/lib/cpp: symbolic link to ../bin/cpp
...
vplagov@thinkpad:~ $ ls -al /usr/lib/cpp 
lrwxrwxrwx. 1 root root 10 Sep 15 15:01 /usr/lib/cpp -> ../bin/cpp

我看到该文件在文件权限末尾有一个点。通过谷歌搜索,我找到了删除 SELinux 上下文或 ACL 的命令(我不知道那些是什么)。但还是无法修复:

vplagov@thinkpad:~ $ sudo setfacl -b /usr/lib/cpp
...
vplagov@thinkpad:~ $ ls -al /usr/lib/cpp 
lrwxrwxrwx. 1 root root 10 Sep 15 15:01 /usr/lib/cpp -> ../bin/cpp
... 
vplagov@thinkpad:~ $ sudo rm -f /usr/lib/cpp 
rm: cannot remove '/usr/lib/cpp': Operation not permitted
...
vplagov@thinkpad:~ $ sudo setfattr -x security.selinux /usr/lib/cpp 
setfattr: /usr/lib/cpp: Permission denied

有没有“健康”的选择来解决这个问题?

答案1

使用“紧急 shell”重新启动。

我认为最快的方法可能是在禁用 SELinux 强制模式的情况下重新启动计算机进入紧急 shell。只需将“rd.break enforcing=0”传递到内核引导命令行(附加到 GRUB 引导菜单中以“linux”开头的行,然后按 Ctrl+x 进行引导)。启动后重新挂载/分区可读写

mount –o remount,rw /sysroot

在这个 shell 中,您可以直接cd 进入/sysroot/usr/lib/和/或rm您的符号链接。

要退出,请输入

reboot

答案2

fixfiles onboot您可以尝试通过运行然后重新启动来重新标记计算机上的文件

您可能还想检查当前用户在哪个上下文中运行id -Z,在默认安装中,您的用户应该在 中运行unconfined_t

ls-z显示 SeLinux 标签(将它们与“良好”系统进行比较)。

setenforce 0将暂时禁用 SeLinux,但您最好修复根本原因(损坏的 SeLinux 标签)。

相关内容