作为为即将到来的Linux6.8合并窗口提交的VFS更改的一部分,添加了一个新的“BLK_DEV_WRITE_MOUND”KCONFIG选项,该选项允许控制是否允许写入挂载的块设备。
新的BLK_DEV_WRITE_MOUND选项是由SuSE的Jan Kara解决的一项安全功能。其目标是防止写入已装载的设备,因为这可能会导致文件系统损坏和/或崩溃。除了使KCONFIG可针对内核构建进行调优之外,新特性还为内核命令行添加了“BDEV_ALLOW_WRITE_MOUND=”引导选项,以允许操作已挂载设备的块设备写控制。
KCONFIG文本解释了BLK_DEV_WRITE_MOUND功能:
当装载数据块设备时,写入其缓冲区缓存很可能会导致文件系统损坏。以这种方式使内核崩溃也相当容易,因为文件系统没有实用的方法来检测这些对缓冲区缓存的写入并验证其元数据的完整性。但是,有些设置需要这种功能,比如在只读挂载的根设备上运行fsck,修改挂载的ext4文件系统上的一些功能,等等。如果您选择N,内核将阻止进程写入由文件系统挂载的块设备,这将提供更多保护,防止特权进程失控,并且通常会使文件系统驱动程序崩溃变得更加困难。然而,请注意,这并不阻止底层设备(S)被其他方式修改,例如通过直接提交scsi命令或通过访问存储堆栈的较低层。如果有疑问,可以使用BDEV_ALLOW_WRITE_MOUND引导选项覆盖配置。“
这个特性是今天为Linux6.8合并窗口通过VFS超级更新. That pull request also re-implements block device freezing and thawing as holder operations on the block device.