Вопрос или проблема
Я в процессе переноса своей операционной системы и данных с одного диска на другой на одном и том же компьютере. (Я купил отличный новый SSD.) Мой старый домашний каталог содержал зашифрованный подкаталог, и я хотел бы получить доступ к зашифрованному каталогу из новой установки. Я пытаюсь использовать ecryptfs-recover-private
. Однако я сталкиваюсь со следующей ошибкой.
$ sudo ecryptfs-recover-private /BLAH/.Private
INFO: Найден [.Private/].
Попробовать восстановить этот каталог? [Y/n]:
INFO: Найдена ваша обернутая парольная фраза
Вы знаете свою парольную фразу LOGIN? [Y/n]
INFO: Введите вашу парольную фразу LOGIN...
Парольная фраза:
Вставлена токен аутентификации с подписью [BLAH] в ключевую цепочку пользовательской сессии
mount: mount(2) не удалось: Нет такого файла или директории
ERROR: Не удалось смонтировать приватные данные по адресу [/tmp/ecryptfs.NcWkVmQ5].
Я сталкиваюсь с той же проблемой, если позволяю ecryptfs-recover-private
самостоятельно найти каталог или если я говорю “нет” на вопрос о парольной фразе для входа, но использую вместо этого парольную фразу монтирования.
Мысли?
(Я понимаю, что на этом сайте есть несколько похожих вопросов, но ни один из них, похоже, не охватывает мою ситуацию.)
Я не уверен, почему это происходит – возможно, должна быть ошибка в ключевой цепочке ядра, когда используется та же парольная фраза LOGIN на вашей новой установке, что и на той, которую вы пытаетесь восстановить.
Тем не менее, добавление обернутой парольной фразы в ключевую цепочку ядра перед попыткой восстановить файловую систему работает (обязательно используйте sudo
в обеих командах ниже):
sudo ecryptfs-insert-wrapped-passphrase-into-keyring /BLAH/.ecryptfs/wrapped-passphrase
sudo ecryptfs-recover-private /BLAH/.Private
Таким образом, эта простая команда ecryptfs-recover-private
оказалась ненадежной.
Ни один из методов выше не сработал для меня, пытаясь перейти с ecryptfs на контейнер LUKS.
Тем не менее, сработал ручной метод, описанный в вики сообщества ubuntu
В деталях:
# sudo -i
# ecryptfs-add-passphrase --fnek
Вставлена токен аутентификации с подписью [aaaaaaaaaaaaa] в ключевую цепочку пользовательской сессии
Вставлена токен аутентификации с подписью [bbbbbbbbbbbbb] в ключевую цепочку пользовательской сессии
# mkdir -p /mnt/new_mount_point
# mount -t ecryptfs /mnt/old_mount_point/home/username/.Private /mnt/new_mount_point
- выберите 3 (используйте тип ключа парольной фразы и используйте свою восстановленную парольную фразу, т.е. не обернутую)
- выберите aes (используйте шифр aes)
- выберите 16 (используйте 16-байтный ключ)
- включите прохождение в открытом виде: n
- включите шифрование имени файла: y
Для меня это сработало, как обсуждалось на ecryptfs-mount-private не удается инициализировать ключи ecryptfs:
sudo keyctl link @u @s
sudo ecryptfs-recover-private .Private
В данный момент я использую Debian testing и недавно мне понадобилось восстановить файл из резервной копии моей зашифрованной папки .Private. Резервная копия хранится на моем NAS. Я столкнулся с той же проблемой, что и вы. Ручное добавление обернутой парольной фразы не помогло, и ручное монтирование файловой системы cifs (с моего NAS) от имени root вместо создания монтирования от имени основного пользователя (чтобы избежать конфликтов прав и всего прочего) тоже не помогло.
Тем не менее, после простого перезагрузки системы, я смог непосредственно использовать команду ecryptfs-recover-private для монтирования папки .Private, которая сама находилась на файловой системе cifs.
Хотя это не объясняет, что идет не так, и это одна из более разочаровывающих подсказок, которые вы можете получить как пользователь linux:
перезагрузите свою систему и попробуйте снова 🙂
У меня были похожие ошибки после того, как я переименовал предыдущий (оригинальный) POSIX-имя пользователя в old_user и затем создал нового пользователя с названием оригинального (предыдущего имени пользователя).
Чтобы иметь возможность смонтировать зашифрованный домашний каталог от old_user, мне пришлось заново создать символические ссылки для .encryptfs и .Private в его папке (поскольку они указывали на /home/original_name/).
После этого следующая команда смонтировала старый домашний каталог без каких-либо проблем. /usr/bin/ecryptfs-recover-private /home/old_user/.Private
Я потратил часы на эту проблему, не понимая, почему эти простые команды не работали.
Я обнаружил, что в …/home/.ecryptfs и …/home/.ecryptfs/username/.ecryptfs есть вводящие в заблуждение ссылки.
ИЗМЕНЕНИЕ: следующее решение требует подтверждения.
Можно обойтись без повторного связывания, но параметры, переданные ecryptfs-recover-private
, могут быть источником проблемы.
Мое решение заключалось в повторном связывании с относительным путем файла .Private и .ecryptfs в /home/.ecryptfs/
Чтобы уточнить:
В моем случае домашний пользователь, которого я хотел прочитать, был в /mnt/sda5/home и пользователь был guy
$ cd /mnt/sda5/home
$ ls -lag .ecryptfs/guy/
drwxr-xr-x 4 guy 4096 .
drwxr-xr-x 3 root 4096 ..
drwx------ 16 guy 4096 .Private
drwx------ 2 guy 4096 .ecryptfs
$ ls -lag .ecryptfs/guy/.ecryptfs/
drwx------ 2 guy 4096 Jan 1 00:12 .
drwxr-xr-x 4 guy 4096 Jan 1 00:11 ..
-rw------- 1 guy 13 Jan 1 00:11 Private.mnt
-rw------- 1 guy 34 Jan 1 00:11 Private.sig
-rw-r--r-- 1 guy 0 Jan 1 00:11 auto-mount
-rw-r--r-- 1 guy 0 Jan 1 00:11 auto-umount
-rw------- 1 guy 58 Jan 1 00:12 wrapped-passphrase
#Здесь хранятся данные
Если вы перечислите файлы в домашнем каталоге, у вас будут следующие ссылки (до моего исправления)
$ ls -lag guy/
lrwxrwxrwx 1 root 28 Янв 2 15:52 .Private -> /home/guy/.Private
lrwxrwxrwx 1 root 29 Янв 2 15:49 .ecryptfs -> /home/guy/.ecryptfs
поэтому файлы ссылаются на текущий /home и пользователя, а не на те, что вы пытаетесь прочитать, что сбивает вас с толку и команды монтирования.
После исправления я выполнил:
$ ls -lag guy/
dr-x------ 2 guy 4096 Янв 2 15:52 .
drwxr-xr-x 6 root 4096 Янв 1 00:11 ..
lrwxrwxrwx 1 root 28 Янв 2 15:52 .Private -> ../.ecryptfs/guy/.Private
lrwxrwxrwx 1 root 29 Янв 2 15:49 .ecryptfs -> ../.ecryptfs/guy/.ecryptfs
lrwxrwxrwx 1 guy 56 Янв 1 00:11 Access-Your-Private-Data.desktop -> /usr/share/ecryptfs-utils/ecryptfs-mount-private.desktop
lrwxrwxrwx 1 guy 52 Янв 1 00:11 README.txt -> /usr/share/ecryptfs-utils/ecryptfs-mount-private.txt
Мое решение заключалось в повторном связывании с относительным путем файла .Private и .ecryptfs
$ cd /mnt/sda5/home
$ cd guy
$ sudo unlink .Private
$ sudo unlink .ecryptfs
$ sudo ln -sr ../.ecryptfs/guy/.Private
$ sudo ln -sr ../.ecryptfs/guy/.ecryptfs
После этого вы можете вручную смонтировать домашний каталог или использовать
cd /mnt/sda5/home
sudo ecryptfs-recover-private .ecryptfs/guy/.ecryptfs/.Private
(вам понадобится ваша парольная фраза МОНТАЖА – серия из 32 символов)
Необходимо включить опцию Чтение/Запись:
sudo ecryptfs-recover-private --rw /BLAH/.Private
Ответ или решение
Проблема с ecryptfs-recover-private
: возникновение ошибки mount(2) failed: No such file or directory
При перемещении операционной системы и данных на новый SSD, вы столкнулись с проблемой доступа к зашифрованной директории внутри старого домашнего каталога. Ошибка, которая возникает при попытке использовать ecryptfs-recover-private
, указывает на несуществующий файл или директорию, что может вызывать множество затруднений. В этой статье мы подробно рассмотрим возможные причины возникновения этой ошибки и методы ее устранения.
Подробный анализ проблемы
Ошибка mount(2) failed: No such file or directory
обычно свидетельствует о том, что временная директория, в которую ecryptfs
пытается смонтировать зашифрованные данные, не может быть создана или доступ к ней ограничен. Возможные причины и их решения включают:
-
Проблемы с правами доступа:
- Убедитесь, что у вас есть права администратора на выполнение команд с
sudo
. Если файл.Private
находится на сетевом ресурсе, могут возникнуть сложности, связанные с правами доступа к CIFS. В этом случае попробуйте перенести зашифрованную директорию на локальный диск перед восстановлением.
- Убедитесь, что у вас есть права администратора на выполнение команд с
-
Ошибки в ключах ядра:
-
Если вы используете одинаковый пароль для входа на новую установку, это может вызвать путаницу в ключах ядра. Для решения проблемы попробуйте вручную вставить зашифрованный ключ с помощью команды:
sudo ecryptfs-insert-wrapped-passphrase-into-keyring /BLAH/.ecryptfs/wrapped-passphrase
После этого снова запустите:
sudo ecryptfs-recover-private /BLAH/.Private
-
-
Необходимость ручного восстановления:
- Если предыдущие методы не помогли, возможно, имеет смысл перейти к ручному восстановлению. Это можно сделать так:
sudo -i ecryptfs-add-passphrase --fnek mkdir -p /mnt/new_mount_point mount -t ecryptfs /mnt/old_mount_point/home/username/.Private /mnt/new_mount_point
При выполнении команды
mount
, вам понадобится указать следующие параметры:- Тип ключа:
passphrase
- Шифр:
aes
- Размер ключа:
16
- Разрешите шифрование имен файлов:
y
- Параметр
plaintext passthrough
:n
-
Ссылки на директории:
- Иногда проблема возникает из-за неправильных символических ссылок между директориями. Убедитесь, что ссылки на
.ecryptfs
и.Private
правильно указывают на необходимые пути. Вы можете использовать командуls -l
для проверки связей и в случае необходимости пересоздать их.
cd /mnt/sda5/home/guy sudo unlink .Private sudo unlink .ecryptfs sudo ln -sr ../.ecryptfs/guy/.Private sudo ln -sr ../.ecryptfs/guy/.ecryptfs
- Иногда проблема возникает из-за неправильных символических ссылок между директориями. Убедитесь, что ссылки на
-
Перезагрузка системы:
- Простая перезагрузка системы может помочь. Иногда конфигурации ядра и сессии могут не обновляться должным образом, и перезагрузка может восстановить необходимое состояние.
Заключение
Проблема, с которой вы столкнулись, при использовании ecryptfs-recover-private
может быть вызвана рядом факторов, включая права доступа, ошибки с ключами ядра и неправильные ссылки на директории. С применением перечисленных решений вы сможете эффективно устранить данную проблему и получить доступ к зашифрованным данным. Если после выполнения всех шагов проблема все еще не решается, рассмотрите возможность использования резервной копии данных или других методов восстановления.