Как сделать /home в Linux зашифрованным
Короткий туториал о том, как создать зашифрованный /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