有效地禁用大文件上的 fs-verity

有效地禁用大文件上的 fs-verity

如果FS_IOC_ENABLE_VERITYioctl 用于在文件上启用 fs-verity(例如,使用命令fsverity enable),然后我想再次写入该文件,如何禁用它的 fs-verity?现在,我的解决方法是复制文件,然后删除原始文件,但是当文件很大时,这确实效率很低。

答案1

您无法通过设计来做到这一点。这个 wiki 页面关于 rpm 包的描述,为什么。
“一旦为给定文件启用了 fs-verity(在 RPM 情况下,发生在软件包安装时),就无法禁用它,并且该文件将变得不可变。人们仍然可以改名() 或者取消链接() 它(这确实是 rpm 在升级包时能够替换文件的方式),但实际内容无法更改。” ....
“假设攻击者安装(或访问)您的文件系统,取消链接 /bin/ls 并用新副本批量替换它(从而创建新的 inode)。攻击者没有您的签名密钥,因此他们无法对文件进行重新签名并对其启用 fs-verity(他们可以使用自己的密钥对其进行重新签名,但除非他们能够找到一种方法将其证书加载到内核密钥环中,否则不会有太大作用) 。为了防止这种情况,您现在有几个选择:”

相关内容