Release / Cria a release (push) Canceled after 0s
Release / CLI (linux-aarch64) (push) Canceled after 0s
Release / CLI (linux-x86_64) (push) Canceled after 0s
Release / CLI (macos-aarch64) (push) Canceled after 0s
Release / CLI (macos-x86_64) (push) Canceled after 0s
Release / CLI (windows-x86_64) (push) Canceled after 0s
Release / App desktop (linux-x86_64) (push) Canceled after 0s
Release / App desktop (macos-aarch64) (push) Canceled after 0s
Release / App desktop (macos-x86_64) (push) Canceled after 0s
Release / App desktop (windows-x86_64) (push) Canceled after 0s
Release / Publica a release (push) Canceled after 0s
3.0 KiB
3.0 KiB
Usando o Guará com Docker
English · Português
A imagem traz o terminal guara e o smartctl. Ela serve em três casos:
- Servidor ou NAS Linux sem desktop, com o disco danificado conectado.
- Arquivos de imagem forense (
.img, E01, AFF4) em qualquer sistema com Docker, porque não precisa acessar dispositivo. - Ambiente reproduzível para scripts e CI.
Não é o caminho recomendado para a maioria das pessoas. No desktop, use os pacotes de Releases.
Limites
- Dispositivos brutos só funcionam em hospedeiros Linux. No Windows e no macOS o Docker roda dentro de uma máquina virtual e não repassa discos físicos. Use um arquivo de imagem.
- A interface gráfica não é servida pelo container. O
guara uiescuta só em127.0.0.1e só aceita esseHost, de propósito; abrir isso para fora enfraqueceria a proteção, então não faz parte da imagem. - Arquivos gravados numa pasta montada pertencem ao root, a menos que você passe
--user(possível ao trabalhar com arquivos de imagem).
Construir
docker build -t guara .
Arquivos de imagem (qualquer sistema)
Monte a pasta da imagem somente para leitura e outra pasta para os resultados:
docker run --rm \
-v "$PWD/imagens:/imagens:ro" \
-v "$PWD/saida:/saida" \
--user "$(id -u):$(id -g)" \
guara scan /imagens/disco.img --session /saida/s.json --list
docker run --rm \
-v "$PWD/imagens:/imagens:ro" -v "$PWD/saida:/saida" \
--user "$(id -u):$(id -g)" \
guara recover /saida/s.json /saida/recuperados
Disco físico (hospedeiro Linux)
Passe o dispositivo somente para leitura com a opção :r. O Docker passa a bloquear escritas nele no nível do kernel, além de o Guará nunca gravar na origem:
docker run --rm \
--device=/dev/sdb:/dev/sdb:r \
-v /mnt/outro-disco/saida:/saida \
guara scan /dev/sdb --session /saida/s.json --list
- O destino precisa estar em outro disco que não seja o
/dev/sdb. - Ler dispositivo bruto exige root dentro do container, então não use
--useraqui. - Verificado localmente com um dispositivo de loop (Linux):
inspect,scanerecoverleem através de--device=...:r, e uma tentativa de escrita (dd of=/dev/loop0) falha comOperation not permitted. Dispositivos de loop ficam ocultos noguara devices, como outros dispositivos virtuais, então informe o caminho explicitamente; um pendrive real aparece na lista. - O SMART depende do hospedeiro, do controlador e do dispositivo.
--cap-add=SYS_RAWIOé o complemento usual quando só--devicenão basta, mas isso não foi verificado com um dispositivo de loop, que não tem dados SMART. - Evite
--privileged: ele dá ao container acesso a todos os dispositivos.
Outros comandos
Tudo da referência do terminal funciona do mesmo jeito, por exemplo:
docker run --rm --device=/dev/sdb:/dev/sdb:r guara devices
docker run --rm --device=/dev/sdb:/dev/sdb:r guara health /dev/sdb