- В некоторых системах пользователи могут быть разделены на отдельные категории.
- Для всех пользователей одной категории определяются единые права доступа.
Например, в системе UNIX все пользователи подразделяются на три категории: владельца файла, членов его группы и всех остальных.
Различают два основных подхода к определению прав доступа:
- избирательный доступ, когда для каждого файла и каждого пользователя сам владелец может определить допустимые операции;
- мандатный подход, когда система наделяет пользователя определенными правами по отношению к каждому разделяемому ресурсу (в данном случае файлу) в зависимости от того, к какой группе пользователь отнесен.
Особенности:
- Linux - это многопользовательская система: каждый файл является исключительной собственностью одного пользователя и одной группы.
- Каждый пользователь владеет личным каталогом (называемым домашним каталогом).
- Пользователь является владельцем этого каталога и всех создаваемых в нем файлов.
- С ними также ассоциируется группа, которая является основной группой, к которой принадлежит пользователь.
- Пользователь может быть членом нескольких групп одновременно.
- Как владелец файла, пользователь может устанавливать права на файлы.
права распределяются между тремя категориями пользователей:
- владельцем файла;
- всеми пользователями, являющимися членами группы, ассоциированной с файлом (также называемой группой владельца), но не являющимися владельцами;
- остальными, куда входят все остальные пользователи, которые не являются ни владельцами, ни членами группы владельца.
- Существует три разновидности прав:
- Права на чтение (Read, r): пользователю разрешается читать содержимое файла. По отношению к каталогу это означает, что пользователь может просмотреть его содержимое (т.е. список файлов этого каталога).
- Права на запись (Write, w): разрешает изменять содержимое файла. По отношению к каталогу право на запись дает пользователю возможность добавлять или удалять файлы из этого каталога, даже если он не является владельцем этих файлов.
- Права на выполнение (eXecute, x): разрешает запуск файла (обычно только исполняемые файлы имеют этот тип прав доступа). По отношению к каталогу это дает пользователю возможность проходить его, что означает войти в этот каталог или пройти сквозь него. Обратите внимание, что это отличается от доступа на чтение: вы в состоянии пройти через каталог, но прочитать его содержимое все-таки не можете!
- Возможны любые комбинации этих прав.
- Ниже представлено выполнение команды ls -l в командной строке:
ls -l
total 1
-rw-r----- 1 queen users 0 Jul 8 14:11 a_file
drwxr-xr-- 2 peter users 1024 Jul 8 14:11 a_directory/
- Есть одно исключение из этих правил - root.
- root может изменять атрибуты (права доступа, владельца и группу) всех файлов, даже если он не является владельцем, и поэтому сможет сделать себя владельцем файла!
- root может читать файлы, для которых у него нет прав на чтение, проходить через каталоги, к которым у него, будь он обычным пользователем, не было бы доступа и т.д.
- Если root'у не хватает прав, ему нужно просто добавить их.
- root имеет полный контроль над системой, что влечет за собой определенный уровень доверия к человеку, знающего его пароль.
- Имя файла может содержать любые символы, включая непечатаемые, за исключением ASCII-символа 0, который означает конец строки, и /, который является разделителем каталога. Кроме того, вследствие чувствительности к регистру в UNIX® файлы readme и Readme будут разными, потому что под буквами r и R в системах на базе UNIX® подразумеваются два разных символа.
- Имя файла не обязательно должно иметь расширение, если только вам не захочется так называть свои файлы. В GNU/Linux расширения файлов не определяют их содержимого, а также на большинстве операционных систем. Тем не менее, так называемые «расширения файлов» довольно удобны. В UNIX® точка (.) - это просто один из символов, но он также имеет одно специальное назначение. В UNIX® файлы с именами, начинающимися с точки, являются «скрытыми»; это также касается и каталогов, чьи имена начинаются с .
- Кэш-память, или просто кэш (cache), — это способ совместного функционирования двух типов запоминающих устройств, отличающихся временем доступа и стоимостью хранения данных, который за счет динамического копирования в «быстрое» ЗУ наиболее часто используемой информации из «медленного» ЗУ позволяет, с одной стороны, уменьшить среднее время доступа к данным, а с другой стороны, экономить более дорогую быстродействующую память.
- Неотъемлемым свойством кэш-памяти является ее прозрачность для программ и пользователей. Система не требует никакой внешней информации об интенсивности использования данных; ни пользователи, ни программы не принимают никакого участия в перемещении данных из ЗУ одного типа в ЗУ другого типа, все это делается автоматически системными средствами.
- Кэш-памятью, или кэшем, называют не только способ организации работы двух типов запоминающих устройств, но и одно из устройств — «быстрое» ЗУ. Оно стоит дороже и, как правило, имеет сравнительно небольшой объем. «Медленное» ЗУ далее будем называть основной памятью, противопоставляя ее вспомогательной кэш-памяти.
- В некоторых ФС запросы к внешним устройствам, в которых адресация осуществляется блоками (диски, ленты), перехватываются промежуточным программным слоем-подсистемой буферизации.
- Подсистема буферизации – буферный пул, располагающийся в оперативной памяти, и комплекс программ, управляющих этим пулом.
- Каждый буфер пула имеет размер, равный одному блоку.
- При поступлении запроса на чтение некоторого блока подсистема буферизации просматривает свой буферный пул и, если находит требуемый блок, то копирует его в буфер запрашивающего процесса.
- Операция ввода-вывода считается выполненной, хотя физического обмена с устройством не происходило.
- Очевиден выигрыш во времени доступа к файлу.
- Если же нужный блок в буферном пуле отсутствует, то он считывается с устройства и одновременно с передачей запрашивающему процессу копируется в один из буферов подсистемы буферизации.
- При отсутствии свободного буфера на диск вытесняется наименее используемая информация.
- Таким образом, подсистема буферизации работает по принципу кэш-памяти.
Функционирование любой ФС можно представить многоуровневой моделью:
- Каждый уровень модели предоставляет некоторый интерфейс (набор функций) вышележащему уровню
- Каждый уровень модели для выполнения своей работы использует интерфейс (обращается с набором запросов) нижележащего уровня
- Задача: определение по символьному имени файла его уникального имени.
- В ФС, в которых каждый файл может иметь только одно символьное имя (MS-DOS), этот уровень отсутствует, так как символьное имя является одновременно уникальным и может быть использовано ОС.
- В других ФС, в которых один и тот же файл может иметь несколько символьных имен, на данном уровне просматривается цепочка каталогов для определения уникального имени файла.
- В ФС UNIX, например, уникальным именем является номер индексного дескриптора файла (i-node).
- По уникальному имени файла определяются его характеристики: права доступа, адрес, размер и другие.
- Характеристики файла могут входить в состав каталога или храниться в отдельных таблицах.
- При открытии файла его характеристики перемещаются с диска в оперативную память, чтобы уменьшить среднее время доступа к файлу.
- В некоторых ФС (например, HPFS) при открытии файла вместе с его характеристиками в оперативную память перемещаются несколько первых блоков файла, содержащих данные.
- Сравниваются полномочия пользователя или процесса, выдавших запрос, со списком разрешенных видов доступа к данному файлу
- Если запрашиваемый вид доступа разрешен, то выполнение запроса продолжается
- Если нет – выдается сообщение о нарушении прав доступа
- Определяются координаты запрашиваемой логической записи в файле, то есть требуется определить, на каком расстоянии (в байтах) от начала файла находится требуемая логическая запись.
- При этом абстрагируются от физического расположения файла, он представляется в виде непрерывной последовательности байт.
- Алгоритм работы данного уровня зависит от логической организации файла. Например, если файл организован как последовательность логических записей фиксированной длины l, то n-ая логическая запись имеет смещение l(n-1) байт.
- Для определения координат логической записи в файле с индексно-последовательной организацией выполняется чтение таблицы индексов (ключей), в которой непосредственно указывается адрес логической записи.
- ФС определяет номер физического блока, который содержит требуемую логическую запись, и смещение логической записи в физическом блоке.
- Для решения этой задачи используются результаты работы логического уровня - смещение логической записи в файле, адрес файла на внешнем устройстве, а также сведения о физической организации файла, включая размер блока