Введение 4
1. Постановка задачи 5
1.1. Права доступа к файлам в UNIX-подобных системах . . 5
1.2. Требования к реализуемой файловой системе 7
1.3. Обзор существующих решений 8
1.4. Постановка задачи 9
1.5. Резюме 9
2. Реализация 10
2.1. Выбор инструментов разработки 10
2.2. Расширение правовго набора 11
2.3. Алгоритм проверки прав 14
2.4. Трансляция стандартного и нового правовых наборов . . 15
2.5. Принципиальное решение 16
2.6. Резюме 20
3. Описание комплекса программного обеспечения 21
3.1. FTFS 21
3.2. FTPC 26
3.3. Резюме 28
4. Заключение 29
Как известно, GNU/Linux [10] и другие UNIX-подобные операционные системы [4] являются многопользовательскими. Проблема организации разграничения доступа к файлам и каталогам является одним из существенных вопросов, которые должна решать операционная система. Механизмы разграничения доступа, разработанные для системы UNIX в 70-х годах, очень просты, но они оказались настолько эффективными, что просуществовали уже более 30 лет и по сей день успешно выполняют большинство стоящих перед ними задач. Однако порой возникают потребности, которые эти механизмы удовлетворить не в состоянии.
Сейчас права доступа к файлу регулируются 16-ю битами, хранящимися в индексном дескрипторе [14]. Первые 4 бита из которых представляют информацию о типе файла, следующие 3 бита задают особые свойства исполняемых файлов, а последние 9 кодируют информацию о правах доступа. Эти 9 бит содержат в себе 3 группы по 3 бита, предназначенные для кодирования прав доступа для владельца файла, группы-владельца файла и остальных. Сами 3 бита можно символьно представить как rwx, где r отвечает за «право на чтение», w — «право на запись», а x — «право на исполнение». Таким образом задается порядок установки прав, не позволяющий, к примеру, установить конкретному пользователю индивидуальные права доступа и, тем более, разрешить или запретить ему отдельные действия, например, разрешить ему добавлять файлы в директорию, но не удалять уже имеющиеся (возможность добавления и удаления регулируются одним битом w, т.е. либо разрешены оба, либо оба запрещены).
В данной работе решается задача реализации файловой системы, позволяющей более точно настраивать права доступа.
Выпускная квалификационная работа посвящена вопросу реализации файловой системы с тонкой настройкой прав пользователей. Данный вопрос актуален ввиду значительного усложнения процесса администрирования файловых систем с ростом числа ее пользователей.
В рамках данной работы были рассмотрены существующие механизмы разграничения доступа UNIX-подобных систем и выделены их недостатки, исходя из которых были разработаны новая правовая модель и алгоритм проверки прав новой правовой модели, обеспечивающие возможность более гибкой настройки прав пользователя. Используя эти наработки, были разработаны драйвер файловой системы и программа администрирования файловой системы (суммарно ^2500 строк кода).
Для реализации использовался язык программирования C, FUSE- модуль ядра операционной системы GNU/Linux и система управления базами данных SQLite, что обеспечивает максимальную портируемость решения.
Таким образом, задачи, поставленные для достижения цели, решены в полном объеме, цель достигнута.