无需 root 权限即可访问映像内 Linux 分区的数据

无需 root 权限即可访问映像内 Linux 分区的数据

我有一个包含分区表和一些分区的全驱动器映像文件。我想列出并读取此文件中 ext2/ext3 分区的文件。

使用 root 权限,虽然有些复杂,但可以挂载到映像文件的某个偏移量,从而像真实分区一样在映像内挂载分区。

没有 root 权限是否有机会访问数据?

答案1

e2工具

啊,我知道一定有更好的方法。在 Ubuntu 上:

$ sudo apt-get install e2tools

然后:

$ e2ls image.ext2
myfile foo bar baz
$ e2cp image.ext2:/myfile /tmp

ETC

当然,如果你不是 root 则无法使用apt-get:从以下位置下载 e2tools 二进制包packages.ubuntu.com并像在 fs-utils 答案中那样将其安装在您的主目录中。

答案2

库姆

一个简单(但繁重)的方法是使用库姆启动虚拟机并从那里访问文件。您不需要 root 权限,即使您只有对映像的只读访问权限,这也可以正常工作。不过这会非常慢...

使用您最喜欢的迷你发行版:

qemu -cdrom tomsrtbt.iso -hda disk_image -boot order=d

答案3

其他机器+网络

如果您是另一台机器上的 root 身份,并且可以通过网络访问存储磁盘映像的服务器,则很有可能可以使用某种网络文件系统(sshfs、httpfs、ftpfs、samba、nfs……)在本地映射文件,此时您可以像往常一样以 root 身份挂载它。

答案4

fs-实用程序

好像fs-实用程序可能是这里的通用解决方案:

该项目的目标是提供一组实用程序,用于访问和修改文件系统映像,而无需挂载它。要使用 fs-utils,您不必是 root,只需拥有对映像或设备的读/写访问权限即可。与 mtools 等类似项目相比,fs-utils 的优势在于支持对大量文件系统使用熟悉的 Unix 工具( ls 、 cp 、 mv 等)。

支持 Linux,并且二进制包可用(确保您还获得了残余内核组件它所基于的)。因为我们不是 root,所以我们需要将它们安装在我们的主目录中(~/usr例如):

$ mkdir ~/usr ; cd ~/usr
$ dpkg-deb --fsys-tarfile ../netbsd-rump_20140405_i386.deb | tar -xvf -
$ dpkg-deb --fsys-tarfile ../netbsd-fs-utils_1.10_i386.deb | tar -xvf -

将其添加到~/.bashrc

export PATH="$HOME/usr/bin:$PATH"
export LD_LIBRARY_PATH="$HOME/usr/lib"

然后你可以:

$ fsu_ls -t ext2fs image.ext2 -l
total 2
-rw-r--r--  1 0  0  12 Apr  9 12:45 a_file.txt
$ fsu_cat -t ext2fs image.ext2 a_file.txt
just a demo

文件系统名称与平常略有不同:msdos 代替 vfat、ext2fs 代替 ext2、cd9660 代替 iso9660 等等。

注意:
- 在我的系统上,它能与 vfat 配合使用,但不能与 ext2 映像配合使用。不过,我没有进行完整的 fs-tools 构建,而是尝试了一个与我的发行版不完全匹配的二进制包(这可能是原因...)
- 似乎offset=...不支持挂载选项,因此要访问整个磁盘映像内的分区,似乎别无选择,只能先将其复制出来...

相关内容