Жизнь в пространстве пользователя
19.03.09
Мой Компьютер, №01-02 (432-433), 01.01.2007
«Все является файлами» — ключевая концепция Unix-систем. Файлами является даже периферийное оборудование компьютера, разделы жесткого диска, при этом для приложений доступ к файлу устройства или посылка данных другому процессу практически не отличается от доступа к обычному текстовому файлу, что позволяет пользователю применять одни и те же команды для копирования, печати и проч. Аналогичный подход реализуют и синтетические файловые системы, работающие в пространстве пользователя. Файлами является все, с чем приходится иметь дело пользователю в такой файловой системе — почтовые ящики, web-страницы и FTP-серверы, защищенные SSH-соединения, архивы и другие локальные данные… Работа вне ядра упрощает установку и использование приложений, позволяет минимизировать последствия краха, использовать для программирования языки, отличные от С, вдобавок отлаживать такие приложения легче, появляется возможность вынести часть кода во внешние библиотеки, нет необходимости в переписывании кода для новых ядер. Таким образом можно создавать инструменты для самых разнообразных задач.
Проект FUSE
Первоначально разработанный для поддержки проекта AVFS (www.inf.bme.hu/~mszeredi/avfs/), FUSE (fuse.sourceforge.net) скоро стал отдельным проектом и на сегодня имеет приличный список файловых систем, использующих его наработки. Код FUSE первоначально был включен в дерево ядра Эндрю Мортона (Andrew Morton), тем же, кто использовал vanilla-ядра, приходилось устанавливать патч. Новая версия FUSE 2 уже по умолчанию включена в ядро Linux. Принцип работы такой системы прост. Модуль ядра перехватывает запросы к VFS и создает для пользователя иллюзию работы с обычной файловой системой, на которой эмулируется специальное дерево каталогов, отвечающее семантике хранимых в ней данных. Теперь для работы с этими файлами можно применять привычные утилиты — например, для копирования файлов через защищенное SSH-соединение достаточно воспользоваться командой cp. Модуль ядра и библиотека связываются через дескриптор специального файла /proc/fs/fuse/dev, через который и происходит взаимодействие.
Библиотеки FUSE используют и другие проекты, задача которых — создание виртуальных файловых систем. Это SULF — Stackable User-Level Filesystem (pobox.com/~vgough/fuse-csharp.html) и FUSE‑J (sourceforge.net/projects/fuse‑j). Первый позволяет воспользоваться C#, второй — Java.
К сожалению, еще один подобный проект — LUFS, Linux Userland FileSystem. Хотя на сайте проекта lufs.sourceforge.net/lufs написано «Actively maintained», обновлялся в последний раз в конце 2003 года, поэтому уже смело можно говорить о прекращении работ.
На сайте проекта FUSE можно найти только небольшую программу-пример, демонстрирующую возможности, основной же интерес представляют собой сторонние разработки, список которых можно найти на fuse.sourceforge.net/wiki/index.php/FileSystems. На момент написания статьи список насчитывал 71 проект (рис. 1), еще 30 проектов найдете, перейдя по ссылке NetworkFileSystems. Бо[ударение!!!]льшая часть проектов, впрочем, еще не достигла состояния «релиза», и стабильная работа их не гарантируется (в том числе и самими разработчиками), к тому же не все они компилируются без проблем. Поэтому весь список перечислять не буду, остановлюсь только на самых интересных из них.
Шифрование информации
EncFS — Encrypted Filesystem (pobox.com/~vgough/encfs.html) реализует шифрованную файловую систему. Как и другие подобные файловые системы, основное назначение EncFs — защита персональных данных и резервных копий. Работает она иначе, чем «loopback-системы», функционирующие в режиме ядра. При этом в EncFs размер файловой системы может динамично изменяться. Некоторые метаданные остаются видимыми, что позволяет программе резервирования определить количество файлов, их размер, приблизительно количество знаков в имени (само имя шифруется) — то есть, узнать изменившиеся файлы. Программа резервирования, естественно, не может их расшифровать — она просто резервирует то, что видит. Работать с такой файловой системой можно как с локального, так и удаленного узла, а также сменных носителей вроде CD-ROM.
Проверяем в работе
Первым делом требуется установить fuse. Здесь ничего сложного. В репозитарии Kubuntu есть уже encfs, поэтому установить его проще простого:
sudo apt-get install encfs
Заодно будут загружены библиотеки и модули fuse. Для порядка проверим, загружен ли необходимый для работы модуль.
$ /sbin/lsmod lsmod | grep fuse
fuse 38412 0
Новая файловая система должна быть в списке известных ФС:
$ cat /proc/filesystems | grep fuse
nodev fuse
После установки encfs будут доступны три исполняемых файла — еncfs, encfssh и encfsctl. С помощью первой можно создать или смонтировать зашифрованную файловую систему. Создаем:
$ encfs ~/.crypt ~/crypt
По ходу будут заданы вопросы о создании всех необходимых для работы каталогов, при создании новой файловой системы доступно два предустановленных режима — standard и paranoia (шифр AES, размер ключа 256, размер блока — 512), а также режим expert, при использовании которого можно выбрать все параметры самому.
В последнем случае алгоритм шифрования, необходимость шифрования имени файла и прочие параметры придется указывать самостоятельно. По окончании файловая система будет смонтирована, а пользователю будет выдан итог.
Конфигурация завершена. Создана файловая система со следующими свойствами:
Шифр файловой системы: «ssl/blowfish», версия 2:1:1
Шифр файла: «nameio/block», версия 3:0:1
Размер ключа: 160 бит
Размер блока: 512 байт, включая 11 байт MAC заголовок
Каждый файл содержит 8-байтный заголовок с уникальными IV данными.
Файловые имена зашифрованы с использованием IV цепочек.
Данные файла IV связаны с именем файла IV.
Проверяем, как смонтирована новая файловая система:
$ mount | grep fuse
encfs on /home/grinder/crypt type fuse (rw,nosuid,nodev,default_permissions)
Теперь можно проверить работу вновь созданной ФС:
$ cd crypt/
$ echo «Это зашифрованное сообщение» > testfile
$ cat testfile
Это зашифрованное сообщение
$ cd
Теперь размонтируем и смотрим, что в каталоге:
$ fusermount -u ~/crypt
$ ls ./.crypt/
4bR5Ihisjfaa,5fdX40bTqgU
Невозможно прочитать содержимое файлов.
Кроме того, можно задать дополнительные параметры, которые позволяют автоматически размонтировать файловую систему в случае неактивности в течение какого-то промежутка времени, организовать доступ нескольким пользователям и некоторые другие. Используя утилиту encfsctl, можно проверить параметры файловой системы или сменить пароль. Например:
# encfsctl ./.crypt
Версия 5; создана EncFS 1.2.5 (ревизия 20040813)
Шифр файловой системы: «ssl/blowfish», версия 2:1:1
Шифр файла: «nameio/block», версия 3:0:1
Размер ключа: 160 бит
Размер блока: 512 байт, включая 11 байт MAC заголовок
Каждый файл содержит 8-байтный заголовок с уникальными IV данными.
Файловые имена зашифрованы с использованием IV цепочек.
Данные файла IV связаны с именем файла IV.
Относительно недавно появившаяся encfssh дает возможность смонтировать зашифрованный каталог в общедоступный, к которому можно подключиться, зная пароль.
Для использования в военных, правительственных и других организациях, в которых уделяется особое внимание режиму секретности, разработана Phonebook (www.freenet.org.nz/phonebook) — файловая система, использующая технологию, получившую название Deniable Encryption technology. Ее разработчики пытаются учесть «человеческий фактор», оказывающийся основной причиной многих казусов, возникающих при защите информации. Кратко суть этой технологии заключается в использовании нескольких слоев кодирования, каждый со своим паролем, поэтому для того чтобы получить доступ, необходимо знать уже два параметра: название слоя и пароль. В случае ошибки набора будет создан новый слой, при этом никакого сообщения об ошибке выведено не будет. Есть возможность создать несколько слоев с одним именем, но с разными паролями, в случае взлома будет раскрыта информация только в одном из них. Все файлы шифруются индивидуально (256‑бит Blowfish, CFB‑режим плюс SHA1‑хеш), в случайном порядке изменяется и время доступа к файлу. Файлы могут быть записаны на CD‑ROM, также доступ к ним можно получить через сеть (например, NFS).
Монтирование удаленных ресурсов
На очереди еще одна интересная файловая система — sshfs, доступна для закачки с сайта проекта fuse или через репозитарий Kubuntu:
sudo apt-get install sshfs
Эта утилита позволяет монтировать удаленные системы, используя зашифрованные SSH‑соединения, и работать с ними как с обычной локальной файловой системой. При этом от пользователя не требуется знаний особенностей работы и утилит. Команда для монтирования проста:
$ sshfs [email protected]:/tmp /media/other
После чего потребуется ввести пароль для доступа к удаленной системе. Проверить можно так:
$ mount | grep shfs [email protected]: on /media/other type shfs (version=2,mnt=/mnt/local,fd=5)
Если теперь посмотреть в /media/other, то в нем обнаружите файлы, расположенные на удаленном компьютере.
Подобным образом можно смонтировать и SMB‑ресурсы Windows-машин. Проект SMB for Fuse (www.ricardis.tudelft.nl/~vincent/fusesmb/) позволяет монтировать не только отдельные ресурсы, как это делается обычным способом при помощи smbclient и smbmount, но и полностью всю рабочую группу или компьютер. Затем к ресурсам можно обращаться как к локальным файлам из любого приложения. Кэширование с помощью скрипта fusesmbcache ускоряет просмотр доступных ресурсов. Этот скрипт необходимо запустить, используя cron:
# crontab -e
*/30 * * * * fusesmbcache &> /dev/null
И теперь монитуем ресурсы:
# mkdir ~/net
# fusermount ~/net fusesmb &
Теперь в указанном каталоге появится дерево каталогов, соответствующих рабочим группам, входящим в них компьютерам и доступным ресурсам.
Контроль версий файлов
Wayback (User-level Versioning File System for Linux, wayback.sourceforge.net) позволяет сохранять старые версии текстовых файлов, независимо от их количества и каталогов, в которых они располагаются. Работает wayback на любом блочном устройстве с любой файловой системой. Для отката такая система ведет файл журнала, в котором описываются все изменения. Монтируется новая файловая система при помощи скрипта mount.wayback.
$ mount.wayback ~/wayback/ /media/disk
$ mount | grep fuse
/proc/fs/fuse/dev on /media/disk type fuse (rw,nosuid,nodev)
$ echo «test» > /media/disk/test
$ ls /media/disk/test
Смотрим что в
$ ls ~/wayback/
test test~. versionfs! version test. versionfs! version
$ echo «test2» >> /media/disk/test
$ echo «test3» >> /media/disk/test
$ls ~/wayback/
test ~test ~test. versionfs! version test~. versionfs! version test. versionfs! version
Отмечается более быстрая работа с файлами по сравнению с CVS. Но если все-таки необходим доступ именно к системе CVS, то некоторые из вас, возможно, предпочтут использовать довольно удобную cvsfs (sourceforge.net/projects/cvsfs), позволяющую смонтировать CVS и работать с ней как с локальной файловой системой. При этом пользователю будут доступны все изменения, без необходимости закачки всего архива.
Доступ к Gmail
Для пользователей почтового сервиса Gmail доступна файловая система GmailFS — Gmail Filesystem (richard.jones.name/google-hacks/gmail-filesystem/gmail-filesystem.html). Это приложение, написанное на языке высокого уровня Питон, для связи с Gmail использует библиотеку libgmail (libgmail.sourceforge.net). С его помощью можно смонтировать почтовый аккаунт как обычную файловую систему и пользоваться в дальнейшем обычными командами вроде ls, rm, cp, grep. Пользоваться GmailFS просто, к тому же он есть в репозитарии Kubuntu sudo apt-get install gmailfs:
$ sudo mount.gmailfs none /media/gmail -o username=gmail_user, password=gmail_password
Для удобства проще занести регистрационные данные в файл /etc/gmailfs/gmailfs.conf в поля username и password.
Работа с устройствами
Не менее интересны файловые системы, позволяющие получить доступ к различным устройствам. Среди них btfs — Bluetooth FileSystemMapping (www.mulliner.org/bluetooth/btfs.php), используя которую, можно узнать обо всех доступных Bluetooth-устройствах, просто прибегнув к команде ls:
$ ls -la /OPUSH
/OPUSH/SE_T630
А также переслать файлы обычным образом:
$cp file.txt /OPUSH/SE_T630
Правда, в данный момент получить файлы от устройств таким образом невозможно, да и проект уже год как не обновлял версии.
Для доступа к памяти в мобильных телефонах Siemens разработана файловая система SieFS (chaos.allsiemens.com/siefs, рис. 2), которая работает с телефонами серий 45, 55 и 65.
В статье представлены только некоторые проекты, но как видите, при шифровании разделов, доступе к файлам по сети и обращении к устройствам используются одни и те же утилиты, отчего реализация подобных задач становится куда прозрачнее.
Linux forever!
Сергей ЯРЕМЧУК
Web-droid редактор
вологість:
тиск:
вітер:
Вселенная Fallout в 2024 году: от игр к сериалу
Как вселенная игр Fallout получила через десятки лет свой сериал и вновь попала на пик популярности
AMD Ryzen PRO 8000 — новые процессоры для ноутбуков и десктопов
AMD процессор события в миреОфициальное пополнение модельного ряда AMD Ryzen 8000 включает две новые линейки: десктопные чипы Ryzen PRO 8000G и мобильные Ryzen PRO 8040, ориентированные на корпоративный сегмент
Acer Chromebook 514 улучшили процессором Intel i3-N305 и оперативной памятью на 8 ГБ. Цена в Украине — 20 499 грн
Acer Chrome ноутбукAcer анонсировала выпуск обновленной версии Chromebook 514 с более мощным процессором Intel и расширенной оперативной памятью на 8 ГБ.