truecrypt - como especificar o tipo de sistema de arquivos a partir da linha de comando ao criar um volume

3

SO : Mint 12, 64 bits (kernel do Linux: 3.5.0-17)
versão do truecrypt : 7.1a

Estou usando o truecrypt em um script de automação. E eu quero criar um volume com o sistema de arquivos Ext4. Mas parece que a opção --filesystem não pode fazer isso.

Quando eu passo --filesystem=ext4 no momento da criação, não consigo montar o volume. Ele diz "você deve especificar o sistema de arquivos" e quando eu passar --filesystem para montar o comando, recebo um erro. Em syslog disse:

EXT4-fs (dm-2): VFS: Can't find ext4 filesystem

Mas, quando não passo a opção --filesystem no momento da criação, ele me pergunta pelo sistema de arquivos e posso escolher Linux Ext4 e tudo corre bem.

Eu sei que posso passar --filesystem=none e depois formatar o volume depois, mas não é o que eu quero. (Como o script não sabe qual dispositivo ele deve formatar? Há talvez outros volumes TrueCrypt montados.)

    
por Aidin 15.10.2013 / 20:25

1 resposta

2

Depois de várias noites trabalhando nisso, finalmente encontrei uma sequência confiável de comandos para criar e destruir volumes Truecrypt formatados em ext4.

Cheguei a este ponto depois de várias tentativas de usar o Tomb e o Truecrypt propriamente dito antes de finalmente mudar para o bifurcado versão do Truecrypt chamada tc-play

Por que eu abandonei esses outros dois utilitários? Túmulo, eu tive problemas de confiabilidade. Periodicamente, após uma operação de redimensionamento da tumba, a ferramenta recusava-se a aceitar a senha que associei às minhas chaves de túmulo. Eu poderia ter consertado isso eventualmente, mas quem quer depurar scripts do ksh o dia todo? :) Eu realmente gosto do projeto Tomb e espero que continue a ter sucesso no futuro.

Truecrypt adequado? Eu não gostava de ter que confiar nos binários fornecidos, especialmente porque havia muitos relatórios online de pessoas incapazes de reproduzir os mesmos binários com a mesma fonte. Fico feliz por haver uma auditoria com financiamento público desse código em andamento. Eu também não estava disposto a confiar em minha própria compilação personalizada da fonte. Estou construindo um sistema de backup aqui e não queria correr o risco de que daqui a 5 anos eu precisasse fazer uma recompilação por algum motivo e queimar um final de semana inteiro apenas fazendo com que ele compilasse com os compiladores atualizados do dia .

Por que vale a pena, o tc-play está incluído no repositório apt no Ubuntu 13 (e presumivelmente a maioria das outras distribuições / versões). Este código presume que os comandos estão sendo executados como uma conta de usuário normal, com comandos selecionados sendo colocados na lista de permissões por meio de sudoers.

Nota final: Eu queria que tudo isso fosse roteirizado, apesar do fato de que o tc-play deseja entrada de teclado interativa para coletar senhas. Eu conheço incorporando senhas em scripts é uma forma ruim geralmente, mas todo o meu sistema depende de ter meu servidor de backup bloqueado de qualquer maneira. Se alguém conseguir acessar a senha no script, tenho problemas maiores para se preocupar.

Então, com todo esse preâmbulo fora do caminho, aqui estão meus comandos. Sinta-se à vontade para copiar / colar e temperar a gosto. Feedback bem-vindo e apreciado, se você encontrar algum problema ou tiver alguma sugestão:

export ARCHIVE=foo.tc
export SIZE_M=20
export PASSWORDBASE=superdupertopsecret
export CLOUD_DIR=/mnt/cloud/r3cgm/

# create archive
dd if=/dev/zero of=$CLOUD_DIR$ARCHIVE bs=1 count=0 seek=${SIZE_M}M

# find free loopback device
LOOPBACK_DEV=$(sudo losetup -f)

# associate loopback device with archive
sudo losetup $LOOPBACK_DEV $CLOUD_DIR$ARCHIVE

# to enable Expect debugging, add this:
# exp_internal 1

# encrypt loopback device
expect -c "spawn sudo tcplay -c -d $LOOPBACK_DEV -a whirlpool -b AES-256-XTS
set timeout 2
expect Passphrase
send $PASSWORDBASE$ARCHIVE\r
expect Repeat
send $PASSWORDBASE$ARCHIVE\r
expect proceed
send y\r
interact
"

# map loopback device with file container
# DEBUG: sometimes this needs to be run twice / fails the first time, why?
expect -c "spawn sudo tcplay -m $ARCHIVE -d $LOOPBACK_DEV
set timeout 1
expect Passphrase
send $PASSWORDBASE$ARCHIVE\r
expect eof
"

# format archive with ext4
sudo mkfs.ext4 /dev/mapper/$ARCHIVE

[[ -d "/mnt/$ARCHIVE" ]] || sudo mkdir /mnt/$ARCHIVE

# mount archive
sudo mount /dev/mapper/$ARCHIVE /mnt/$ARCHIVE


# UNDO


# unmount archive
sudo umount /mnt/$ARCHIVE

# remove volume
sudo dmsetup remove $ARCHIVE

# delete loopback device
sudo losetup -d $LOOPBACK_DEV

# remove the archive
# rm $CLOUD_DIR$ARCHIVE
    
por 28.12.2013 / 03:02

Tags