Как создать зашифрованную файловую систему внутри файла?

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.

animaletdesequia
источник
Если вам нужно правильное шифрование при резервном копировании файлов, вы можете вместо этого рассмотреть 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возможно, стоит принять во внимание.

enzotib
источник
Спасибо за ваш ответ. Я создал файловую систему, зашифровал ее и загрузил в Dropbox. Позже я попытаюсь смонтировать этот файл на другом компьютере. Только одно, можно ли это сделать без sudo? Если я хочу, чтобы файл и файловая система были смонтированы внутри моего дома (не на носителях, таких как usb или hardrive), команды были бы одинаковыми без sudo, или cryptmount всегда нуждается в привилегиях суперпользователя?
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 vàlid, действующие блоки управления копией сегмента. .. fsck.ext4: неверное магическое число в суперблоке en intentar obrir / dev / mapper / encriptat
animaletdesequia
1
@darent: вы создали файловую систему, как показано в шаге 4? Вы были последовательны в замене имени «mycrypt» на «encriptat»?
энзотиб
Извините, ошибка была из-за того, что вместо (sudo mkfs.ext4 / dev / mapper / mycrypt) я печатал (sudo mkfs.ext4 mycript). Я подключился к файлу напрямую, а не к устройству. Теперь это работает отлично. И извините за формат этого сообщения, не знаю, почему я не могу разделить строки (если я нажимаю клавишу ввода, он публикует комментарий вместо создания новой строки, может быть, сбой Firefox ...) Ура! РЕДАКТИРОВАТЬ: теперь я прочитал ваш ответ, имя encriptat не было проблемой (просто адаптировал ваш пост и поместил файлы с каталонскими именами, но все это согласованно). Everithing работает хорошо, спасибо еще раз :)
animaletdesequia
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 в соответствии с размером файла контейнера. С man-страницы:

Если --size (в секторах) не указан, используется размер базового блочного устройства.

Так что вы можете просто:

cryptsetup resize data

5. Затем измените размер файловой системы ext4:

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

6. Теперь вы можете смонтировать файловую систему обратно:

mount /dev/mapper/data /path/to/mount
Mixel
источник
1
Я думаю, что этот ответ - лучший и самый актуальный ответ. Должен быть выбран правильный ответ!
юртесен