Na verdade, é possível modificar mount
, conforme aprendi com a existência de mount.ntfs-3g
. Estou fazendo apenas suposições, mas suspeito que mount -t sometype
resulta em uma chamada para mount.sometype $DEV $MOUNTPOINT $OPTIONS
, sinta-se à vontade para me corrigir aqui ou citar alguma documentação real. Especialmente a opção -o loop
já está sendo tratada, então não há mais necessidade de lopsetup
...
Symlink / crie o script de montagem como /sbin/mount.crypto_LUKS
. Remova a parte do dispositivo loop e, em vez disso, use apenas a opção -o loop
. Aqui está o meu /sbin/mount.crypto_LUKS
:
#!/bin/bash
set -e
if [[ $(mount | grep ${2%%/} | wc -l) -gt 0 ]]; then
echo "Path $2 is already mounted!" >&2
exit 9
else
MAPPER=$(mktemp -up /dev/mapper)
cryptsetup luksOpen $1 $(basename $MAPPER)
shift
mount $MAPPER $* || cryptsetup luksClose $(basename $MAPPER)
fi
Agora só preciso executar mount -o loop ~/container /mnt/decrypted
e mount
solicitará a senha e, em seguida, montará o contêiner, liberando automaticamente o dispositivo de loop quando o contêiner for fechado. Se o sistema de arquivos descriptografado falhar na montagem, o contêiner será fechado novamente, mas você pode modificar isso, é claro. Ou implemente alguma análise de opção em vez de passar tudo para mount
.
Eu esperava que o mesmo pudesse ser alcançado via /sbin/umount.luks
, mas umount /mnt/decrypted
(mesmo com -t crypto_LUKS
) ainda faz a desmontagem normal, deixando o contêiner aberto. Se você encontrar uma maneira de ter umount
chamando meu script dm.umount
, avise-me ... No momento, chamar diretamente umount
é desencorajado, pois você terá que descobrir o nome /dev/mapper
para manualmente %código%. Pelo menos o dispositivo de loop será liberado automaticamente se cryptsetup luksClose $MAPPER
foi usado antes ...