Як створити зашифровану файлову систему всередині файлу?


16

Я знайшов цей цікавий підручник у блозі flossstuff .

Він пояснює, як створити порожній файл, відформатувати його як ext4 та змонтувати його як пристрій.

Мені хотілося б знати, чи може вона створюватися як зашифрована файлова система ext4.

Я спробував використовувати palimpsest (дискову утиліту, знайдену в системному меню) для форматування вже створеної файлової системи, але вона не працює, оскільки виявляє використовувану файлову систему.

Якщо я спробую відключити файлову систему, це не спрацює, оскільки вона не визначає пристрій (оскільки це не справжній пристрій, як жорсткий диск або USB-накопичувач).

Отже, моє запитання: чи є можливість створити файлову систему як зашифровану з самого початку? Я використовував ці команди:

Створіть порожній файл розміром 200 Мб:

dd if=/dev/zero of=/path/to/file bs=1M count=200

Зробити це ext4:

mkfs -t ext4 file

Змонтувати його в папці всередині мого будинку:

sudo mount -o loop file /path/to/mount_point

Чи є якийсь спосіб mkfsкоманда може створити зашифровану файлову систему ext4 із запитом пароля для розшифровки?

Я планую використовувати це як спосіб шифрування файлів всередині Dropbox.



Якщо ви хочете правильно шифрувати під час резервного копіювання файлів, ви можете замість цього розглянути SpiderOak. Більше безпеки та менше суєти.
— ландроні

Відповіді:


8

Ви можете використовувати cryptmountдля шифрування файлової системи, також якщо файлова система є у файлі.

Сторінка cryptmountкерівництва має дуже просте і детальне пояснення, про яке я повідомляю (модифікую) тут, і явно згадує файлову систему на основі файлів.

  • Крок 1
    Додайте запис /etc/cryptmount/cmtabтаким чином:

    mycrypt {
        dev=/media/data/mycrypt dir=/home/enzotib/mycrypt
        fstype=ext4 mountoptions=defaults cipher=twofish
        keyfile=/etc/cryptmount/mycrypt.key
        keyformat=builtin
    }
    

    де /media/data/mycryptстворений файл підтримки ddта /home/enzotib/mycryptє бажаною точкою монтування.

  • Крок 2
    Створіть секретний ключ розшифровки

    sudo cryptmount --generate-key 32 mycrypt
    
  • Крок 3
    Виконайте таку команду

    sudo cryptmount --prepare mycrypt
    

    то вам буде запропоновано пароль, який використовується під час налаштування ключа

  • Крок 4
    Створіть файлову систему

    sudo mkfs.ext4 /dev/mapper/mycrypt
    
  • Крок 5
    Виконайте

    sudo cryptmount --release mycrypt
    
  • Крок 6
    Тепер встановіть файлову систему

    mkdir /home/enzotib/mycrypt
    cryptmount -m mycrypt
    

    потім відключіть його

    cryptmount -u mycrypt
    

Крім того, якщо вам потрібно зашифрувати каталог, encfsможливо, варто взяти до уваги.


Дякую за вашу відповідь, я створив файлову систему, зашифрований та завантажений у Dropbox. Пізніше я спробую встановити цей файл на іншому ПК. Тільки одне, чи можна обійтися без судо? Якщо я хочу зберегти файл і файлову систему, встановлену всередині мого будинку (а не в засобах масової інформації, таких як usb або hardrive), команди будуть однаковими без sudo або криптовалюті завжди потрібні привілеї root?
— animaletdesequia

1
@darent: здається, команді потрібні привілеї root тільки у налаштуваннях файлової системи, але монтажу / демонтажу є дія користувача, за умови, що файл-файл та точка монтажу належать користувачеві. Щоб налаштувати той самий файл зображення на іншій машині, я вважаю, що вам слід скопіювати /etc/cryptmount/mycrypt.keyта пропустити --generate-keyкрок.
— ензотиб

