eCryptfs (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
eCryptfs
. Дата последней синхронизации: 24 июля 2022. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Warning
eCryptfs не поддерживается и разработчики ядра Linux обсуждают его устаревание и возможное удаление из ядра Linux. Он может не получать будущие обновления или исправления. Для новых нужд в шифровании рассмотрите современные альтернативы, такие как
fscrypt
или
dm-crypt
. Проверьте последние обсуждения:
https://lkml.org/lkml/2024/10/30/1553
В статье описывается базовое использование
eCryptfs
. Статья проведёт вас через процесс установки зашифрованной домашней директории,
в которой вы можете хранить личные/секретные данные.
Реализация eCryptfs отличается от реализации
dm-crypt
, которая предоставляет
слой шифрования блочного устройства
, в то время как eCryptfs является файловой системой —
стековая криптографическая файловая система
. О сравнении двух методов шифрования можно прочитать в статье
Data-at-rest encryption (Русский)#Сравнение типов шифрования
. Отличительной особенностью eCryptfs является то, что шифрование работает поверх существующей файловой системы; eCryptfs может быть смонтирован на любой существующий каталог и не требует отдельного раздела (или предварительного выделения места).
Основы
Как уже упоминалось выше, eCryptfs не требует создавать отдельный раздел или предварительно выделять место. Вместо этого вы можете смонтировать eCryptfs поверх любого отдельного каталога для его защиты. Это включает, например, весь домашний каталог пользователя или отдельные каталоги внутри него. Все метаданные, необходимые для работы с шифрованием, хранятся в заголовках файлов, поэтому зашифрованные данные можно легко перемещать, хранить для резервного копирования и восстанавливать. Есть и другие преимущества, но есть и недостатки, например, eCryptfs не подходит для шифрования разделов целиком, что также означает, что вы не можете с его помощью защитить подкачку (но вы, конечно, можете использовать его совместно с
dm-crypt для шифрования подкачки
). Если вы только начинаете работать с шифрованием диска, шифрование подкачки и другие моменты, на которые стоит обратить внимание, рассматриваются в разделе
Data-at-rest encryption (Русский)#Подготовка
.
Несколько моментов для ознакомления с eCryptfs:
Так как eCryptfs это стековая ФС, монтирование eCryptfs означает монтирование зашифрованного каталога в другую
не
зашифрованную точку монтирования (каталог).
Существует возможность совместного использования зашифрованного каталога несколькими пользователями. Однако шифрование выполняется одним паролем, поэтому пароль тоже должен быть общим для всех. Также можно совместно использовать каталог с разными зашифрованными файлами (разные пароли).
Некоторые термины eCryptfs, используемые в документации:
В документации eCryptfs и в этой статье каталог, в котором хранятся данные в зашифрованном виде, называется
нижним
(lower), а каталог, в котором отображаются расшифрованные данные, —
верхним
(upper). Хотя это и не относится к данной статье,
файловая система Overlay
, представленная в Linux 3.18, использует
то же обозначение верхних/нижних каталогов
для объединения файловых систем.
Пароль
монтирования
(mount passphrase или key) — это то, что даёт доступ к зашифрованным файлам, то есть выполняет разблокировку зашифрованных данных. eCryptfs использует термин «
wrapped
passphrase» для обозначения криптографически защищённого пароля монтирования.
FEKEK
означает
F
ile's
E
ncryption
K
ey
E
ncryption
K
ey — ключ шифрования, которым шифруются ключи шифрования файлов (смотрите
документацию ядра
).
FNEK
означает
F
ile
N
ame
E
ncryption
K
ey, ключ для (опционального) шифрования имён файлов, хранящихся в зашифрованном каталоге.
Перед использованием eCryptfs проверьте применимость следующих недостатков.
Недостатки
Простота использования
Пакет
ecryptfs-utils
предоставляет несколько различных способов настройки eCryptfs. Высокоуровневые
#Инструменты Ubuntu
наиболее просты в использовании, но они жёстко кодируют путь к нижнему каталогу и другие настройки, что ограничивает их полезность. Пакет также включает низкоуровневые инструменты, которые полностью настраиваются, но они несколько сложнее в использовании по сравнению с альтернативами вроде
EncFS
.
Длина имени файла
Имена файлов длиной более 143 байт не могут быть зашифрованы (с опцией
FNEK
), если используется файловая система с максимальной длиной имени файла 255 байт.
[1]
Это может нарушить работу некоторых программ в вашем домашнем каталоге (например, кэширование
Symfony
).
Монтирование сетевых хранилищ
eCryptfs имеет давние
баги
при использовании поверх NFS и, возможно, других сетевых файловых систем, например,
#При подключении через Mosh может произойти сбой монтирования на удалённом хосте
. Всегда можно использовать eCryptfs в локальном каталоге, а затем скопировать зашифрованные файлы из локального каталога на сетевой хост. Однако, если вы хотите установить eCryptfs непосредственно поверх NFS, без локальной копии файлов, eCryptfs может упасть или вести себя некорректно. Если вы сомневаетесь,
EncFS
может быть лучшим выбором в этом случае.
Разрежённые файлы
Разрежённые файлы
, записанные в eCryptfs, будут создавать более крупные, не разрежённые зашифрованные файлы в нижнем каталоге. Например, в каталоге eCryptfs выполнение команды
truncate -s 1G file.img
создаст зашифрованный файл размером 1 ГБ в нижней файловой системе с соответствующими требованиями к ресурсам (дисковое пространство, пропускная способность). Если бы тот же файл был создан на незашифрованной файловой системе или файловой системе, использующей
шифрование блочного устройства
, он занял бы всего несколько килобайт.
Это следует учитывать, прежде чем шифровать большие части структуры каталогов, хотя в большинстве случаев недостатки будут незначительными. Если вам необходимо использовать большие разрежённые файлы, вы можете обойти эту проблему, поместив разрежённые файлы в незашифрованный каталог или используя для них шифрование блочного устройства.
Установка и монтирование
Перед началом посмотрите
документацию eCryptfs
.
eCryptfs входит в ядро с версии 2.6.19, но для работы с ней, вам нужны дополнительные инструменты:
ecryptfs-utils
и
keyutils
.
После установки загрузите модуль ядра:
# modprobe ecryptfs
Чтобы примонтировать eCryptfs, нужны пользовательские инструменты из пакета
ecryptfs-utils
. К сожалению, из-за плохого дизайна этих инструментов лучше выбирать один из следующих трёх способов настройки eCryptfs с различными компромиссами:
Высокоуровневые
#Инструменты Ubuntu
, которые настраивают всё автоматически, но требуют, чтобы нижний каталог был
~/.Private/
, и позволяют использовать только одну зашифрованную файловую систему на пользователя.
#ecryptfs-simple
, доступный в AUR, который является простым способом монтирования файловых систем eCryptfs, используя любой нижний каталог и верхний каталог.
#Ручная настройка
, которая включает отдельные шаги для загрузки пароля и монтирования eCryptfs, но позволяет полностью контролировать каталоги и настройки шифрования.
Инструменты Ubuntu
Большинство удобных инструментов, устанавливаемых пакетом
ecryptfs-utils
, предполагают очень специфическую настройку eCryptfs, а именно ту, которая официально используется в Ubuntu (где она может быть выбрана в качестве опции при установке). К сожалению, эти варианты не просто заданы по умолчанию, а фактически жёстко закодированы в этих инструментах. Если эта настройка не соответствует вашим потребностям, то вы не сможете использовать удобные инструменты и вам придётся следовать шагам из раздела
#Ручная настройка
.
Настройка, используемая этими инструментами, выглядит следующим образом:
у каждого пользователя есть
только один зашифрованный каталог
, контролируемый этими инструментами:
или каталог
$HOME
полностью,
или один каталог с зашифрованными данными (по умолчанию
~/Private/
, но это можно изменить).
нижний каталог
всегда
~/.Private/
(если шифруется домашний каталог целиком, это будет символическая ссылка на
/home/.ecryptfs/
пользователь
/.Private/
)
используемые
параметры шифрования
:
cipher:
AES
key length:
16 bytes (128 bits)
key management scheme:
passphrase
plaintext passthrough:
enabled
настройки
зашифрованного каталога хранятся в файлах внутри каталога
~/.ecryptfs/
:
(если шифруется домашний каталог целиком, это будет символическая ссылка на
/home/.ecryptfs/
пользователь
/.ecryptfs/
)
Private.mnt
[текстовый файл]
— содержит путь к верхнему каталогу (точке монтирования, например
/home/lucy
или
/home/lucy/Private
)
Private.sig
[текстовый файл]
— содержит подпись, используемую для идентификации пароля монтирования в списке ключей ядра
wrapped-passphrase
[бинарный файл]
— пароль монтирования, зашифрованный паролем пользователя
auto-mount
,
auto-umount
[пустые файлы]
— если они существуют, то модуль
pam_ecryptfs.so
(если он загружен) будет автоматически монтировать/размонтировать зашифрованный каталог при входе/выходе пользователя
Шифрование каталога
Для шифрования домашнего каталога смотрите
#Шифрование домашнего каталога
.
Перед настройкой шифрования решите, будет ли он монтироваться вручную или автоматически при входе пользователя в систему.
Чтобы зашифровать один каталог и позже смонтировать его вручную, выполните:
$ ecryptfs-setup-private --nopwcheck --noautomount
и следуйте инструкциям. Опция
--nopwcheck
позволяет выбрать пароль, отличный от пароля входа пользователя, а опция
--noautomount
отключает автоматическое монтирование. Поэтому, если вы хотите в дальнейшем автоматически монтировать зашифрованный каталог при входе в систему, просто опустите обе опции.
Скрипт автоматически создаст структуры каталогов
~/.Private/
и
~/.ecryptfs/
, как описано выше. Он также запросит два пароля:
пароль пользователя (login passphrase)
Это пароль, который вам нужно будет вводить каждый раз, когда вы захотите смонтировать зашифрованный каталог. Если вы хотите, чтобы работало автоматическое монтирование при входе в систему, это должен быть тот же пароль, который вы используете для входа в свою учётную запись пользователя.
пароль монтирования (mount passphrase)
Из него генерируется фактический мастер-ключ, который будет использоваться для шифрования. Обычно вам не стоит придумывать здесь какой-то свой пароль; если вы не знаете, что делаете — просто нажмите Enter, чтобы позволить программе автоматически сгенерировать безопасный случайный пароль. Он будет зашифрован с использованием введённого вами пароля пользователя и сохранён в зашифрованном виде в файле
~/.ecryptfs/wrapped-passphrase
. Позже он будет автоматически расшифровываться («unwrap») в оперативной памяти по необходимости, так что вам никогда не придётся вводить его вручную. Не теряйте этот файл, иначе вы никогда больше не сможете получить доступ к своей зашифрованной папке! Вы можете запустить
ecryptfs-unwrap-passphrase
, чтобы посмотреть пароль монтирования в открытом виде, записать его на листе бумаги и положить в сейф (или другое надёжное место), чтобы использовать его для восстановления зашифрованных данных в случае случайной потери/повреждения файла
wrapped-passphrase
или если вы забудете пароль пользователя.
Точка монтирования («верхний каталог») по умолчанию
~/Private/
, но после настройки можно задать свой каталог с помощью следующих команд:
$ mv ~/Private
/путь/к/новому/каталогу
$ echo
/путь/к/новому/каталогу
> ~/.ecryptfs/Private.mnt
Для использования зашифрованного каталога его нужно примонтировать — смотрите раздел
#Монтирование
ниже.
Шифрование домашнего каталога
Скрипт-обёртка
ecryptfs-migrate-home
создаст зашифрованный домашний каталог для пользователя и позаботится о переносе всех существующих файлов из ещё не зашифрованного домашнего каталога.
Для его запуска пользователь должен выйти из системы и не оставить никаких запущенных от его имени процессов. Лучший способ добиться этого — выйти из системы, войти в консоль как root и проверить, что команда
ps -U
пользователь
ничего не выводит. Также убедитесь, что у вас установлены
rsync
,
lsof
и
which
. После того как все необходимые условия выполнены, выполните:
# modprobe ecryptfs
# ecryptfs-migrate-home -u
пользователь
и следуйте инструкциям. После завершения работы скрипта следуйте инструкциям по автомонтированию — смотрите раздел
#Автомонтирование
ниже. Пользователь должен обязательно войти в систему
перед
следующей перезагрузкой, чтобы завершить процесс.
Когда всё заработает, можно и нужно удалить незашифрованную резервную копию домашнего каталога пользователя, сохранённую в
/home/
пользователь
.
случайные_символы
.
Монтирование
Вручную
Запустите скрипт-обёртку
$ ecryptfs-mount-private
И введите пароль пользователя, который вы задали при создании зашифрованного каталога. После этого зашифрованный каталог будет примонтирован в
верхний каталог
(по умолчанию
~/Private/
).
Для размонтирования выполните:
$ ecryptfs-umount-private
Совет
Если не требуется постоянный доступ к зашифрованным данным во время сеанса пользователя, можно создать какой-нибудь
псевдоним
, чтобы ускорить ручное выполнение команд.
В состав инструментов входит ещё один скрипт, который может быть очень удобен для доступа к зашифрованным данным
.Private
или домашнему каталогу. Выполнение
ecryptfs-recover-private
от имени root приведёт к поиску каталога в системе (или по опционально указанному пути), запросу пароля для него и монтированию каталога. Это может, например, использоваться с live-CD или другой системы для доступа к зашифрованным данным в случае восстановления. Обратите внимание, что при загрузке из Arch Linux ISO нужно сперва установить
ecryptfs-utils
. Он может монтировать только каталоги
.Private
, созданные с помощью инструментов Ubuntu.
Автомонтирование
Стандартный способ автомонтирования — через
PAM
. Смотрите
pam_ecryptfs(8)
и — для более подробной информации — 'PAM MODULE' в:
/usr/share/doc/ecryptfs-utils/README
Для автоматического монтирования необходимо, чтобы пароль для доступа к зашифрованному каталогу совпадал с паролем учётной записи пользователя.
Ниже описаны шаги по его настройке:
1. Проверьте, что файлы
~/.ecryptfs/auto-mount
,
~/.ecryptfs/auto-umount
и
~/.ecryptfs/wrapped-passphrase
существуют (их автоматически создаёт
ecryptfs-setup-private
).
2. Добавьте
ecryptfs
в pam-стек в точности как описано ниже, чтобы обеспечить прозрачную дешифровку пароля монтирования при входе в систему:
Откройте
/etc/pam.d/system-auth
и
после
строки, содержащей
auth required pam_unix.so
(или
auth [default=die] pam_faillock.so authfail
если есть), добавьте:
auth [success=1 default=ignore] pam_succeed_if.so service = systemd-user quiet
auth    required    pam_ecryptfs.so unwrap
Далее,
перед
строкой, содержащей
password required pam_unix.so
(или
-password [success=1 default=ignore] pam_systemd_home.so
если есть) добавьте:
password    optional    pam_ecryptfs.so
И, наконец,
после
строки
session required pam_unix.so
добавьте:
session [success=1 default=ignore] pam_succeed_if.so service = systemd-user quiet
session    optional    pam_ecryptfs.so unwrap
Примечание
Инструкции
pam_succeed_if.so
говорят процессу
пропустить следующую строку
, если сервисом, запрашивающим аутентификацию, является
systemd-user
, который работает параллельно с вашим сеансом и также аутентифицируется через PAM. Если домашний каталог будет смонтирован во второй раз, PAM не сможет его размонтировать. Это является
нарушением
работы systemd, и есть связанные баги:
[2]
[3]
[
устаревшая ссылка
2023-10-29 ⓘ]
[4]
[5]
. Метод, описанный здесь, является обходным решением.
3. Перелогиньтесь и с помощью команды
mount
проверьте, появилась ли новая точка монтирования:
/home/
пользователь
/.Private on /home/
пользователь
/Private type ecryptfs (...)
Каталог
~/Private/
теперь должен содержать расшифрованные данные.
Примечание
Вышеуказанные изменения в
system-auth
включают автомонтирование при обычном входе в систему. Если вы переключаете пользователей вместо этого с помощью
su -l
, нужно внести аналогичные изменения и в
/etc/pam.d/su-l
.
Каталог должен автоматически размонтироваться и становиться недоступным, когда пользователь выходит из системы.
Примечание
Если вы используете
автозапуск systemd от имени пользователя
или другие отдельные процессы, которые продолжают работать после вашего выхода из системы, ваш домашний каталог не будет размонтирован до их завершения. Так и задумано, потому что пользовательские процессы всегда должны иметь возможность сохранять своё состояние.
ecryptfs-simple
Используйте
ecryptfs-simple
, если вы просто хотите использовать eCryptfs для монтирования произвольных каталогов подобно
EncFS
. ecryptfs-simple не требует прав root или записей в
/etc/fstab
, а также не использует жёстко заданные каталоги вроде
~/.Private/
. Его можно
установить
с помощью пакета
ecryptfs-simple
AUR
или из
репозиториев Xyne
.
Как следует из названия, использование простое:
Простое монтирование:
$ ecryptfs-simple /path/to/foo /path/to/bar
Автоматическое монтирование: запрашивает опции при первом монтировании каталога и записывает их в файл настроек, а при следующем монтировании считывает опции из ранее записанного файла:
$ ecryptfs-simple -a /path/to/foo /path/to/bar
Размонтирование по исходному каталогу:
$ ecryptfs-simple -u /path/to/foo
Размонтирование по точке монтирования:
$ ecryptfs-simple -u /path/to/bar
Ручная настройка
Ниже приведены инструкции по настройке зашифрованных каталогов eCryptfs вручную. Это включает в себя два этапа. Во-первых, пароль обрабатывается и загружается в список ключей ядра. Во-вторых, файловая система монтируется с использованием ключа из списка ключей.
Есть два способа добавить пароль в список ключей ядра на первом этапе. Вариант попроще —
ecryptfs-add-passphrase
, который использует один пароль для шифрования файлов. Недостаток этого способа в том, что вы не сможете изменить пароль после шифрования. Это работает следующим образом:
$ ecryptfs-add-passphrase
Passphrase:
Inserted auth tok with sig [78c6f0645fe62da0] into the user session keyring
Также можно передать пароль в стандартный ввод команды
ecryptfs-add-passphrase -
. Помните, что если вы запишете свой пароль в каком-то файле, это, как правило, сделает всё шифрование бессмысленным.
Вариант посложнее — использовать «wrapped passphrase», когда файлы шифруются с помощью случайно сгенерированного ключа, который в свою очередь зашифрован вашим паролем и хранится в файле. В этом случае вы без проблем можете изменить пароль, просто расшифровав файл ключа старым паролем и зашифровав его новым.
Приведённый ниже скрипт
запрашивает пароль
, генерирует ключ
подобно ecryptfs-setup-private
[
устаревшая ссылка
2025-08-15 ⓘ]
, шифрует его введённым вами паролем и записывает в файл
~/.ecryptfs/wrapped-passphrase
:
$ mkdir ~/.ecryptfs
$ ( stty -echo; printf "Passphrase: " 1>&2; read PASSWORD; stty echo; echo 1>&2; head -c 48 /dev/random | base64; echo "$PASSWORD"; ) \
  | ecryptfs-wrap-passphrase ~/.ecryptfs/wrapped-passphrase >/dev/null
Пароль должен быть не длиннее 64 символов.
Теперь можно расшифровать ключ паролем и загрузить его в ядро:
$ ( stty -echo; printf "Passphrase: " 1>&2; read PASSWORD; stty echo; echo $PASSWORD; ) | ecryptfs-insert-wrapped-passphrase-into-keyring ~/.ecryptfs/wrapped-passphrase -
Inserted auth tok with sig [7c5d3dd8a1b49db0] into the user session keyring
При любом из этих вариантов после успешного добавления ключа вы получите подпись (sig) вида
78c6f0645fe62da0
, которая пригодится в дальнейшем.
Существует два способа ручного монтирования eCryptfs, описанных в следующих разделах. Первый способ, с использованием
mount.ecryptfs_private
, позволяет выполнить монтирование от имени обычного пользователя и предполагает настройку некоторых конфигурационных файлов. Этот способ не позволяет изменять параметры шифрования, например, размер ключа. Второй способ — использовать обычную команду
mount
напрямую, что даст полный контроль над всеми настройками, но требует либо запуска от имени root, либо добавления записи в
/etc/fstab
, которая разрешит монтирование обычному пользователю.
Совет
Примеры ниже подразумевают использование зашифрованного каталога
.secret
, что отличается от жёстко закодированного каталога
.Private
из инструментов Ubuntu. Это сделано специально, чтобы избежать проблем с ошибочным автомонтированием, когда в системе для этого настроен PAM, а также проблем с другими инструментами, использующими жёстко заданные значения по умолчанию.
С использованием файлов настроек
Этот метод использует запуск команды
mount.ecryptfs_private
из пакета
ecryptfs-utils
, после предварительной загрузки пароля. Он не требует прав root.
Сначала выберите имя для файлов настроек в
~/.ecryptfs/
и определитесь с нижней и верхней директориями. В данном примере используется имя
secret
для файлов конфигурации, зашифрованные данные находятся в
~/.secret/
, а расшифрованные файлы будут доступны в
~/secret/
после монтирования. Создайте все эти каталоги:
$ mkdir ~/.secret ~/secret ~/.ecryptfs
Теперь пропишите полные пути к ним в
~/.ecryptfs/secret.conf
. Формат похож на
/etc/fstab
, но без опций монтирования:
$ echo "$HOME/.secret $HOME/secret ecryptfs" > ~/.ecryptfs/secret.conf
Запишите подпись ключа (sig), которую вам выдала команда
ecryptfs-add-passphrase
или
ecryptfs-insert-wrapped-passphrase-into-keyring
(смотрите выше), в файл
~/.ecryptfs/secret.sig
:
$ echo 78c6f0645fe62da0 > ~/.ecryptfs/secret.sig
Если вы также хотите включить шифрование имён файлов, создайте ещё один пароль (или переиспользуйте предыдущий) и добавьте ещё одну подпись в файл
~/.ecryptfs/secret.sig
:
$ echo 326a6d3e2a5d444a >> ~/.ecryptfs/secret.sig
Наконец, примонтируйте
~/.secret/
в
~/secret/
:
$ mount.ecryptfs_private secret
После завершения работы размонтируйте:
$ umount.ecryptfs_private secret
С использованием команды mount
Запуская команду
mount
вручную, вы получаете полный контроль над параметрами шифрования. Недостатком является то, что вам нужно либо запускать команду
mount
от имени root, либо добавить запись в
/etc/fstab
для каждого каталога eCryptfs, чтобы пользователи могли их монтировать.
Сначала создайте личные каталоги. В этом примере используются те же каталоги, что и в предыдущем разделе:
$ mkdir -m 700 ~/.secret
$ mkdir -m 500 ~/secret
Вкратце:
Зашифрованные данные будут храниться в нижнем каталоге
~/.secret/
При монтировании расшифрованные данные станут доступны в каталоге
~/secret/
Пока каталог не смонтирован, в него ничего нельзя записать
При монтировании он имеет те же права доступа, что и нижний каталог
Теперь, предполагая, что вы создали «wrapped passphrase» как описано
в разделе выше
, вам нужно загрузить ключ шифрования обычного пользователя один раз в список ключей пользователя root:
# ( stty -echo; printf "Passphrase: " 1>&2; read PASSWORD; stty echo; echo $PASSWORD; ) | ecryptfs-insert-wrapped-passphrase-into-keyring /home/
пользователь
/.ecryptfs/wrapped-passphrase -
Inserted auth tok with sig [7c5d3dd8a1b49db0] into the user session keyring
после чего следующая команда монтирования должна успешно сработать (не забудьте указать правильные подписи ключей):
# mount
-i
-t ecryptfs /home/
пользователь
/.secret /home/
пользователь
/secret -o ecryptfs_sig=7c5d3dd8a1b49db0,ecryptfs_fnek_sig=7c5d3dd8a1b49db0,ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_unlink_sigs
Примечание
По состоянию на 2022 год эта команда не работает из-за бага в systemd (
FS#55943
).
Обходной путь
— выполнить
keyctl link @u @s
перед монтированием.
ecryptfs_sig
— подпись ключа, которым шифруются данные.
ecryptfs_fnek_sig
— подпись ключа, которым шифруются имена файлов; если вам это не нужно, опцию можно опустить.
ecryptfs_key_bytes
может быть 16, 24 или 32 для изменения размера ключа шифрования.
ecryptfs_unlink_sigs
— удаляет ключи из списка ключей ядра при размонтировании, из-за чего вам нужно будет повторно загружать ключи при повторном монтировании.
Также доступны и другие опции; они описаны в документации
ecryptfs
.
Совет
Есть инструмент
mount.ecryptfs
, который можно запустить от имени root для интерактивного ввода настроек монтирования. После его использования можно глянуть
/etc/mtab
, чтобы узнать, какие опции использовались.
После того, как вы выбрали подходящие параметры монтирования, вы можете добавить запись в
/etc/fstab
, чтобы монтировать каталог мог обычный пользователь. Скопируйте параметры монтирования в новую запись
/etc/fstab
и добавьте параметры
user
и
noauto
. Полный текст записи будет выглядеть примерно так (добавления выделены жирным шрифтом):
/etc/fstab
/home/
пользователь
/.secret /home/
пользователь
/secret ecryptfs
noauto
,
user
,ecryptfs_sig=7c5d3dd8a1b49db0,ecryptfs_fnek_sig=7c5d3dd8a1b49db0,ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_unlink_sigs
0 0
Параметр
noauto
важен, иначе systemd будет пытаться примонтировать зашифрованный каталог автоматически при загрузке системы.
Параметр
user
разрешает монтирование обычному пользователю без прав root.
Пользовательское монтирование по умолчанию выполняется с опцией
noexec
. Если вам нужно разрешить запуск исполняемых файлов из зашифрованного каталога, добавьте параметр
exec
в записи fstab.
Теперь настройка завершена, и каталог должен стать доступен для монтирования обычным пользователем.
Монтирование
Чтобы смонтировать зашифрованный каталог от имени пользователя, нужно предварительно загрузить ключ, расшифровав его вашим паролем. Следуя приведённому выше примеру:
$ ecryptfs-insert-wrapped-passphrase-into-keyring ~/.ecryptfs/wrapped-passphrase
Passphrase:
Inserted auth tok with sig [7c5d3dd8a1b49db0] into the user session keyring
Теперь каталог может быть смонтирован без лишних вопросов:
$ mount
-i
~/secret
и файлы, помещаемые в каталог
secret
, будут шифроваться. Эти два шага нужно выполнять каждый раз для ручного монтировния каталога.
Размонтирование:
$ umount ~/secret
В завершение можно изменить пароль, которым шифруется ключ шифрования данных:
$ ecryptfs-rewrap-passphrase ~/.ecryptfs/wrapped-passphrase
Old wrapping passphrase:
New wrapping passphrase:
New wrapping passphrase (again):
Размонтирование должно автоматически очищать список ключей, но вы также можете проверить её состояние и очистить вручную:
$ keyctl list @u
$ keyctl clear @u
Примечание
Следует помнить, что
/etc/fstab
предназначен только для общесистемных разделов и обычно не должен использоваться для монтирования пользовательских разделов.
Автомонтирование
Для автоматического монтирования ранее определённого монтирования в
/etc/fstab
при входе в систему можно использовать различные методы. В качестве первого общего шага выполните пункты (1) и (2) раздела
#Автомонтирование
.
Затем, если вы входите в систему через консоль, простым способом является использование
интерактивных команд
mount
и
umount
в настройках оболочки пользователя, например,
Bash (Русский)#Файлы настроек
.
Другой метод — автоматическое монтирование каталога eCryptfs при входе пользователя в систему с помощью
pam_mount
. Для его настройки добавьте следующие строки в файл
/etc/security/pam_mount.conf.xml
:
<luserconf name=".pam_mount.conf.xml" />
<mntoptions require="" /> 
<lclmount>mount -i %(VOLUME) "%(before=\"-o\" OPTIONS)"</lclmount>
Перепишите эти строки вручную, а не просто скопируйте/вставьте их (особенно строку lclmount), иначе вы можете получить некоторые поврежденные символы.
Пояснения:
первая строка указывает, где находится пользовательский файл конфигурации (в данном случае
~/.pam_mount.conf.xml
)
вторая строка очищает ненужные по умолчанию опции монтирования ("nosuid,nodev")
последняя строка указывает, какую команду монтирования нужно запустить (для eCryptfs нужна опция
-i
).
Теперь создайте файл
~/.pam_mount.conf.xml
с описанием томов для монтирования:
<pam_mount>
    <volume noroot="1" fstype="ecryptfs" path="/home/
пользователь
/.secret/" mountpoint="/home/
пользователь
/secret/" />
</pam_mount>
"noroot" нужен, потому что ключ шифрования нужно добавлять в список ключей пользователя.
Наконец, измените файл
/etc/pam.d/system-login
как описано в статье
pam_mount
.
Дополнительный шаг
Чтобы не тратить время на ненужную расшифровку пароля, можно создать скрипт, который будет проверять количество открытых сеансов с помощью
pmvarrun
:
/usr/local/bin/doecryptfs
#!/bin/sh

exit $(/usr/sbin/pmvarrun -u$PAM_USER -o0)
Затем добавьте следующую строку перед модулем eCryptfs unwrap в вашем стеке PAM:
auth    [success=ignore default=1]    pam_exec.so     quiet /usr/local/bin/doecryptfs
auth    required                      pam_ecryptfs.so unwrap
Статья предлагает добавить их в
/etc/pam.d/login
, но изменения нужно будет добавить во все другие места, где вы входите в систему, например,
/etc/pam.d/kde
.
Использование
Ссылка в зашифрованный каталог
Помимо использования зашифрованного каталога в качестве хранилища конфиденциальных файлов и личных данных, его также можно использовать для защиты данных приложений. Например, в
Firefox
есть внутренний менеджер паролей, но история просмотров и кэш также могут быть конфиденциальными. Защитить их очень просто:
$ mv ~/.mozilla ~/Private/mozilla
$ ln -s ~/Private/mozilla ~/.mozilla
Удаление зашифрованного каталога
Для удаления зашифрованного каталога никаких особых действий не требуется. Убедитесь, что он размонтирован, и удалите соответствующий нижний каталог (например,
~/.Private/
) вместе со всеми зашифрованными файлами внутри него. Затем нужно удалить каталог
~/.ecryptfs/
с настройками и ключами шифрования, и на этом всё.
Если вы использовали
#Инструменты Ubuntu
для настройки, вы можете использовать команду:
$ ecryptfs-setup-private --undo
и следовать её инструкциям.
Резервное копирование
Если вы хотите переместить файл из зашифрованного каталога наружу, просто переместите его как обычно из смонтированного каталога
~/Private/
.
В eCryptfs криптографические метаданные хранятся в заголовках файлов. Варианты настройки, описанные в этой статье, отделяют каталог с зашифрованными данными от точки монтирования. Точка монтирования с расшифрованными данными полностью прозрачна и доступна для резервного копирования. Очевидно, что это необходимо учитывать при автоматическом резервном копировании, если нужно избежать утечки конфиденциальных незашифрованных данных в резервную копию.
Можно делать резервные копии или инкрементные резервные копии непосредственно зашифрованного каталога (например,
~/.Private/
) так же, как и любого другого обычного каталога.
Другие моменты, на которые следует обратить внимание:
Если вы выполнили
#Шифрование домашнего каталога
с помощью инструментов Ubuntu, имейте в виду, что нижний каталог с зашифрованными файлами находится вне домашнего каталога обычного пользователя: по адресу
/home/.ecryptfs/
пользователь
/.Private/
.
Следует убедиться, что для файлов настройки eCryptfs (обычно
~/.ecryptfs/
) тоже имеется резервная копия.
Если вы используете специальные опции монтирования файловой системы, например
ecryptfs_xattr
, проведите дополнительную проверку целостности резервной копии.
Известные проблемы
При подключении через Mosh может произойти сбой монтирования на удалённом хосте
Это
известная проблема
сервера
Mosh
, который не оставляет смонтированным каталог eCryptfs
/home
.
Смотрите также
eCryptfs
- сайт проекта и документация
Аудит безопасности
eCryptfs, выполненный Тейлором Хорнби (22 января 2014).
eCryptfs and $HOME
by Adrian C. (anrxc) - Article with installation instructions and discussion of eCryptfs usage
Chromium data protection
(November 2009) - Design document detailing encryption options for Chromium OS, including explanation on its eCryptfs usage
eCryptfs design
[
устаревшая ссылка
2025-08-15 ⓘ]
by Michael Halcrow (May 2005) - Original design document detailing and discussing eCryptfs