Deixe-me começar dizendo que não sou novo na LUKS. Eu configurei o LUKS com scripts importantes várias vezes com e sem LVM. Não tenho certeza do que realmente está acontecendo aqui. Eu tenho um sistema que possui uma única partição criptografada. Minha unidade está organizada da seguinte maneira:
# lsblk NOME MAJ: TAMANHO MÍN. RM RO TIPO DE MONTAGEM sda 8: 0 0 128G 0 disco └─sda1 8: 1 0 128G 0 partes ├─vg0-root 253: 1 0 20G 0 lvm / ├─vg0-secure 253: 6 0 100M 0 lvm 25 └─secure 253: 7 0 98M 0 criptografia / raiz / seguro V─vg0-swap 253: 4 0 1G 0 lvm [SWAP]
Meu /etc/crypttab
arquivo se parece com isso
# UUID não é necessário aqui, pois o caminho para o LV não será alterado secure / dev / vg0 / secure none luks, keyscript = / lib / cryptsetup / scripts / insecure
Meu /lib/cryptsetup/scripts/insecure
arquivo é executável e se parece com isso
#!/bin/sh
# My actual file looks somewhat different because it dumps the key file with dd.
# This accomplishes virtually the same thing though.
echo -n "my-encryption-password"
Eu update-initramfs -k all -u
executei várias vezes depois de configurar o crypttab e colocar meu arquivo de script de chaves no lugar.
Até onde eu sei, meu arquivo de script nem está sendo copiado para o arquivo initrd.img. Agora que penso nisso, acho que não seria copiado para o arquivo initrd.img, pois a partição raiz não é criptografada e o arquivo de script deve ser facilmente acessível a partir daí.
Após a reinicialização, o sistema vê o registro do crypttab e solicita uma senha (que no meu caso não existe realmente porque a única chave é um arquivo de chaves cheio de bits aleatórios) em vez de usar o script de chave para desbloquear a partição LUKS. Tentei tirar LUKS do LVM e colocá-lo no sda2, e os resultados foram os mesmos. Eu também sei que o script de chave funciona porque cryptsetup luksOpen /dev/vg0/secure secure -d - <<< "$(/lib/cryptsetup/scripts/insecure)"
funciona como um encanto e descriptografa minha partição LUKS.
Eu tentei isso no Ubuntu 16.04.2 e Ubuntu Mate 16.04.2 com os mesmos resultados. Eu usei scripts antes sem nenhum problema. A única diferença era que, no passado, minha partição / era sempre criptografada. Se alguém puder lançar alguma luz, eu agradeceria. Eu só quero uma partição criptografada muito pequena porque pretendo clonar este sistema e não quero cloná-la com a partição / inteira criptografada.
ATUALIZAÇÃO 26-04-2017
Ao pesquisar os logs, encontrei uma linha com o seguinte erro que não faz sentido. Desde quando 'keyscript = / path / to / script' é uma opção desconhecida para o crypttab?
... systemd-cryptsetup [737]: Foi encontrada a opção desconhecida / etc / crypttab 'keyscript = / lib / cryptsetup / scripts / insecure', ignorando.
Só para começar, tentei remover a opção keyscript e usar um arquivo de chave, e tudo funcionou! Na verdade, tentei outras opções, como deslocamento de arquivo de chave, e elas também funcionam. Portanto, o problema está em algum lugar da opção keycript. Alguém tem alguma idéia do porquê?
fonte
Respostas:
Experimente a opção "initramfs" no seu / etc / crypttab (de acordo com /unix//a/447676/356711 ). Você
/etc/crypttab
ficaria assim:Observe que pode ser um problema que seu root fs esteja em um contêiner LVM. Esse problema também é mencionado no artigo vinculado acima: " Mas isso atualmente só funciona (de maneira confiável) se o dispositivo raiz não estiver em um LVM " . Felizmente, parece que é fornecida uma solução alternativa.
Meu sistema fica assim:
... e a seguir
/etc/crypttab
, a descriptografia é mágica com um script de chave (!) no Ubuntu 18.04.2 LTS:Observe que a descriptografia de
sdc2_crypt
com o keycript fornecido funciona sem a opção initramfs (porque contém a raiz fs e, portanto, é "automaticamente" considerada na fase de inicialização do initramfs).md1_crypt
já foi descriptografado apenas durante a fase de inicialização do initramfs (e, portanto, com o keycript de acordo com a entrada crypttab) depois que adicionei a opção initramfs. A descriptografia posterior de md1_crypt durante a fase de inicialização do systemd não funciona com um script de chave fornecido no crypttab porque o "systemd cryptsetup" não suporta a opção script de chave, consulte https://github.com/systemd/systemd/pull/3007 .fonte