Я отримую цю помилку на останньому кроці: $ sudo cryptmount -m encriptat Введіть пароль для цільового "encriptat": e2fsck 1.41.14 (22 грудня 2010) fsck.ext4: Súperbloc no valid, provant els blocs de còpia de seguretat. .. fsck.ext4: Неправильне магічне число в суперблоку в інтентарному обрирі / dev / mapper / encriptat
— animaletdesequia

1
@darent: Ви створили файлову систему, як показано на кроці 4? ви послідовно замінювали назву "mycrypt" на "encriptat"?
— ензотиб

Вибачте, помилка була через те, що замість (sudo mkfs.ext4 / dev / mapper / mycrypt) я вводив текст (sudo mkfs.ext4 mycript). Я розміщував файл безпосередньо, а не пристрій. Зараз це працює ідеально. І вибачте за формат цього повідомлення, не знаю, чому я не можу розділити рядки (якщо натискаю клавішу Enter, він публікує коментар замість створення нового рядка, можливо, глюк Firefox ...) Привіт! EDIT: тепер я прочитав вашу відповідь, ім'я encriptat не було проблемою (просто адаптував вашу посаду і помістив файли з іменами у форматі, але це все узгоджується). Зараз
— Everithing

7

Виконайте наступні кроки, щоб створити зашифрований файл із файловою системою всередині:

1. Швидший спосіб створити файл заданого розміру:

fallocate -l 128M /path/to/file

2. Створітьу файлі розділ LUKS (Linux Unified Key Setup) за допомогоюінструментів dm-crypt :

cryptsetup -y luksFormat /path/to/file

Ви можете перевірити, що файл зашифрований контейнер:

/path/to/file: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 7e2af5a1-3fab-43ea-a073-3b9cc6073f00

3. Відкрийте зашифрований контейнер:

cryptsetup luksOpen /path/to/file data

dataце ім'я тома картографічного пристрою. Ви можете вибрати інше ім’я.

Це відкриває пристрій LUKS і відображає його до імені, яке ми надаємо, у нашому випадку створюючи файл у /dev/mapper/data.

4. Створітьext4 файлову систему на цьому пристрої:

mkfs.ext4 /dev/mapper/data

5. Потім створіть точку кріплення:

mkdir /path/to/mount

6. І встановіть там пристрій:

mount /dev/mapper/data /path/to/mount

7. Деактивація файлової системи та закриття пристрою LUKS:

umount /path/to/mount
cryptsetup luksClose data

Тепер ви зашифрували контейнер LUKS з файловою системою ext4 всередині. Коли ви хочете скористатися нею, просто повторіть кроки 3 та 6. Після завершення дзвінка етап 7.

Ця стаття мені дуже допомогла.

Також одного дня вашому контейнеру не вистачить місця. Припустимо, розмір файлу зашифрованого контейнера становить 128 Мб, і ми хочемо збільшити його розмір до 512 МБ. До збільшення потенціалу виконайте наступні дії:

1. Демонтуйте та закрийте LUKS-пристрій (див. Крок 7 вище у списку).

2. Збільшити розмір файлу контейнера:

 dd if=/dev/zero of=/path/to/file bs=384M count=1 oflag=append conv=notrunc

3. Відкрийте пристрій LUKS.

cryptsetup luksOpen /path/to/file data

4. Змініть розмір пристрою LUKS відповідно до розміру файлу контейнера. З чоловічої сторінки:

Якщо - величина (у секторах) не вказана, використовується розмір пристрою, що лежить в основі блоку.

Тож ви можете просто:

cryptsetup resize data

5. Потім змініть розмір файлової системи ext4:

e2fsck -f /dev/mapper/data
resize2fs /dev/mapper/data

6. Тепер ви можете змонтувати файлову систему назад:

mount /dev/mapper/data /path/to/mount

1
Я думаю, що ця відповідь є найкращою та найсучаснішою відповіддю. Його слід вибрати як правильну відповідь!
— yurtesen

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.