我经常使用 mksquashfs 来备份各种系统上的文件夹。有时,这会导致文件在安装时无法被任何用户读取。如果我执行 asudo mount file.squashfs /to/mountpoint
然后尝试以 root 身份或使用 sudo ls 该目录,则会收到“权限被拒绝”错误。在 Thunar 中查看挂载点的属性会导致其所有者显示为nobody
。应用achmod
也不起作用,因为squashfs 是只读文件系统。
如何强制挂载以与权限无关的方式或使用正确的权限挂载squashfs?我实际上不需要这个用例的权限,它也可能是世界可读的。
编辑:我从未找到打开“由于权限而无法由 root 读取”squashfs 文件的完整解决方案,但我确实找到了一种方法来防止它再次发生。这可以跨系统和跨平台工作。添加 -all-root 使存档中的所有文件都归 root 所有。由于权限对于这些备份并不重要,因此这是一个笨拙但有效的修复方法。仍然很好奇是否有人有更好的。
答案1
只需将其附加-o loop
mount /tmp/file.sqsh /mnt/test -t squashfs -o Loop
为了明智起见,我使用 -t 但如果你选择的话可以跳过。
为什么需要循环设备?
预计在块设备上安装文件系统。
就像当您连接磁盘或 USB 密钥时一样。它将创建一个节点。所有的操作都在这个节点上完成。
但是当您尝试使用文件而不是设备时。你需要使用循环设备。
它将使用伪设备与文件绑定。
请注意,在安装 iso 时我们还需要使用-o loop