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


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.