我有一个包含分区表和一些分区的全驱动器映像文件。我想列出并读取此文件中 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=...
不支持挂载选项,因此要访问整个磁盘映像内的分区,似乎别无选择,只能先将其复制出来...