我使用的是 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 标签)。