是否有 Linux 系统调用来创建文件范围的“视图”?

lla*_*ram 7 linux filesystems files

Linux 是否提供了一个系统调用,它可以创建一个支持文件的有限字节范围的“视图”?我正在设想一些东西,例如对打开的文件描述符进行操作并修改它或生成一个新的文件描述符,其中文件偏移量相对于范围的开头和范围的结尾。

用例是将非合作子进程限制为仅访问输入文件的特定部分。

Ste*_*itt 12

一种方法是使用循环设备。这种方法确实有两个可能使它不太有用的要求:您需要以 root 身份进行设置,并且非合作子进程必须能够写入块设备。哦,它不处理冲突的变化。

要设置循环设备,请运行

losetup -o 1024 --sizelimit 2048 --show -f yourfile
Run Code Online (Sandbox Code Playgroud)

替换10242048yourfile使用适当的值 --o指定起始偏移量、--sizelimit大小(从偏移量开始计算)。请注意,sizelimit必须是 512 的倍数。

这将输出已设置的循环设备的名称;根据需要调整权限,并将其赋予您的非合作子进程。当您不再需要该设备时,请使用以下命令将其删除

losetup -d /dev/loopN
Run Code Online (Sandbox Code Playgroud)

N酌情更换。