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

В традиционных 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

В Arch Linux:

$ 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
 

3. GDriveFS

Раз уж мы упомянули облачные хранилища, нелишним будет рассказать об инструменте, который позволяет смонтировать к локальной системе сетевой диск Google. GDriveFS — наиболее заметный из множества подобных средств.

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

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

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

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


2 комментария

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

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

Check Also

Страдания с ReactOS. Почему в заменителе Windows работают трояны, но не работает Word

Сегодня в нашей кунсткамере демонстрируется необычайный организм — двадцатилетний зародыш …