Доступ к данным из раздела Linux внутри изображения без прав root
У меня есть файл образа целого диска, содержащий таблицу разделов и некоторые разделы. Я хотел бы перечислить и прочитать файлы из раздела ext2/ext3 внутри этого файла.
Используя корневые привилегии, это как-то усложняется, но возможно монтировать в некотором смещении файла образа, таким образом монтируя раздел внутри изображения, как настоящий.
Есть ли шанс получить доступ к данным без прав root?
4 ответа
e2tools
Ах, я знал, что должен быть лучший способ. На убунту:
$ sudo apt-get install e2tools
Затем:
$ e2ls image.ext2
myfile foo bar baz
$ e2cp image.ext2:/myfile /tmp
так далее
Конечно, если вы не root, вы не можете использовать apt-get
Скачайте двоичный пакет e2tools с http://packages.ubuntu.com/ и установите его в своем домашнем каталоге, как в ответе fs-utils.
QEMU
Простой (но тяжелый) способ сделать это - использовать qemu для запуска vm и доступа к файлам оттуда. Вам не нужен root, и это работает, даже если у вас есть только доступ только для чтения к изображению. Это будет очень медленно, хотя...
Используя ваш любимый мини-дистрибутив:
qemu -cdrom tomsrtbt.iso -hda disk_image -boot order=d
Другая машина + сеть
Если вы являетесь пользователем root на другом компьютере и имеете сетевой доступ к серверу, на котором хранится образ диска, есть большая вероятность, что вы можете использовать какую-то сетевую файловую систему (sshfs, httpfs, ftpfs, samba, nfs ...) для сопоставления файл локально, после чего вы можете монтировать его как root как обычно.
фс-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=...
Опция монтирования не поддерживается, поэтому для доступа к разделу внутри образа диска, похоже, нет другого выбора, кроме как сначала скопировать его...