为什么

为什么

我正在尝试在 archivemount 中安装一个overlayfs(作为后续操作)Linux 上的分层或虚拟文件系统)。

我正在这样做:

mkdir -p {upper,work,mount}
tar zcf somefile upper/ work/ mount/
mkdir tmp
archivemount -o allow_root somefile tmp
sudo mount -t overlay -o lowerdir=/,upperdir=tmp/upper,workdir=tmp/work overlayfs tmp/mount

请注意,我允许 root 访问已安装的存档(必须为此更新 /etc/fuse.conf)。它失败了:

mount: tmp/mount: wrong fs type, bad option, bad superblock on overlayfs, missing codepage or helper program, or other error.

它适用于原始文件夹。我检查过,默认情况下,archivemount默认安装为读/写。我还可以在每个文件夹中写入一个文件。我还检查了访问权限,它们似乎是正确的。 root 可以访问挂载并可以对其进行写入。

我究竟做错了什么?

答案1

unionfs做得更好unionfs-fuse $(pwd)/tmp/upper:$(pwd) $(pwd)/mount。然而,安装点似乎必须位于archivemount文件系统之外。

我认为嵌套挂载点没有任何优势,并且具有不需要 root 权限(安装除外)的优势,因此这可能是可行的。

为什么

我不知道为什么安装点需要位于archivemount.如果这就是错误所在;我没有什么证据可以下结论。我怀疑挂载点是使用 unionfs 时以 root 身份完成的对 archivemount 的唯一文件访问。其他文件访问可能按照您的方式完成。

如果mount -t overlay上层和工作区不能在 中archivemount,可能是因为 root 无权访问此挂载。尝试:

archivemount somefile tmp
ls tmp/
sudo ls tmp/ #gets permission denied

答案2

所以实际的问题是,默认情况下,archivemount 不允许 root 访问已安装的文件系统。您必须-o allow_root为此添加选项。

请注意,您必须进行更新/etc/fuse.conf才能允许该选项。

相关内容