Вопрос или проблема
Извините, я не нашел здесь подходящую тему. У меня странное поведение установки сразу после того, как я установил Linux Mint 22 в существующую структуру таблицы разделов:
- Зашифрованный раздел Luks с LVM для корня, пользователя, swap
- Загрузочный раздел (незашифрованный)
- Двойная загрузка Windows
- Один раздел NTFS для обмена
Раздел LUKS был открыт во время live-сессии, внутри активирован LVM и смонтирован. Все разделы были отформатированы, кроме домашнего раздела с зашифрованными домашними каталогами ecryptfs. Ранее Ubuntu 24.04 был установлен как ошибочное обновление до 22.04 (ошибочное с точки зрения множества небольших проблем с производительностью и мелких ошибок, что не заканчивается непригодной, но плачевно сконфигурированной системой). Свежая установка Ubuntu 24.04 не удалась, так как она больше не поддерживает LUKS и LVM во время установки. Черт.
Затем я начал помощник установки.
Всё прошло нормально, производительность увеличилась на 200%, кроме:
- нет работы HW звукового устройства (но оно существует)
- initramfs не активирует LVM, нет crypttab после второго загрузки (тогда первый взглянул)
- резервная копия домашнего каталога не могла быть корректно расшифрована (этот тикет)
Итак, в подробностях я не могу открыть мою резервную копию домашнего каталога, зашифрованную с использованием точно такого же пароля, как и идентификационный пароль моего пользователя и пароль, используемый для домашнего каталога:
Альтернатива 1:
root# ecryptfs-private-recovery # откуда-то
INFO: Поиск зашифрованных личных каталогов (это может занять некоторое время)...
find: ‘/proc/38986/task/38986/net’: Недопустимый аргумент
find: ‘/proc/38986/net’: Недопустимый аргумент
find: ‘/proc/103650/task/103650/net’: Недопустимый аргумент
find: ‘/proc/103650/net’: Недопустимый аргумент
find: ‘/run/user/1000/gvfs’: Доступ запрещён
find: ‘/run/user/1000/doc’: Доступ запрещён
Поэтому ecryptfs не находит никакого домашнего каталога (кроме /home/user, который является открытым расшифрованным), даже если я запускаю его из директории .Private.
Я знаю
- пароль шифрования
- алгоритм AES
- длина ключа 16 бит
- шифрование имён файлов включено
- passthrough – нет
Согласно здесь и исходя из этого ответа здесь я удалял ключи с использованием (keyctl как инструмент управления ключами, работающий с кольцами ключей, но очевидно не с gnome keyring, философия этого инструмента, к сожалению, совершенно неясна, как и весь инструмент ecryptfs (я не нашел никаких диаграмм/uml схем о нём):
$ sudo su
$ keyctl list @u
2 keys in keyring:
270246897: --alswrv 1000 1000 user: bbbbbbbbbbbbbbbb
996876983: --alswrv 1000 1000 user: aaaaaaaaaaaaaaaa
$ keyctl clean @u [--> никаких доступных ключей
$ ecryptfs-unwrap-passphrase .ecryptfs/wrapped-passphrase
Passphrase: (введите ваш обычный пароль)
PPPPPPPPPPPPPPPP
(запишите этот расшифрованный пароль)
$ sudo ecryptfs-add-passphrase --fnek
Passphrase: (введите PPPPPPPPPPPPPPPP)
Добавлен токен аутентификации с сигнатурой [aaaaaaaaaaaaaaaa] в пользовательский сеансовый кольцо ключей
Добавлен токен аутентификации с сигнатурой [bbbbbbbbbbbbbbbb] в пользовательский сеансовый кольцо ключей
$ sudo mount -t ecryptfs /backup1TB/home_user_bck/.Private /backup1TB/home_user_bck/ -o key=passphrase:passphrase_passwd_file=/home/user/scripts/key.txt,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=n,ecryptfs_enable_filename_crypto=y,ecryptfs_unlink_sigs
Сигнатура ключа шифрования имен файлов (FNEK) [aaaaaaaaaaaaaaaaaa]: bbbbbbbbbbbbbbbb
Попытка монтирования с использованием следующих опций:
ecryptfs_unlink_sigs
ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=aaaaaaaaaaaaaaaaaa
Монтирован eCryptfs
- ecryptfs_fnek_sig и ecryptfs_sig отображаются только скрытно. Поскольку этот домашний резервный каталог работал как зеркало моего домашнего каталога, зашифрованного с ecryptfs с тем же паролем пользователя, для меня было приемлемо сохранять пароль прямо в скрипты с правами 400.
Лог показывает:
$ dmesg | tail
[469436.287197] ecryptfs_parse_tag_70_packet: Ошибка при попытке найти токен автоаутентификации для fnek sig [d5459a9a6d6c7d8a]; rc = [-2]
[469436.287330] Не удалось найти ключ с описанием: [d5459a9a6d6c7d8a]
[469436.287337] process_request_key_err: Нет ключа
[469436.287340] ecryptfs_parse_tag_70_packet: Ошибка при попытке найти токен автоаутентификации для fnek sig [d5459a9a6d6c7d8a]; rc = [-2]
[469469.389865] Не удалось найти ключ с описанием: [d5459a9a6d6c7d8a]
[469469.389884] process_request_key_err: Нет ключа
[469469.389889] ecryptfs_parse_tag_70_packet: Ошибка при попытке найти токен автоаутентификации для fnek sig [d5459a9a6d6c7d8a]; rc = [-2]
[469469.389907] Не удалось найти ключ с описанием: [d5459a9a6d6c7d8a]
[469469.389912] process_request_key_err: Нет ключа
[469469.389915] ecryptfs_parse_tag_70_packet: Ошибка при попытке найти токен автоаутентификации для fnek sig [d5459a9a6d6c7d8a]; rc = [-2]
peddanet@HP-ENVY-Laptop-13-aq1176ng:/backup1TB$ ^C
$ journalctl -xe | grep
Mar 05 00:55:40 HP-ENVY-Laptop-13-aq1176ng sudo[230528]: peddanet : TTY=pts/3 ; PWD=/backup1TB ; USER=root ; COMMAND=/usr/bin/mount -t ecryptfs /backup1TB/home_peddanet_bck/.Private /backup1TB/home_peddanet_bck/ -o key=passphrase:passphrase_passwd_file=/home/peddanet/scripts/key.txt,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=n,ecryptfs_enable_filename_crypto=y
Mar 05 00:55:40 HP-ENVY-Laptop-13-aq1176ng mount.ecryptfs[230537]: Ошибка инициализации модуля ключа [/usr/lib/x86_64-linux-gnu/ecryptfs/libecryptfs_key_mod_gpg.so]; rc = [-22]
Aльтернативный способ
Согласно способу для MINT я выполнял восстановление вот так:
/backup1TB/.ecryptfs/home_user_bck# ecryptfs-recover-private .Private;
INFO: Найдено [.Private].
Попробовать восстановить этот каталог? [Y/n]: Y
INFO: Найден ваш обёрнутый пароль
Вы знаете ваш логин-пароль? [Y/n] Y
INFO: Введите ваш логин-пароль...
Пароль:
Добавлен токен аутентификации с сигнатурой [cccccccccccccccc] в пользовательский сеансовый кольцо ключей
INFO: Успех! Личные данные смонтированы в [/tmp/ecryptfs.HR2cA03S].
# keyctl list @u
3 ключа в кольце ключей:
384278683: --alswrv 0 0 user: bbbbbbbbbbbbbbbb
351461027: --alswrv 0 0 user: aaaaaaaaaaaaaaaa
Ошибок нет! НО:
Результат для обоих способов:
Кажется, работает правильно, но ls -la
показывает:
Просмотр этих директорий так же, как и монтирование с моим паролем, работает “на верхнем уровне” без ошибок, но вы не можете получить доступ к этим файлам и каталогам, это останавливается:
$ ll home_user_bck
ls: невозможно получить доступ к 'home_user_bck/.nuget': Нет такого файла или каталога
ls: невозможно получить доступ к 'home_user_bck/lsix-master': Нет такого файла или каталога
ls: невозможно получить доступ к 'home_user_bck/.mozilla': Нет такого файла или каталога
[..]
ls: невозможно получить доступ к 'home_user_bck/ECRYPTFS_FNEK_ENCRYPTED.FWbJFNeOPKlxWUQHdX-EKzX72XJwQQKem-XJNDrYJBdx.UWXCIKeIOw45E--': Нет такого файла или каталога
ls: невозможно получить доступ к 'home_user_bck/openvlc.tasks': Нет такого файла или каталога
ls: невозможно получить доступ к 'home_user_bck/Screenshot from 2021-11-06 15-37-10.png': Нет такого файла или каталога
[..]
ls: невозможно получить доступ к 'home_user_bck/.ecryptfs': Нет такого файла или каталога
ls: невозможно получить доступ к 'home_user_bck/.thunderbird': Нет такого файла или каталога
ls: невозможно получить доступ к 'home_user_bck/.xsession-errors': Нет такого файла или каталога
ls: невозможно получить доступ к 'home_user_bck/thinclient_drives': Нет такого файла или каталога
[..]
drwxr-xr-x 49 user user 20K Feb 20 12:47 .
drwxr-xr-x 6 user user 4,0K Feb 17 14:31 ..
d????????? ? ? ? ? ? Audio
-????????? ? ? ? ? ? backup.log
-????????? ? ? ? ? ? .bash_history
-????????? ? ? ? ? ? .bash_logout
-????????? ? ? ? ? ? .bashrc
d????????? ? ? ? ? ? bin
d????????? ? ? ? ? ? .cache
d????????? ? ? ? ? ? .conda
d????????? ? ? ? ? ? .config
d????????? ? ? ? ? ? .cups
d????????? ? ? ? ? ? .cyberghost
[..]
d????????? ? ? ? ? ? .dbus
d????????? ? ? ? ? ? Desktop
d????????? ? ? ? ? ? Documents
d????????? ? ? ? ? ? Dokumente
d????????? ? ? ? ? ? .dotnet
d????????? ? ? ? ? ? Downloads
-????????? ? ? ? ? ? examples.desktop
d????????? ? ? ? ? ? .gconf
-????????? ? ? ? ? ? .gitconfig
d????????? ? ? ? ? ? .gnome
d????????? ? ? ? ? ? .gnupg
d????????? ? ? ? ? ? .hardinfo
-????????? ? ? ? ? ? index.html
d????????? ? ? ? ? ? .java
d????????? ? ? ? ? ? jd2
-????????? ? ? ? ? ? key.txt
-????????? ? ? ? ? ? .lesshst
d????????? ? ? ? ? ? .local
d????????? ? ? ? ? ? lsix-master
d????????? ? ? ? ? ? .mozilla
d????????? ? ? ? ? ? Music
l????????? ? ? ? ? ? user
d????????? ? ? ? ? ? Pictures
[..]
d????????? ? ? ? ? ? scripts
d????????? ? ? ? ? ? snap
d????????? ? ? ? ? ? .ssh
-????????? ? ? ? ? ? .sudo_as_admin_successful
d????????? ? ? ? ? ? Templates
-????????? ? ? ? ? ? test
d????????? ? ? ? ? ? Test
d????????? ? ? ? ? ? testdaten
-????????? ? ? ? ? ? testdisk.log
-????????? ? ? ? ? ? that.gif
[..]
Я попробовал ecryptfs: ls списывает верхние папки, но с “нет такого файла или каталога” для них, но, поскольку ecryptfs-recover-private
не нашел – никакого результата. Но похожие результаты, когда дело доходит до перечисления верхних файлов в директории. Нижестоящие директории невозможно перечислить.
Так что пошло не так? Может ли быть странная разница в обработке ecryptfs ранее в Ubuntu 22.04, а теперь в Linux Mint 22.1? Неизбежно ли система ecryptfs повреждена? Как я могу это обнаружить, что еще я могу сделать?
Очевидно, малейшие изменения в вышеупомянутых командах могут привести к совершенно ужасным и скрытым ошибкам (или сообщениям)….
Аннотации
** Папка .ecryptfs
отсутствовала в резервной копии, так как это была прямая копия /home/user back
тогда, я просто скопировал из home/.ecryptfs/user/.ecryptfs в
/backup1TB/.ecryptfs/home_user_backup/. В папке
/backup1TB/home_user_backup/ было две ссылки на .Private
и .ecryptfs
к ранее упомянутой папке .ecryptfs
.
.
Ответ или решение
Проблемы с расшифровкой данных, зашифрованных с использованием eCryptfs, могут быть связаны с множеством факторов, начиная от неверной конфигурации и заканчивая различиями в управлении ключами между версиями ОС. Основываясь на описанном вами случае, рассмотрим, как можно подойти к решению таких проблем, используя подход TEA (Теория, Пример, Применение).
Теория
eCryptfs — это инструмент для шифрования на уровне файловой системы, который предоставляет пользователям возможность шифровать отдельные файлы и директории. Он широко используется для защиты личных данных на уровнях систем пользователей. Ваша проблема, связанная с отображением вопросов при выполнении ls -la
, может быть связана с некорректной расшифровкой данных из-за неправильной настройки параметров монтирования или отсутствия необходимых ключей шифрования.
Основные компоненты, на которые необходимо обратить внимание:
- Ключевые подписи:
ecryptfs_sig
иecryptfs_fnek_sig
должны быть корректны и соответствовать данным в файлах, чтобы система могла корректно расшифровать данные. Любая ошибка в этих данных приведет к невозможности расшифровки. - Методы шифрования и длина ключа: убедитесь, что используете правильные алгоритмы шифрования и длину ключа, которые применялись при первоначальном шифровании.
- Файлы заворачивания ключей:
.ecryptfs/wrapped-passphrase
должен быть доступен и правильно развернут для извлечения корректного passphrase.
Пример
Предположим, у вас есть доступ к предыдущей операционной системе, где зашифрованные данные успешно расшифровывались. Используя эту информацию, можно выяснить рабочую конфигурацию eCryptfs и удостовериться, что на новой системе соответствующие параметры совпадают.
-
Идентификация ключевых данных: проверьте, какие идентификаторы и параметры использовались ранее, и попытайтесь применить их на текущей установке.
-
Сравнение параметров: настройте параметры монтирования так, чтобы они полностью совпадали с ранее используемыми. Особое внимание обратите на:
- Версию eCryptfs и связанные с ним модули.
- Все опции, такие как
ecryptfs_cipher
,ecryptfs_key_bytes
,ecryptfs_passthrough
и другие.
-
Использование резервных копий: убедитесь, что у вас есть полная резервная копия
.ecryptfs
, и что она правильная и целая. Любое повреждение этих файлов может сделать расшифровку невозможной.
Применение
Сложность вашего случая заключается в специфике настроек и возможных несовместимостях между различными версиями дистрибутивов Linux. Рассмотрим пошаговый подход:
-
Проверка входных данных:
- Убедитесь, что имеется доступ ко всем необходимым файлам, включая
.ecryptfs/wrapped-passphrase
. - Проверьте правильность ввода паролей и ключевых данных.
- Убедитесь, что имеется доступ ко всем необходимым файлам, включая
-
Перенастройка параметров:
- Используйте
ecryptfs-add-passphrase
для добавления вручную ключевых данных и перепроверьте указание правильных сигнатур дляecryptfs_sig
иecryptfs_fnek_sig
. - Проверьте, что длина ключа и алгоритмы шифрования совпадают.
- Используйте
-
Отладка и диагностика:
- Используйте команды
dmesg
иjournalctl
для поиска ошибок и предупреждений, связанных с eCryptfs, чтобы диагностировать проблемные моменты. - Пробуйте различные подходы монтирования, начиная с минимальных настроек, и постепенно добавляйте дополнительные параметры.
- Используйте команды
-
Совместимость и обновления:
- Возможно, проблема кроется в несовместимости версий или обновлениях системы. Рассмотрите переход на более старую версию до решения проблем или настройку виртуальной машины с прежним дистрибутивом для временного доступа к данным.
-
Консультации и помощь сообществ:
- Обратитесь в сообщества пользователей Linux, такие как форумы и Stack Exchange, где можно получить специфичный опыт от пользователей с аналогичными проблемами.
В заключении, работа с зашифрованными данными всегда требует внимательности и подходов к отладке с учетом всех возможных конфигураций и обновлений. Понимание особенностей собственной системы шифрования и ее зависимостей — ключ к успешной расшифровке.