在 FreeBSD10 上以非 root 身份使用 ext4fuse

在 FreeBSD10 上以非 root 身份使用 ext4fuse

我的计算机上有 2 个操作系统,一个 Arch Linux 位于 100GB ext4 分区上,一个 FreeBSD 位于 250GB 分区上,所有数据位于 2 个 2TB 分隔的 ext4 磁盘上。

我想要使​​用我的 FreeBSD 访问这两个磁盘上的文件,我在网上搜索并且我发现的最好的结果是使用 ext4fuse,我尝试使用来挂载我的磁盘ext4fuse /device /folder,它可以工作但我无法用我的普通用户读取内容,只有 root 用户才有读取的权限:

[root@******* /usr/home/********/Arch Linux]# ls -lha
total 72
dr-xr-xr-x    4 root   wheel   4.0K Aug 28 19:37 .
drwxr-xr-x   29 *****  *****   1.0K Feb 20 15:43 ..
dr-x------  108 1000   100      12K Feb 20 06:24 *********
dr-x------    2 root   wheel    16K Aug 28 16:18 lost+found

由于我找不到有关 ext4fuse 的任何文档并且它仅以只读方式安装,所以我无法做任何其他事情。

如果至少我可以授予 wheel 组读取该文件的权限,我就可以用我的普通用户身份读取它,因为只有 root 才有权访问此设备,我甚至无法用我的普通用户身份 cd 到该文件夹​​。

/usr/home/*******/Arch Linux这是我的 2TB 分区,其中的数据使用 ext4fuse 安装。

答案1

根据它的 github 页面,ext4fuse 是只读

这是 FUSE 的 ext4 的只读实现。

这是在保险丝主程序,不提供任何可以改变文件系统的操作函数(可能的操作的完整列表是这里(英文):

static struct fuse_operations e4f_ops = {
    .getattr = op_getattr,
    .readdir = op_readdir,
    .open = op_open,
    .read = op_read,
    .readlink = op_readlink,
    .init = op_init,
};

并且在op_getattr.c,通过从权限中删除所有写入位;

stbuf->st_mode = inode.i_mode & ~0222;

但它不会删除所有组位。

这意味着你不能改变任何事物ext4FreeBSD 的文件系统上。而缺少组权限则来自ext4文件系统本身。因此,当您启动 Arch Linux 时,您必须为文件添加组权限。

相关内容