Mari saya mulai dengan mengatakan saya bukan orang baru di LUKS. Saya telah menyiapkan LUKS dengan skrip kunci beberapa kali dengan dan tanpa LVM. Saya tidak yakin apa yang sebenarnya terjadi di sini. Saya memiliki sistem yang memiliki partisi terenkripsi tunggal. Drive saya diatur sebagai berikut:
# lsblk NAMA MAJ: MIN RM UKURAN RO TYPE MOUNTPOINT sda 8: 0 0 128G 0 disk └─sda1 8: 1 0 128G 0 bagian ├─vg0-root 253: 1 0 20G 0 lvm / ├─vg0-secure 253: 6 0 100M 0 lvm │ └─secure 253: 7 0 98M 0 crypt / root / secure └─vg0-swap 253: 4 0 1G 0 lvm [SWAP]
/etc/crypttab
File saya terlihat seperti ini
# UUID tidak diperlukan di sini karena jalur ke LV tidak akan berubah secure / dev / vg0 / secure none luks, keyscript = / lib / cryptsetup / scripts / insecure
/lib/cryptsetup/scripts/insecure
File saya dapat dieksekusi dan terlihat seperti ini
#!/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"
Saya telah menjalankan update-initramfs -k all -u
beberapa kali setelah mengkonfigurasi crypttab dan meletakkan file keyscript saya di tempatnya.
Sejauh yang saya tahu, file skrip saya bahkan tidak disalin ke file initrd.img. Sekarang saya berpikir tentang hal itu, saya tidak berpikir itu akan disalin ke file initrd.img karena partisi root tidak dienkripsi dan file skrip harus mudah diakses dari sana.
Setelah reboot, sistem melihat catatan dari crypttab dan meminta kata sandi (yang dalam kasus saya sebenarnya tidak ada karena satu-satunya kunci adalah file keyfile penuh bit acak) daripada menggunakan skrip kunci untuk membuka kunci partisi LUKS. Saya telah mencoba mengeluarkan LUKS dari LVM dan meletakkannya di sda2, dan hasilnya sama. Saya juga tahu bahwa naskah kunci berfungsi karena cryptsetup luksOpen /dev/vg0/secure secure -d - <<< "$(/lib/cryptsetup/scripts/insecure)"
berfungsi seperti pesona dan mendekripsi partisi LUKS saya.
Saya sudah mencoba ini di Ubuntu 16.04.2 dan Ubuntu Mate 16.04.2 dengan hasil yang sama. Saya telah menggunakan skrip kunci sebelumnya tanpa masalah. Satu-satunya perbedaan adalah bahwa, di masa lalu, partisi / saya selalu dienkripsi. Jika ada yang bisa menjelaskan, saya akan menghargainya. Saya hanya ingin partisi terenkripsi yang sangat kecil karena saya berencana untuk mengkloning sistem ini, dan saya tidak ingin mengkloningnya dengan seluruh / partisi yang dienkripsi.
PEMBARUAN 2017-04-26
Dalam menggali log, saya menemukan garis dengan kesalahan berikut yang tidak masuk akal. Sejak kapan 'keyscript = / path / to / script' merupakan opsi yang tidak diketahui untuk crypttab?
... systemd-cryptsetup [737]: Menemukan opsi yang tidak diketahui / etc / crypttab 'keyscript = / lib / cryptsetup / scripts / insecure', abaikan.
Hanya untuk iseng, saya mencoba menghapus opsi keyscript dan menggunakan keyfile, dan semuanya berhasil! Bahkan, saya mencoba opsi lain seperti keyfile-offset, dan mereka bekerja juga. Oleh karena itu, masalahnya terletak di suatu tempat dengan opsi naskah. Adakah yang tahu mengapa?
sumber
Jawaban:
Coba opsi "initramfs" di / etc / crypttab Anda (sesuai dengan /unix//a/447676/356711 ). Anda
/etc/crypttab
kemudian akan terlihat seperti ini:Harap dicatat bahwa itu mungkin masalah bahwa root fs Anda ada dalam wadah LVM. Masalah ini juga disebutkan dalam artikel yang ditautkan di atas: " Tapi ini saat ini hanya berfungsi (andal) jika perangkat root tidak ada dalam LVM. " Untungnya, sepertinya solusi disediakan.
Sistem saya terlihat seperti ini:
... dan yang berikut
/etc/crypttab
melakukan sihir dekripsi dengan keyscript (!) di Ubuntu 18.04.2 LTS:Perhatikan bahwa dekripsi
sdc2_crypt
dengan kunci naskah yang disediakan berfungsi tanpa opsi initramfs (karena mengandung root fs dan karenanya "secara otomatis" dipertimbangkan dalam fase boot initramfs).md1_crypt
hanya didekripsi selama fase boot initramfs (dan dengan demikian dengan keyscript sesuai dengan entri crypttab) setelah saya menambahkan opsi initramfs. Dekripsi md1_crypt di kemudian hari selama fase boot systemd tidak berfungsi dengan keyscript yang diberikan dalam crypttab karena "systemd cryptsetup" tidak mendukung opsi keycript, lihat https://github.com/systemd/systemd/pull/3007 .sumber