Como copiar para uma imagem formatada sem privilégios de root?

3

Formatei um arquivo de imagem usando o comando mkfs e gostaria de copiar arquivos para esse arquivo de imagem sem privilégios de root.

Eu já tentei montar a imagem em um diretório local, o que exigiu privilégios de root por algum motivo. (fique à vontade para comentar o porquê)

Existe uma maneira amplamente suportada de copiar arquivos para uma imagem formatada sem exigir privilégios de root.

Edit: A imagem está formatada como FAT-32.

    
por Jeroen Bollen 16.08.2014 / 22:50

2 respostas

1

Entre outras coisas, é possível obstruir / sobrepor estruturas de sistema de arquivos com montagens, assim, normalmente, não é permitido montar nada em qualquer lugar sem privilégios de root. Os casos em que isso é feito (ou parece ser feito), geralmente há um auxiliar de montagem envolvido que é executado como raiz (como fusermount, udisks, ...).

Se por algum motivo o uso de um auxiliar de montagem não for uma opção, "uma maneira amplamente suportada de copiar arquivos em uma imagem formatada" é usar mkisofs , que cria uma imagem contendo seus arquivos e nenhuma raiz envolvida em lugar algum. / p>

Seria perfeitamente possível implementar o que o mkisofs faz (e mais) em um programa de espaço do usuário, mas como a maioria das pessoas não tem problemas com montagem, não tenho certeza se esse programa existe para a maioria dos sistemas de arquivos. / p>

Para ext* , há debugfs , que faz parte dele.

$ echo Hello World > hello.txt
$ truncate -s 100M foobar
$ /sbin/mkfs.ext4 foobar
$ /sbin/debugfs -w foobar
debugfs 1.42.11 (09-Jul-2014)
debugfs:  ls
2  (12) .    2  (12) ..    11  (20) lost+found
debugfs:  mkdir hey
debugfs:  mkdir what
debugfs:  mkdir up
debugfs:  ls
2  (12) .    2  (12) ..    11  (20) lost+found    12  (12) hey   
 13  (12) what    14  (956) up
debugfs:  write hello.txt hello.txt
Allocated inode: 15
debugfs:  cat hello.txt
Hello World

Então, isso parece funcionar. Automatizar é possível ( -f cmdfile opção), mas parece lição de casa.

    
por 17.08.2014 / 00:21
0

A montagem de sistemas de arquivos é reservada para root por padrão, porque muitos sistemas de arquivos permitem que um usuário ganhe privilégios se eles controlarem a imagem do disco (por exemplo, criando arquivos setuid).

Procure uma implementação do sistema de arquivos FUSE que suporte o sistema de arquivos da sua imagem. Os drivers do sistema de arquivos FUSE são executados no espaço do usuário sem privilégios, ao contrário dos drivers do sistema de arquivos no kernel. Infelizmente, nem todos os sistemas de arquivos têm implementações do FUSE; em particular, eu não sei de qualquer implementação do FUSE ext4 de leitura / gravação.

O caminho de menor resistência é frequentemente para acessar a imagem do sistema de arquivos através de uma máquina virtual.

    
por 17.08.2014 / 01:58