Acessa dados de uma partição linux dentro de uma imagem sem privilégios de root

4

Eu tenho um arquivo de imagem de toda a unidade contendo uma tabela de partições e algumas partições. Eu gostaria de listar e ler arquivos de uma partição ext2 / ext3 dentro deste arquivo.

Usando privilégios de raiz, é de alguma forma complicada, mas possível montar em algum deslocamento do arquivo de imagem, montando assim uma partição dentro da imagem como uma real.

Existe alguma chance de acessar os dados sem privilégios de root?

    
por dronus 15.10.2014 / 00:01

4 respostas

1

e2tools

Ah, eu sabia que tinha que haver um jeito melhor. No Ubuntu:

$ sudo apt-get install e2tools

Então:

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

etc

Claro que se você não for root, não poderá usar o pacote binário apt-get : download e2tools de packages.ubuntu.com e instalá-lo em seu diretório home como na resposta do fs-utils.

    
por 20.10.2014 / 18:36
0

qemu

Uma maneira fácil (mas pesada) de fazer isso é usar qemu para iniciar um vm e acessar os arquivos de lá. Você não precisa de root e isso funciona mesmo que você só tenha acesso somente leitura à imagem. Vai ser muito lento embora ...

Usando sua mini distribuição favorita:

qemu -cdrom tomsrtbt.iso -hda disk_image -boot order=d
    
por 20.10.2014 / 17:04
0

Outra máquina + rede

Se você estiver root em outra máquina e tiver acesso de rede ao servidor no qual a imagem do disco está armazenada, há uma boa chance de usar algum tipo de sistema de arquivos de rede (sshfs, httpfs, ftpfs, samba, nfs ...) para mapear o arquivo localmente, ponto no qual você pode montá-lo como root, como de costume.

    
por 20.10.2014 / 17:17
0

fs-utils

Parece que o fs-utils pode ser a solução genérica aqui:

The aim of this project is to have a set of utilities to access and modify a file system image without having to mount it. To use fs-utils you do not have to be root, you just need read/write access to the image or device. The advantage of fs-utils over similar projects such as mtools is supporting the usage of familiar Unix tools ( ls , cp , mv , etc.) for a large number of file systems.

O Linux é suportado e há pacotes binários disponíveis (certifique-se de obter também o componentes do kernel do rump nos quais se baseia). Como não somos root, precisamos instalá-los em nosso diretório pessoal ( ~/usr , por exemplo):

$ 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 -

Adicione isso a ~/.bashrc :

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

Então você pode:

$ 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

Os nomes dos sistemas de arquivos são um pouco diferentes do normal: msdos em vez de vfat, ext2fs ao invés de ext2, cd9660 ao invés de iso9660 etc.

Notas:
- De alguma forma no meu sistema funciona com imagens vfat mas não ext2. Eu não fiz uma versão completa do fs-tools, e tentei um pacote binário que não era uma correspondência exata para a minha distro (o que pode ser o porquê ...)
- Parece que a opção offset=... mount não é suportada, então, para acessar uma partição dentro de uma imagem de disco inteira, parece haver pouca escolha a não ser copiá-la primeiro ...

    
por 20.10.2014 / 17:54