4

У меня есть файл образа целого диска, содержащий таблицу разделов и некоторые разделы. Я хотел бы перечислить и прочитать файлы из раздела ext2/ext3 внутри этого файла.

Используя корневые привилегии, это как-то усложняется, но возможно монтировать в некотором смещении файла образа, таким образом монтируя раздел внутри изображения, как настоящий.

Есть ли вероятность доступа к данным без прав root?

4 ответа4

1

e2tools

Ах, я знал, что должен быть лучший способ. На убунту:

$ sudo apt-get install e2tools

Затем:

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

так далее

Конечно, если вы не root, вы не можете использовать apt-get: загрузите двоичный пакет e2tools с packages.ubuntu.com и установите его в своем домашнем каталоге, как в ответе fs-utils.

0

QEMU

Простой (но сложный) способ сделать это - использовать qemu для запуска vm и доступа к файлам оттуда. Вам не нужен root, и это работает, даже если у вас есть только доступ только для чтения к изображению. Это будет очень медленно, хотя ...

Используя ваш любимый мини-дистрибутив:

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

Другая машина + сеть

Если вы являетесь пользователем root на другом компьютере и имеете сетевой доступ к серверу, на котором хранится образ диска, есть большая вероятность, что вы можете использовать какую-то сетевую файловую систему (sshfs, httpfs, ftpfs, samba, nfs ...) для сопоставления файл локально, после чего вы можете монтировать его как root как обычно.

0

фс-Utils

Похоже, что fs-utils может быть общим решением здесь:

Цель этого проекта - создать набор утилит для доступа и изменения образа файловой системы без его монтирования. Чтобы использовать fs-utils, вам не нужно быть пользователем root, вам просто нужен доступ для чтения / записи к образу или устройству. Преимущество fs-utils перед аналогичными проектами, такими как mtools, заключается в поддержке использования знакомых инструментов Unix (ls, cp, mv и т.д.) Для большого числа файловых систем.

Linux поддерживается и доступны бинарные пакеты (убедитесь, что вы также получаете компоненты ядра rump, на которых он основан). Поскольку мы не 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=... mount не поддерживается, поэтому для доступа к разделу внутри образа диска, похоже, нет другого выбора, кроме как сначала скопировать его ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .