Tôi thấy rằng chạy sudo bash
và sau đó chạy ecryptfs-recover-private
bằng root (chứ không phải thông qua sudo) đã làm việc. Không chắc chắn tại sao nó nên khác nhau.
Biên tập:
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
Bạn sẽ không thấy lời nhắc và phải nhập mật khẩu đăng nhập, bị mù, vào lệnh trên.
Thay thế aaaaaaaaaaaaaaaa
và bbbbbbbbbbbbbbbb
bên dưới bằng chữ ký hex giữa các dấu ngoặc từ đầu ra ở trên, theo thứ tự:
# 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
Sơ bộ
Hóa ra chỉ chạy khi root không hoạt động đáng tin cậy đối với tôi; đôi khi nó đã làm, đôi khi nó đã không. Về cơ bản, ecryptfs có vẻ lỗi và khá thân thiện với người dùng, thường gây nhầm lẫn mật khẩu đăng nhập và gắn cụm mật khẩu. Sau khi đi xuống một hố thỏ sâu, tối, tôi có một số lời khuyên nên giúp đỡ. Các ghi chú này dành cho Ubuntu 17.10, ecryptfs-utils 111-0 và bạn nên trở thành root trước khi bắt đầu. Tôi giả sử bạn muốn gắn thư mục chính của mình từ /mnt/crypt
(cần được gắn kết) vào /mnt/plain
và bạn nên thay thế user
bằng tên người dùng.
Bắt đầu dễ dàng
Điều đầu tiên để thử là:
# ecryptfs-recover-private /mnt/crypt/.ecryptfs/user/.Private
Nếu điều này hoạt động, tốt, bạn may mắn. Nếu không, nó có thể đưa ra một thông báo lỗi từ mount
khoảng no such file or directory
. Điều này cực kỳ sai lệch: điều thực sự có nghĩa là cụm mật khẩu gắn kết của bạn bị sai hoặc thiếu.
Nhận chữ ký
Đây là phần quan trọng: chúng ta cần xác minh ecryptfs thực sự đang thử (các) cụm mật khẩu gắn kết đúng. Các cụm mật khẩu phải được tải vào nhân Linux trước khi ecryptfs có thể gắn kết hệ thống tệp của bạn. ecryptfs yêu cầu kernel cho họ bằng chữ ký của họ. Chữ ký là một giá trị hex 16 byte (và không nhạy cảm về mặt mật mã). Bạn có thể tìm thấy chữ ký mật khẩu mà ecryptfs đang mong đợi:
# cat /mnt/crypt/.ecryptfs/user/.ecryptfs/Private.sig
aaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb
Hãy nhớ những điều này. Mục tiêu là để có được các cụm mật khẩu với các chữ ký này được tải vào kernel và sau đó báo cho ecryptfs sử dụng chúng. Chữ ký đầu tiên ( aaaaaaaaaaaaaaaa
) dành cho dữ liệu và chữ ký thứ hai ( bbbbbbbbbbbbbbbb
) là Khóa mã hóa tên tệp (FNEK).
Lấy cụm mật khẩu gắn kết
Lệnh này sẽ yêu cầu bạn cung cấp cho bạn mật khẩu đăng nhập (với lời nhắc sai lệch) và xuất cụm mật khẩu gắn kết của bạn :
# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase
Sao chép này nhưng hãy cẩn thận !! , vì điều này cực kỳ nhạy cảm về mật mã, chìa khóa của vương quốc.
Hãy thử gắn kết tương tác
Điều tiếp theo để thử là:
# mount -t ecryptfs /mnt/crypt/.ecryptfs/user/.Private /mnt/plain
Điều quan trọng ở đây là mount
cần cụm mật khẩu gắn kết (siêu nhạy cảm) mà chúng tôi vừa sao chép (không phải mật khẩu đăng nhập của bạn).
Điều này sẽ hỏi bạn một số câu hỏi và bạn có thể chấp nhận mặc định ngoại trừ nói có với Enable filename encryption
. Nó có thể cung cấp cho bạn một cảnh báo và yêu cầu lưu trữ chữ ký; bạn có thể nói đồng ý với cả hai, nhưng hãy kiểm tra kỹ xem bạn đã có cụm mật khẩu gắn kết đúng chưa.
Bạn sẽ thấy các tùy chọn mount
đã quyết định thử cho bạn:
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
Nếu chữ ký sai (không khớp với những gì bạn nhận được Private.sig
), gắn kết sẽ không hoạt động.
... nhưng nó sẽ báo cáo một cách vô ích rằng nó đã làm. Bạn sẽ phải làm một ls /mnt/plain
và cat một tập tin để đảm bảo. Tại thời điểm này, bạn cũng có thể xem /var/log/syslog
và xác minh rằng ecryptfs đang tìm kiếm các chữ ký giống như chúng ta.
Rõ ràng có hai vấn đề nghiêm trọng với ecryptfs ở đây và chúng ta phải làm việc xung quanh chúng.
Nạp các khóa vào kernel
Nếu việc gắn kết tương tác không có ích, chúng ta phải tự tải các khóa vào kernel và tự chỉ định chúng trong các tùy chọn gắn kết.
# ecryptfs-add-passphrase --fnek
Và dán vào cụm mật khẩu gắn kết (siêu senstive) của bạn được sao chép từ phía trên. Điều này sẽ xuất ra:
Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring
Gắn thủ công
Bây giờ các cụm mật khẩu được tải vào kernel và chúng ta chỉ cần nói với mount để sử dụng chúng:
# 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
Bạn sẽ nhận thấy các tùy chọn tương tự như những gì gắn kết tương tác được in ra, ngoại trừ chúng tôi đang nói thủ công về ecryptfs.
Hy vọng điều này làm việc. Nếu không, bạn có thể kiểm tra xem các khóa đã được tải vào kernel có chữ ký chính xác bằng cách sử dụng chưa keyctl list @u
, có nên in ra ít nhất hai chữ ký mà bạn mong đợi.
ecryptfs-recover-private
đầu ra lỗi mount (2). cố gắng chạysudo ecryptfs-manager
, nhấn 4 (thoát), sau đó chạy lại bản gốcecryptfs-recover-private
. nên làm việc ngay bây giờ