Принято считать, что в UNIX файлами представлено все. Вот только в реальности кроме пресловутых файлов устройств в /dev и файловых систем /proc и /sys нет ничего, что выходило бы за границы понятия обычного файла. Что ж, мы это исправим и превратим в файловую систему если не все, то многое: git-репозитории, ftp- и ssh-ресурсы, zip-архивы, торренты, magnent-ссылки и даже оперативную память видеоадаптера.

В традиционных UNIX-подобных ОС файловые системы реализованы в ядре или его модулях. Это значит, что ошибки в их коде стоят очень дорого, а любая нестандартная функциональность не приветствуется. Микроядерные ОС (в том числе Minix, QNX и GNU/Hurd) лишены этого недостатка. В них драйверы и файловые системы — это обычные приложения, поэтому существуют ФС, которые способны представить файлами не только файлы /dev и /proc, но и нечто совершенно иное (простейший пример: облачный «диск» типа Dropbox).

Щепотку микроядерности можно добавить и в Linux. FUSE (дословно, файловая система в пользовательском пространстве) — специальная подсистема Linux, позволяющая выносить файловые системы в обычные приложения, ну или делать их частью уже существующих приложений.

На базе FUSE создано большое количество нестандартных и порой весьма чудных файловых систем. Это статья — попытка отобрать самые заметные и перспективные из них.

 

1. GitFS

Популярность системы управления версиями Git и сервиса на ее основе GitHub среди разработчиков вынуждает обычных пользователей обращаться к ней в поисках свежих версий необходимых приложений. И если разработчики, размещая свои проекты, волей-неволей вынуждены постигать все нюансы работы системы, то рядовой линуксоид, как правило, просто хочет сделав минимум телодвижений иметь под рукой исходники с последними изменениями, не вдаваясь в подробности того, что такое система управления версиями и как она работает.

GitFS предоставляет возможность смонтировать удаленный репозиториий Git как обычную файловую систему, не требуя от пользователя глубоких познаний в вопросе работы самого Git. Более того, GitFS позволяет вносить в файлы изменения, которые будут автоматически закоммичены в репозиторий, и просматривать историю изменений. А это уже может быть интересно и программистам, которые используют git в своих проектах.

Установка в Ubuntu:

$ sudo add-apt-repository ppa:presslabs/gitfs
$ sudo apt-get update
$ sudo apt-get install gitfs

В ArchLinux:

$ yaourt -S gitfs

Пример монтирования репозитория libfuse:

$ gitfs https://github.com/libfuse.git /каталог/монтирования
Локально смонтированный с помощью GitFS удаленный git-репозиторий
Локально смонтированный с помощью GitFS удаленный git-репозиторий
 

2. CryFS

Нивелировать угрозу кражи секретных документов помогает шифрование. CryFS позволяет сделать этот процесс быстрым и ненавязчивым. Она размещает зашифрованные файлы внутри обычного каталога, тем самым обеспечивая возможность их безопасного хранения в облачных сервисах (например, Google Drive). CryFS шифрует не только содержимое файлов, но и их размеры, метаданные и структуру каталогов.

Чтобы скрыть размеры файлов, CryFS разбивает содержимое файла на блоки одинакового размера и шифрует их каждый в отдельности. Древовидная структура используется для упорядочивания блоков, принадлежащих одному файлу, при этом расходуется незначительное количество ресурсов. Вместе с тем шифруется и сама древовидная структура и метаданные.

Каждый зашифрованный блок хранится в виде файла в базовом каталоге, при этом в качестве названия файла используется случайный идентификатор. Базовый каталог можно настроить для синхронизации с облачным сервисом. Злоумышленник, имеющий доступ к базовому каталогу, увидит только набор зашифрованных блоков одинакового размера и не может увидеть содержимое, размеры файлов, метаданные или структуру каталогов хранящихся данных.

Блоки шифруются с использованием блочного шифра, выбранного пользователем. Когда создается файловая система, генерируется случайный ключ шифрования. Этот ключ хранится в файле конфигурации, который затем зашифровывается с использованием пароля, указанного пользователем.

Установка в Ubuntu и Debian производится с помощью скрипта:

$ wget -O - https://www.cryfs.org/install.sh | sudo bash

Arch-based дистрибутивам доступна установка из AUR:

$ yaourt -S cryfs

После установки появится возможность создать криптокаталог.

$ cryfs basedir mountdir
Настройка CryFS
Настройка CryFS

В процессе создания каталога система задаст ряд вопрос относительно настроек. Проще всего ответить утвердительно на вопрос об использовании настроек по умолчанию.

Управление файлами, подлежащими шифрованию, осуществляется в виртуальном каталоге mountdir, затем они шифруются и помещаются в каталог basedir.

Работать с файловой системой можно с помощью стороннего графического интерфейса Sirikali.

Управление CryFS с помощью программы Sirikali
Управление CryFS с помощью программы Sirikali

Продолжение статьи доступно только подписчикам

Cтатьи из последних выпусков журнала можно покупать отдельно только через два месяца после публикации. Чтобы читать эту статью, необходимо купить подписку.

Подпишись на журнал «Хакер» по выгодной цене!

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

1 комментарий

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

LUKS container vs Border Patrol Agent. Как уберечь свои данные, пересекая границу

Не секрет, что если ты собрался посетить такие страны как США или Великобританию то, прежд…