ฉันพบว่าการรันsudo bash
และการรันecryptfs-recover-private
ในฐานะ root (แทนที่จะใช้ sudo) ทำงานได้ ไม่แน่ใจว่าทำไมมันควรจะแตกต่างกัน
แก้ไข:
TL; DR:
# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase - | ecryptfs-add-passphrase --fnek -
< Type your login password here >
Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring
คุณจะไม่เห็นพรอมต์และต้องพิมพ์รหัสผ่านการเข้าสู่ระบบของคุณตาบอดในคำสั่งข้างต้น
แทนที่aaaaaaaaaaaaaaaa
และbbbbbbbbbbbbbbbb
ด้านล่างด้วยลายเซ็นฐานสิบหกระหว่างวงเล็บจากเอาต์พุตด้านบนตามลำดับ:
# mount -i -t ecryptfs -o ecryptfs_sig=aaaaaaaaaaaaaaaa,ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb,ecryptfs_cipher=aes,ecryptfs_key_bytes=16 /mnt/crypt/.ecryptfs/user/.Private /mnt/plain
รอบคัดเลือกโซน
มันกลับกลายเป็นว่าการทำงานเพราะรูทไม่ได้ทำงานอย่างน่าเชื่อถือสำหรับฉัน บางครั้งมันทำบางครั้งก็ไม่ได้ โดยทั่วไปแล้ว ecryptfs ดูเหมือนว่าจะเป็นบั๊กและค่อนข้างเป็นมิตรกับผู้ใช้ซึ่งมักจะสร้างความสับสนให้กับรหัสผ่านสำหรับเข้าสู่ระบบ หลังจากลงไปในโพรงกระต่ายที่ลึกและมืดฉันมีเคล็ดลับที่จะช่วยได้ หมายเหตุเหล่านี้สำหรับ Ubuntu 17.10, ecryptfs-utils 111-0 และคุณควรเป็นรูทก่อนที่จะเริ่ม ฉันคิดว่าคุณต้องการที่จะติดตั้งไดเรกทอรีบ้านของคุณจาก/mnt/crypt
(ซึ่งควรจะติดตั้งแล้ว) เพื่อ/mnt/plain
และคุณควรแทนที่user
ด้วยชื่อผู้ใช้
เริ่มง่าย
สิ่งแรกที่ควรลองคือ:
# ecryptfs-recover-private /mnt/crypt/.ecryptfs/user/.Private
หากได้ผลดีคุณโชคดี ถ้าไม่ได้ก็อาจจะให้ข้อผิดพลาดจากการเกี่ยวกับmount
no such file or directory
นี่เป็นสิ่งที่ทำให้เข้าใจผิดอย่างมาก: ความหมายจริงๆของข้อความรหัสผ่านที่คุณเมานั้นผิดหรือขาดหายไป
รับลายเซ็น
นี่คือส่วนที่สำคัญ: เราจำเป็นต้องตรวจสอบ ecryptfs กำลังลองใช้วลีรหัสผ่านที่ถูกต้อง ข้อความรหัสผ่านจะต้องโหลดลงในเคอร์เนล Linux ก่อนที่จะทำการเข้ารหัสระบบไฟล์ของคุณ ecryptfs ขอเคอร์เนลสำหรับพวกเขาโดยลายเซ็นของพวกเขา ลายเซ็นเป็นค่าเลขฐานสิบหก 16 ไบต์ (และไม่ไวต่อการเข้ารหัส) คุณสามารถค้นหา ecryptfs ลายเซ็นข้อความรหัสผ่านที่ต้องการ:
# cat /mnt/crypt/.ecryptfs/user/.ecryptfs/Private.sig
aaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb
จำสิ่งเหล่านี้ เป้าหมายคือการรับข้อความรหัสผ่านที่มีลายเซ็นเหล่านี้โหลดลงในเคอร์เนลแล้วบอกให้ ecryptfs ใช้งาน ลายเซ็นแรก ( aaaaaaaaaaaaaaaa
) สำหรับข้อมูลและที่สอง ( bbbbbbbbbbbbbbbb
) คือคีย์การเข้ารหัสไฟล์ชื่อ (FNEK)
รับข้อความรหัสผ่าน mount
คำสั่งนี้จะขอให้คุณให้คุณเข้าสู่ระบบรหัสผ่าน (กับพรอมต์ที่ทำให้เข้าใจผิด) และส่งออกของคุณติดข้อความรหัสผ่าน:
# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase
คัดลอกสิ่งนี้ แต่ต้องระวัง !! เช่นนี้มีความสำคัญอย่างยิ่ง cryptographically กุญแจสู่ราชอาณาจักร
ลองติดตั้งแบบโต้ตอบ
สิ่งต่อไปที่ควรลองคือ:
# mount -t ecryptfs /mnt/crypt/.ecryptfs/user/.Private /mnt/plain
สิ่งสำคัญที่นี่คือmount
ต้องมีวลีรหัสผ่านเมาท์ (ละเอียดอ่อน) ที่คุณเพิ่งคัดลอก (ไม่ใช่รหัสผ่านเข้าสู่ระบบของคุณ)
นี้จะถามคำถามบางส่วนและคุณสามารถยอมรับค่าเริ่มต้นยกเว้นEnable filename encryption
ใช่พูดไป อาจให้คำเตือนและขอแคชลายเซ็น คุณสามารถบอกว่าใช่ทั้งคู่ แต่ให้ตรวจสอบอีกครั้งว่าคุณมีข้อความรหัสผ่านที่ถูกต้อง
คุณจะเห็นตัวเลือกที่mount
ตัดสินใจลอง:
Attempting to mount with the following options:
ecryptfs_unlink_sigs
ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=aaaaaaaaaaaaaaaa
Mounted eCryptfs
หากลายเซ็นไม่ถูกต้อง (ไม่ตรงกับที่คุณได้รับPrivate.sig
) การติดตั้งจะไม่ทำงาน
... แต่มันจะรายงานอย่างไม่ช่วยเหลือมาก คุณจะต้องทำls /mnt/plain
และเปิดไฟล์เพื่อให้แน่ใจ ณ จุดนี้คุณยังสามารถค้นหา/var/log/syslog
และตรวจสอบว่า ecryptfs กำลังค้นหาลายเซ็นเดียวกันกับที่เราเป็น
เห็นได้ชัดว่ามีปัญหาที่ร้ายแรงสองประการเกี่ยวกับ ecryptfs ที่นี่และเราต้องแก้ไขปัญหาเหล่านั้น
โหลดคีย์ลงในเคอร์เนล
หากการเมาท์แบบโต้ตอบไม่ช่วยเราต้องโหลดคีย์ลงในเคอร์เนลของเราและระบุด้วยตนเองในตัวเลือกการเมานท์
# ecryptfs-add-passphrase --fnek
และวางข้อความรหัสผ่านแบบเมาท์ (super-senstive) ที่คัดลอกมาจากด้านบน ผลลัพธ์นี้ควร:
Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring
ติดตั้งด้วยตนเอง
ตอนนี้ข้อความรหัสผ่านถูกโหลดลงในเคอร์เนลและเราเพียงแค่บอกให้ mount ใช้มัน:
# umount /mnt/plain
# mount -i -t ecryptfs -o ecryptfs_sig=aaaaaaaaaaaaaaaa,ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb,ecryptfs_cipher=aes,ecryptfs_key_bytes=16 /mnt/crypt/.ecryptfs/user/.Private /mnt/plain
คุณจะสังเกตเห็นว่าตัวเลือกนั้นคล้ายกับที่เมานต์แบบโต้ตอบพิมพ์ออกมายกเว้นว่าเรากำลังบอกด้วยตนเองว่ามีอะไรเกิดขึ้น
หวังว่ามันจะใช้ได้ หากไม่มีคุณสามารถตรวจสอบว่าคีย์ถูกโหลดลงในเคอร์เนลโดยใช้ลายเซ็นที่ถูกต้องkeyctl list @u
ซึ่งควรพิมพ์อย่างน้อยสองลายเซ็นที่คุณต้องการ
ecryptfs-recover-private
ผลลัพธ์ข้อผิดพลาดการเมานท์ (2) พยายามที่จะเรียกsudo ecryptfs-manager
ให้กด 4 (ออก)ecryptfs-recover-private
แล้วทำงานอีกครั้งเดิม ควรทำงานตอนนี้