Можно отметить два основных способа организации шифрования данных в уже существующей файловой системе Ext4, не требующие пересоздания раздела с переносом данных из резервной копии. Первый способ заключается в использовании встроенных в Ext4 возможностей по шифрованию отдельных каталогов, а второй в использовании команды "cryptsetup reencrypt" для прозрачного переноса ФС на новый шифрованный раздел LUKS. В любом случае создание полной резервной копии перед выполнением предложенных манипуляций обязательно.Первый способ наиболее простой и безопасный, но оно ограничен использованием отдельных шифрованных каталогов, в которые можно перенести конфиденциальные данные, требующие защиты. Шифрование в Ext4 поддерживается при использовании как минимум ядра Linux 4.1 и утилит 2fsprogs 1.43.
Выставляем в суперблоке раздела c ФС ext4 флаг поддержки шифрования (в нашем случае /dev/sda1):
sudo tune2fs -O encrypt /dev/sda1
Создаём каталог, в котором будут храниться зашифрованные данные текущего пользователя:
mkdir -p /secret/home/user
Генерируем случайную salt-последовательность для последующего шифрования и сохраняем её в отдельный файл:
echo 0x`head -c 16 /dev/urandom | xxd -p` > /home/user/.crypt_salt
Создаём на базе данной salt-последовательности ключ для шифрования, указав для него пароль:
e4crypt add_key -S /home/user/.crypt_salt
Enter passphrase (echo disabled):
Added key with descriptor [f467134ca2c48c33]
Проверяем добавление ключа командой "keyctl show", которая поставляется в пакете keyutils.
Активируем шифрование для каталога /secret/home/user, указав выданный идентификатор ключа:
e4crypt set_policy f467134ca2c48c33 /secret/home/user
Если после перезагрузки попытаться обратится к каталогу /secret/home/user без добавления ключа командой "e4crypt add_key", его содержимое будет показано в зашифрованном виде. Для расшифровки каталога при каждой загрузке необходимо настроить повторный вызов команды add_key для привязки ключа.
e4crypt add_key -S /home/user/.crypt_salt
Enter passphrase (echo disabled):
Added key with descriptor [f467134ca2c48c33]
Для просмотра привязанного к каталогу ключа можно использовать команду
e4crypt get_policy /secret/home/user
В случае необходимости шифрования всего содержимого можно использовать LUKS cryptsetup для шифрования имеющегося раздела без потери данных.
Отмонтируем шифруемый раздел (при изменении корневого раздела нужно загрузиться с отдельного live-дистрибутива), проверяем целостность ФС и уменьшаем размер ФС для того, чтобы разместить заголвки LUKS на диске (в ФС должно быть достаточно свободного места):
e2fsck -f /dev/sda4
resize2fs /dev/sda4 размер_меньше_текущего_на_32МБ
Шифруем содержимое имеющегося раздела без потери информации:
cryptsetup reencrypt --encrypt /dev/sda4 --reduce-device-size 32M
Открываем раздел:
cryptsetup open /dev/sdXY home
Увеличиваем размер ФС до свободной границы
resize2fs /dev/mapper/home
Монтируем раздел:
mount /dev/mapper/home /mnt/home
Смотрим UUID:
blkid /dev/mapper/home
Добавляем информацию о разделе в /etc/crypttab
home UUID=UUID_устройства_LUKS none
URL: https://askubuntu.com/questions/643577/how-to-create-ext4-en... https://unix.stackexchange.com/questions/444931/is-there-a-w...
Обсуждается: http://www.opennet.ru/tips/info/3175.shtml