Arch:安装 selinux-refpoicy-arch 时无法写入管道(管道损坏)

Arch:安装 selinux-refpoicy-arch 时无法写入管道(管道损坏)

我正在 Arch 系统上设置 SELinux,每个库都已成功构建,模块也已安装,但尝试应用提供的参考策略selinux-refpolicy-arch时失败,(2/2) SELinux: relabel installed files并出现错误error: unable to write to pipe (Broken pipe)

我的内核是5.15.81-1-lts

selinux-refpolicy-arch来自 aur

请遵循此处的指南:https://wiki.archlinux.org/title/SELinux#Installation

按照指南操作至此为止没有遇到任何错误:https://wiki.archlinux.org/title/SELinux#Installing_a_policy

如果有任何其他合适的信息我会添加。

我在 Google 上寻找解决方案,只找到以下三个链接:https://forum.manjaro.org/t/selinux-hook-error-unable-to-write-to-pipe-broken-pipe/87203/2 https://bbs.archlinux.org/viewtopic.php?id=237755https://www.linux.org/threads/any-idea-how-to-fix-error-unable-to-write-to-pipe-broken-pipe.37247/

由于不包含解决方案,以上任何方法都无济于事。

我找到了更多关于管道损坏错误的一般文章,但没有一篇与当前的问题相关(修复 apt、dpkg、dnf 中的管道错误,从一个命令到另一个命令的管道等)

这里报告了一个可能相关的问题selinux-refpolicy-srchttps://aur.archlinux.org/packages/selinux-refpolicy-src

据我所知,上面没有提供任何解决方案。

在这里检查:https://github.com/SELinuxProject/refpolicy/issues?q=is%3Aissue+pipe并没有找到任何相关问题的参考。

任何帮助表示感谢

答案1

我评论中的修复确实有效,不幸的是我不知道确切的原因是什么。

解决方法是,在最后一步允许命令失败后,完成安装所需的所有文件都已在系统上,因此不会被清理。对于每个设备,运行以下命令(我以 root 身份运行):

setfiles -E /etc/selinux/refpolicy-arch/contexts/files/file_contexts/dev/DEVICE 
setfiles -E -v -n /etc/selinux/refpolicy-arch/contexts/files/file_contexts /dev/DEVICE 
setfiles -E -v /etc/selinux/refpolicy-arch/contexts/files/file_contexts /dev/DEVICE

我通过查看此 repo 中的安装脚本和 makefile 所完成的任务发现了这一点:https://github.com/archlinuxhardened/selinux-policy-arch

我查看的 makefile 规则是 relabel、checklabels 和 restorelabels。

至于为什么 make 文件不能做到这一点而我可以,我不知道。

相关内容