我正在尝试在 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
才能允许该选项。