ให้ฉันเริ่มด้วยการบอกว่าฉันไม่ใช่คนใหม่กับ LUKS ฉันตั้งค่า LUKS ด้วย keyscripts หลายครั้งโดยมีและไม่มี LVM ฉันไม่แน่ใจว่าเกิดอะไรขึ้นที่นี่ ฉันมีระบบที่มีพาร์ทิชันเข้ารหัสเดียว ไดรฟ์ของฉันถูกจัดระเบียบดังนี้:
# lsblk ชื่อ MAJ: MOUNTPOINT ประเภทขั้นต่ำของ RM RM sda 8: 0 0 128G 0 ดิสก์ └─sda1 8: 1 0 128G 0 ส่วนหนึ่ง ├─vg0-root 253: 1 0 20G 0 lvm / ├─vg0ปลอดภัย 253: 6 0 100M 0 lvm 25 └─s 253: 7 0 98M 0 crypt / root / secure └─vg0-swap 253: 4 0 1G 0 lvm [SWAP]
/etc/crypttab
ไฟล์ของฉันมีลักษณะเช่นนี้
# UUID ไม่จำเป็นต้องใช้ที่นี่เนื่องจากเส้นทางไปยัง LV จะไม่เปลี่ยนแปลง secure / dev / vg0 / ไม่มีความปลอดภัย luks, keyscript = / lib / cryptsetup / สคริปต์ / ที่ไม่ปลอดภัย
/lib/cryptsetup/scripts/insecure
ไฟล์ของฉันใช้งานได้และมีลักษณะเช่นนี้
#!/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"
ฉันทำงานupdate-initramfs -k all -u
หลายครั้งหลังจากกำหนดค่า crypttab และวางไฟล์ keyscript ของฉันไว้
เท่าที่ฉันสามารถบอกได้ไฟล์สคริปต์ของฉันไม่ได้ถูกคัดลอกไปยังไฟล์ initrd.img ตอนนี้ฉันคิดแล้วฉันไม่คิดว่ามันจะถูกคัดลอกไปยังไฟล์ initrd.img เนื่องจากรูทพาร์ติชันไม่ได้เข้ารหัสและไฟล์สคริปต์ควรเข้าถึงได้ง่ายจากที่นั่น
เมื่อรีบูตระบบจะเห็นบันทึกจาก crypttab และขอรหัสผ่าน (ซึ่งในกรณีของฉันไม่มีอยู่จริงเพราะคีย์เดียวคือ keyfile ที่เต็มไปด้วยบิตสุ่ม) แทนที่จะใช้ keyscript เพื่อปลดล็อกพาร์ติชัน LUKS ฉันลองนำ LUKS ออกจาก LVM แล้ววางลงบน sda2 และผลลัพธ์ก็เหมือนกัน ฉันรู้ว่า keyscript ใช้งานได้เพราะใช้cryptsetup luksOpen /dev/vg0/secure secure -d - <<< "$(/lib/cryptsetup/scripts/insecure)"
งานได้อย่างมีเสน่ห์และถอดรหัสพาร์ทิชัน LUKS ของฉัน
ฉันได้ลองใน Ubuntu 16.04.2 และ Ubuntu Mate 16.04.2 ด้วยผลลัพธ์เดียวกัน ฉันใช้ keyscripts มาก่อนโดยไม่มีปัญหาใด ๆ ข้อแตกต่างคือในอดีตที่ผ่านมา / พาร์ทิชันของฉันถูกเข้ารหัสเสมอ หากใครสามารถทำให้แสงสว่างบางอย่างฉันจะขอบคุณมัน ฉันต้องการพาร์ติชั่นเข้ารหัสที่มีขนาดเล็กมากเท่านั้นเนื่องจากฉันวางแผนที่จะโคลนระบบนี้และฉันไม่ต้องการโคลนด้วยพาร์ติชันที่เข้ารหัส / ทั้งหมด
อัพเดท 2017-04-26
ในการขุดผ่านบันทึกฉันพบว่ามีข้อผิดพลาดต่อไปนี้ซึ่งไม่สมเหตุสมผล ตั้งแต่ 'keyscript = / path / to / script' ตัวเลือกที่ไม่รู้จักสำหรับ crypttab คืออะไร?
... systemd-cryptsetup [737]: พบตัวเลือก / etc / crypttab ที่ไม่รู้จัก 'keyscript = / lib / cryptsetup / script / insecure' โดยไม่สนใจ
แค่เตะฉันพยายามลบตัวเลือก keyscript และใช้ keyfile และมันก็ใช้ได้ดี! อันที่จริงฉันลองตัวเลือกอื่น ๆ เช่น keyfile-offset และพวกมันก็ทำงานเช่นกัน ดังนั้นปัญหาอยู่ที่ตัวเลือก keyscript ไม่มีใครมีความคิดใด ๆ ว่าทำไม?