easimonenko Evgeny Simonenko

Как сделать /home в Linux зашифрованным

17 Jul 2023 |  Tutorial  |  Linux   Ubuntu  

Короткий туториал о том, как создать зашифрованный /home в уже установленном Linux, если вы не сделали это во время установки. Здесь будут описаны необходимые действия в среде Ubuntu Desktop, но большинство информации должно быть актуально и в других вариантах Linux. Мы будем использовать тот де метод, что и установщик системы: связку Device Mapper и LUKS.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: автор этого туториала не даёт гарантии, что повторение описанных в нём действий, не причинит вреда. Используйте его на свой страх и риск!

Итак, поехали. Нам потребуется инструмент командной строки cryptsetup. Установим его:

sudo apt install cryptsetup

Давайте также сделаем резервную копию вашего текущего /home. Для этого можно использовать внешние носители: USB-флешку или SD-карту. Кстати, их тоже можно (скорее, нужно) сделать зашифрованными. Для этого воспользуйтесь такими программами как gparted или Disks (Диски). Подключите резервный носитель, посмотрите, по какому пути он примонтировался, и выполните команды:

sudo rsync -avP --exclude="lost+found" /home/* /mnt
sudo rsync -avP --exclude="lost+found" /home/*/.[^.]* /mnt

Теперь за наши данные мы спокойны и можем создать новый или отформатировать уже существующий раздел для /home. Для этого снова воспользуйтесь программами для работы с разделами дисков. Выделенный раздел потребуется назначить разделом LUKS, после чего отформатировать его в нужную файловую систему, чаще всего в ext4.

Включить шифрование для уже существующего раздела можно также командой из пакета cryptsetup, но, внимание, это уничтожит находящиеся там данные (X нужно заменить на номер устройства, а Y – на номер раздела на нём):

sudo cryptsetup luksFormat /dev/sdXY

Подключить зашифрованный раздел можно с помошью того же cryptsetup (здесь NAME это любое подходящее название для использования в Device Mapper):

sudo cryptsetup luksOpen /dev/sdXY NAME

Создадим на разделе с LUKS файловую систему ext4:

sudo mkfs.ext4 /dev/mapper/NAME

После чего его можно примонтировать:

sudo mount /dev/mapper/NAME /mnt

И восстановить в него до этого сохранённую копию /home:

sudo rsync -avP --exclude="lost+found" /mnt/* /home
sudo rsync -avP --exclude="lost+found" /mnt/*/.[^.]* /home

Раздел у нас есть. Давайте теперь сделаем так, чтобы он подключался при загрузке системы.

Добавим запись в конфигурационный файл /etc/crypttab:

NAME /dev/sdXY none luks

И в /etc/fstab:

/dev/mapper/NAME /home ext4 defaults 0 2

Наконец, можно удалить всё лишнее из /home и перезагрузить систему. Во время загрузки будет запрошен пароль, который вы задавали при создании раздела для /home.

Дополнительную информацию по работе с зашифрованными разделами см. в документации для cryptsetup:

man cryptsetup

Надеюсь, что я нигде не ошибся, и у вас всё получится! Удачи!

(c) Симоненко Евгений, 2023