- •Сетевые операционные системы
- •Глава 1. Эволюция операционных систем 22
- •Глава 2. Назначение и функции операционной системы 59
- •Глава 3. Архитектура операционной системы 95
- •Глава 4. Процессы и потоки 139
- •Глава 5. Управление памятью 260
- •Глава 6. Аппаратная поддержка мультипрограммирования на примере процессора Pentium 333
- •Глава 7. Ввод-вывод и файловая система 389
- •Глава 8. Дополнительные возможности файловых систем 512
- •Глава 9. Сеть как транспортная система 576
- •Глава 10. Концепции распределенной обработки в сетевых ос 686
- •Глава 11. Сетевые службы 736
- •Глава 12. Сетевая безопасность 855
- •Благодарности
- •Предисловие авторов ко второму изданию
- •Для кого эта книга
- •Структура книги
- •Глава 9 является компактным введением в сетевые технологии, о ее содержании уже рассказывалось при описании отличий второй редакции учебника.
- •От издательства
- •Глава 1. Эволюция операционных систем
- •Первые операционные системы
- •Мультипрограммные операционные системы для мэйнфреймов
- •Первые сетевые операционные системы
- •Операционные системы миникомпьютеров и первые локальные сети
- •Развитие операционных систем в 80-е годы
- •Развитие операционных систем в 90-е годы
- •Современный этап развития операционных систем персональных компьютеров
- •Надежность
- •Простота обслуживания
- •Пользовательский интерфейс
- •Средства информационной самоорганизации
- •Защита данных
- •Виртуальные распределенные вычислительные системы суперкомпьютеров
- •Задачи и упражнения
- •Глава 2. Назначение и функции операционной системы
- •Операционные системы для автономного компьютера
- •Ос как виртуальная машина
- •Ос как система управления ресурсами
- •Функциональные компоненты операционной системы автономного компьютера
- •Управление процессами
- •Управление памятью
- •Управление файлами и внешними устройствами
- •Защита данных и администрирование
- •Интерфейс прикладного программирования
- •Пользовательский интерфейс
- •Сетевые операционные системы
- •Функциональные компоненты сетевой ос
- •Сетевые службы и сетевые сервисы
- •Встроенные сетевые службы и сетевые оболочки
- •Одноранговые и серверные сетевые операционные системы
- •Ос в одноранговых сетях
- •Ос в сетях с выделенными серверами
- •Требования к современным операционным системам
- •Задачи и упражнения
- •Глава 3. Архитектура операционной системы
- •Ядро и вспомогательные модули ос
- •Ядро в привилегированном режиме
- •Многослойная структура ос
- •Аппаратная зависимость и переносимость ос
- •Типовые средства аппаратной поддержки ос
- •Машинно-зависимые компоненты ос
- •Переносимость операционной системы
- •Микроядерная архитектура Концепция
- •Преимущества и недостатки микроядерной архитектуры
- •Совместимость и множественные прикладные среды
- •Двоичная совместимость и совместимость исходных текстов
- •Трансляция библиотек
- •Способы реализации прикладных программных сред
- •Система виртуальных машин
- •Задачи и упражнения
- •Глава 4. Процессы и потоки
- •Мультипрограммирование
- •Мультипрограммирование в системах пакетной обработки
- •Мультипрограммирование в системах разделения времени
- •Мультипрограммирование в системах реального времени
- •Мультипроцессорная обработка
- •Планирование процессов и потоков
- •Понятия «процесс» и «поток»
- •Создание процессов и потоков
- •If(fork()) { действия родительского процесса }
- •Планирование и диспетчеризация потоков
- •Состояния потока
- •Вытесняющие и не вытесняющие алгоритмы планирования
- •Алгоритмы планирования, основанные на квантовании
- •Алгоритмы планирования, основанные на приоритетах
- •Смешанные алгоритмы планирования
- •Планирование в системах реального времени
- •Моменты перепланирования
- •Мультипрограммирование на основе прерываний Назначение и типы прерываний
- •Аппаратная поддержка прерываний
- •Программные прерывания
- •Диспетчеризация и приоритезация прерываний в ос
- •Функции централизованного диспетчера прерываний на примере ос семейства Windows nt
- •Процедуры обработки прерываний и текущий процесс
- •Системные вызовы
- •Синхронизация процессов и потоков Цели и средства синхронизации
- •Необходимость синхронизации и гонки
- •Критическая секция
- •Блокирующие переменные
- •Семафоры
- •Системные синхронизирующие объекты
- •Задачи и упражнения
- •Глава 1. Эволюция операционных систем 22
- •Глава 2. Назначение и функции операционной системы 59
- •Глава 3. Архитектура операционной системы 95
- •Глава 4. Процессы и потоки 139
- •Глава 5. Управление памятью 260
- •Глава 6. Аппаратная поддержка мультипрограммирования на примере процессора Pentium 333
- •Глава 7. Ввод-вывод и файловая система 389
- •Глава 8. Дополнительные возможности файловых систем 512
- •Глава 9. Сеть как транспортная система 576
- •Глава 10. Концепции распределенной обработки в сетевых ос 686
- •Глава 11. Сетевые службы 736
- •Глава 12. Сетевая безопасность 855
- •Глава 5. Управление памятью
- •Функции ос по управлению памятью
- •Типы адресов
- •Риc. 5.6. Общая и индивидуальные части виртуальных адресных пространств
- •Алгоритмы распределения памяти
- •Фиксированные разделы
- •Динамические разделы
- •Перемещаемые разделы
- •Виртуальная память
- •Страничное распределение
- •Оптимизация страничной виртуальной памяти
- •Двухуровневое страничное распределение памяти
- •Сегментно-страничное распределение
- •Разделяемые сегменты памяти
- •Кэширование данных. Универсальная концепция
- •Иерархия памяти
- •Принцип действия кэш-памяти
- •Проблема согласования данных
- •Отображение основной памяти на кэш
- •Схемы выполнения запросов в системах с кэш-памятью
- •Задачи и упражнения
- •Глава 6. Аппаратная поддержка мультипрограммирования на примере процессора Pentium
- •Регистры процессора
- •Привилегированные команды
- •Средства поддержки сегментации памяти
- •Виртуальное адресное пространство
- •Преобразование адресов
- •Защита данных при сегментной организации памяти
- •Сегментно-страничный механизм
- •Средства вызова процедур и задач
- •Вызов процедур
- •Вызов задач
- •Механизм прерываний
- •Кэширование в процессоре Pentium
- •Буфер ассоциативной трансляции
- •Кэш первого уровня
- •Совместная работа кэшей разного уровня
- •Задачи и упражнения
- •Глава 7. Ввод-вывод и файловая система
- •Задачи ос по управлению файлами и устройствами
- •Согласование скоростей обмена и кэширование данных
- •Разделение устройств и данных
- •Программный интерфейс к устройствам
- •Поддержка широкого спектра драйверов
- •Динамическая загрузка и выгрузка драйверов
- •Поддержка файловых систем
- •Синхронный и асинхронный режимы
- •Многослойная модель подсистемы ввода-вывода Общая схема
- •Менеджер ввода-вывода
- •Многоуровневые драйверы
- •Логическая организация файловой системы
- •Цели и задачи файловой системы
- •Типы файлов
- •Иерархическая структура файловой системы
- •Имена файлов
- •Монтирование
- •Атрибуты файлов
- •Логическая организация файла
- •Физическая организация файловой системы
- •Диски, разделы, секторы, кластеры
- •Физическая организация и адресация файла
- •Физическая организация fat
- •Физическая организация s5 и ufs
- •Физическая организация ntfs
- •Структура тома ntfs
- •Структура файлов ntfs
- •Каталоги ntfs
- •Файловые операции фс с запоминанием и без запоминания состояния операций
- •Открытие файла
- •Обмен данными с файлом
- •Блокировки файлов
- •Стандартные файлы ввода и вывода, перенаправление вывода
- •Контроль доступа к файлам Файл как разделяемый ресурс
- •Механизм контроля доступа
- •Контроль доступа в ос Unix
- •Контроль доступа в ос семейства Windows nt Общая характеристика
- •Разрешения на доступ к каталогам и файлам
- •Встроенные группы пользователей и их права
- •Задачи и упражнения
- •Глава 8. Дополнительные возможности файловых систем
- •Специальные файлы и аппаратные драйверы Специальные файлы как универсальный интерфейс
- •Структурирование аппаратных драйверов
- •Структура драйвера ос семейства Windows nt
- •Структура драйвера Unix
- •Блок-ориентированные драйверы
- •Байт-ориентированные драйверы
- •Отображаемые на память файлы
- •Дисковый кэш
- •Традиционный дисковый кэш
- •Дисковый кэш на основе виртуальной памяти
- •Отказоустойчивость файловых и дисковых систем
- •Восстанавливаемость файловых систем. Причины нарушения целостности файловых систем
- •Протоколирование транзакций
- •Восстанавливаемость файловой системы ntfs
- •Избыточные дисковые подсистемы raid
- •Обмен данными между Процессами и потоками
- •Конвейеры
- •Именованные конвейеры
- •Очереди сообщений
- •Разделяемая память
- •Задачи и упражнения
- •Глава 9. Сеть как транспортная система
- •Роль сетевых транспортных средств ос
- •Коммутация пакетов Пакеты
- •Буферы и очереди
- •Методы продвижения пакетов
- •Протокол и стек протоколов
- •Семиуровневая модель osi
- •Физический уровень
- •Канальный уровень
- •Сетевой уровень
- •Транспортный уровень
- •Сеансовый уровень
- •Уровень представления
- •Прикладной уровень
- •Стек tcp/ip Структура стека
- •Классы ip-адресов
- •Использование масок
- •Частные и публичные iр-адреса
- •Символьные имена и dns
- •Протокол dhcp
- •Ручное конфигурирование таблиц
- •Протоколы маршрутизации
- •Реализация стека протоколов в универсальной ос
- •Структура транспортных средств универсальной ос
- •Конфигурирование параметров стека tcp/ip
- •Функциональная схема маршрутизатора
- •Основные характеристики Cisco ios
- •Модульная структура ios
- •Прерывания и управление процессами
- •Организация памяти
- •Работа с буферами пакетов
- •Программная маршрутизация и ускоренная коммутация
- •Поддержка QoS
- •Задачи и упражнения
- •Глава 10. Концепции распределенной обработки в сетевых ос
- •Модели сетевых служб и распределенных приложений
- •Разделение приложений на части
- •Двухзвенные схемы
- •Трехзвенные схемы
- •Механизм передачи сообщений в распределенных системах
- •Синхронизация
- •Буферизация в примитивах передачи сообщений
- •Способы адресации
- •Надежные и ненадежные примитивы
- •Механизм Sockets ос Unix
- •Вызов удаленных процедур
- •Концепция удаленного вызова процедур
- •Генерация стабов
- •Формат rPp-сообщений
- •Связывание клиента с сервером
- •Особенности реализации rpc на примере систем Sun rpc и dce rpc
- •Задачи и упражнения
- •Глава 11. Сетевые службы
- •Сетевая файловая система
- •Модель неоднородной сетевой файловой системы
- •Модель загрузки-выгрузки и модель удаленного доступа
- •Архитектурные решения
- •Производительность, надежность и безопасность сетевой файловой системы
- •Семантика разделения файлов
- •Файловые stateful- и stateless-cepверы
- •Место расположения кэша
- •Способы распространения модификаций
- •Проверка достоверности кэша
- •Репликация файлов
- •Прозрачность репликации
- •Согласование реплик
- •Пример. Протокол передачи файлов ftp
- •Пример. Файловая система nfs
- •Справочная сетевая служба Назначение справочной службы
- •Архитектура справочной службы
- •Децентрализованная модель
- •Централизованная модель
- •Централизованная модель с резервированием
- •Декомпозиция справочной службы на домены
- •Распределенная модель
- •Основные концепции справочной службы Active Directory Домены, контроллеры доменов
- •Объекты
- •Глобальный каталог
- •Иерархическая структура Active Directory
- •Иерархия организационных единиц
- •Иерархия доменов. Доверительные отношения
- •Пространство имен
- •Репликация в Active Directory
- •Межсетевое взаимодействие
- •Основные подходы к организации межсетевого взаимодействия
- •Трансляция
- •Мультиплексирование стеков протоколов
- •Инкапсуляция протоколов
- •Задачи и упражнения
- •Глава 12. Сетевая безопасность
- •Основные понятия безопасности Конфиденциальность, целостность и доступность данных
- •Классификация угроз
- •Системный подход к обеспечению безопасности
- •Политика безопасности
- •Базовые технологии безопасности
- •Шифрование
- •Симметричные алгоритмы шифрования
- •Несимметричные алгоритмы шифрования
- •Криптоалгоритм rsa
- •Односторонние функции шифрования
- •Аутентификация, авторизация, аудит Аутентификация
- •Авторизация доступа
- •Технология защищенного канала
- •Технологии аутентификации Сетевая аутентификация на основе многоразового пароля
- •Аутентификация с использованием одноразового пароля
- •Синхронизация по времени
- •Использование слова-вызова
- •Аутентификация на основе сертификатов
- •Сертифицирующие центры
- •Инфраструктура с открытыми ключами
- •Аутентификация информации
- •Цифровая подпись
- •Аутентификация программных кодов
- •Система Kerberos
- •Первичная аутентификация
- •Получение разрешения на доступ к ресурсному серверу
- •Получение доступа к ресурсу
- •Достоинства и недостатки
- •Задачи и упражнения
- •Ответы к задачам и упражнениям Глава 1
- •Глава 2
- •Глава 3
- •Глава 4
- •Глава 5
- •Глава 6
- •Глава 7
- •Глава 8
- •Глава 9
- •Глава 10
- •Глава 11
- •Глава 12
- •Рекомендуемая литература
- •Сетевые операционные системы: Учебник для вузов
Пример. Файловая система nfs
Сетевая файловая система (Network File System, NFS) создана в середине 80-х годов компанией Sun Microsystems. Являясь фактическим стандартом для ОС семейства Unix, эта система реализована и для многих других ОС. Так, NFS широко используется в сетях Microsoft и Novell, а также в таких решениях компании IBM, как AS400 и OS/390. NFS, пожалуй, самая распространенная платформенно-независимая сетевая файловая система. Принципы ее организации на сегодня стандартизованы сообществом Интернета, последняя версия NFS v.4 описывается спецификацией RFC 3530 (http://www.ietf.org/rfc/ rfc3530. txt), выпущенной в апреле 2003 года.
На рис. 11.8 показана многоуровневая структура программных средств реализации файловой системы NFS. Программный код NFS разделен на две части: клиентскую и серверную. Когда приложению требуется выполнить какие-либо действия с файлом, оно посылает запрос NFS-клиенту.
Рис. 11.8. Многоуровневая структура сетевой файловой системы NFS
Программный код NFS-клиента реализует все обращения клиентской системы к удаленным файлам путем посылки NFS-серверу одного или нескольких сообщений протокола RPC. Как рассказано в предыдущей главе, протокол RPC предназначен для того, чтобы сделать более простой разработку сетевых приложений, а именно дать возможность приложению вызывать программную процедуру на удаленном компьютере точно таким же образом, каким оно обращается к локальной подпрограмме. Другими словами протокол RPC, наряду с другими средствами, такими, например, как монтирование файловых систем, направлен на обеспечение прозрачности сети, в том числе при работе с файлами. При наличии механизма RPC приложение может обращаться к удаленным файлам, используя тот же набор системных вызовов («создание файла», «запись блока», «чтение блока»), что и для доступа к локальным файлам. Понятно, что в действительности, чтобы запустить процедуру на другом компьютере, требуется выполнить много дополнительной работы. Именно с помощью RPC и происходит подмена этого «простого» вызова процедуры реально необходимым комплексом действий.
На следующем уровне модели OSI располагаются средства XDR (external Data Representation — внешнее представление данных). Поскольку одной из целей разработчиков NFS была поддержка неоднородных систем с клиентами и серверами, работающими под управлением различных ОС на различных аппаратных платформах, имеющих разный порядок представления байтов в машинном слове, разное представление чисел с плавающей точкой и др., в реализациях NFS на основе механизма RPC по умолчанию поддерживаются средства для унифицированного представления аргументов удаленных процедур.
Далее для передачи сообщений используются транспортные средства стека TCP/IP.
В файловой системе NFS можно определить два типа процедур:
процедуры монтирования удаленной файловой системы;
процедуры доступа к удаленным файлам.
Процедуры монтирования дают возможность NFS-клиентам получать доступ к разделяемым каталогам, которые предоставляются NFS-сервером. Для выполнения монтирования NFS-клиент посылает серверу полное имя каталога и запрашивает разрешение на монтирование этого каталога в какой-либо точке собственного дерева каталогов. При этом серверу не указывается, в какое место будет монтироваться каталог сервера. Получив имя, сервер проверяет законность этого запроса и возвращает клиенту дескриптор файла, являющегося удаленной точкой монтирования. Дескриптор включает описатель типа файловой системы, номер диска, номер индексного дескриптора (inode) каталога, который является удаленной точкой монтирования, информацию безопасности. Операции чтения и записи файлов из монтируемых файловых систем используют дескрипторы файлов вместо символьного имени.
Монтирование может выполняться автоматически с помощью командных файлов при загрузке. Существует другой вариант автоматического монтирования: при загрузке ОС на рабочей станции удаленная файловая система не монтируется, но при первом открытии удаленного файла ОС посылает запросы каждому серверу и после обнаружения этого файла монтирует каталог того сервера, на котором расположен найденный файл. Программа автоматического монтирования регулярно (по умолчанию каждые 5 минут) проверяет, выполняются ли какие-либо работы с файлами и подкаталогами смонтированного дерева каталогов. Если нет, то происходит автоматическое размонтирование, а если да, то система продолжает функционировать в прежней конфигурации.
Работа пользователя с удаленными файлами после выполнения операции монтирования оказывается полностью прозрачной — поддерево файловой системы NFS-сервера становится поддеревом локальной файловой системы. Выполнение программ почти не зависит от того, где расположен файл: локально или на удаленном диске. Если два или более клиента одновременно смонтировали один и тот же каталог, то они могут связываться путем разделения файла.
Основными функциями NFS являются функции доступа к удаленным файлам и каталогам. NFS поддерживает модель удаленного доступа. В этом случае все файловые операции выполняются на серверах, а клиенты только генерируют запросы на выполнение какого-либо действия над каталогом или операции чтения или записи файла. Кроме того, они могут запросить атрибуты файла, такие как тип, размер, время создания и модификации.
В NFS принята схема stateless, то есть серверы при работе с файлами не хранят данные об открытых клиентами файлах. Поэтому в NFS поддерживается большая часть системных вызовов Unix, за исключением open и close. Для обеспечения устойчивости клиентов к отказам серверов системные вызовы open и close исключены. Вместо операции открытия удаленного файла клиент посылает серверу сообщение, содержащее имя файла, с запросом отыскать его (lookup) и вернуть дескриптор файла. В отличие от вызова open вызов lookup не копирует никакой информации во внутренние системные таблицы. Вызов read содержит дескриптор того файла, который нужно считать, смещение в уже читаемом файле и количество считываемых байтов. Подчеркнем, что в схеме stateless каждый вызов является самодостаточным. Он несет всю необходимую информацию для выполнения заданной операции, никак не зависит от предыдущих операций и никак не влияет на последующие.
Таким образом, если сервер выйдет из строя, а затем будет восстановлен, информация об открытых файлах не потеряется, потому что она не поддерживается. При отказе сервера клиент просто продолжает посылать на него команды чтения или записи в файлы, однако не получив ответа и .исчерпав тайм-аут, клиент повторяет свои запросы. После перезагрузки сервер получает очередной повторный запрос клиента и отвечает на него. Таким образом, крах сервера вызывает только некоторую паузу в обслуживании клиентов, но никаких дополнительных действий по восстановлению соединений и повторному открытию файлов от клиентов не требуется.
К недостаткам NFS относится сложность блокировки файлов. Во многих ОС файл может быть открыт и заблокирован так, чтобы другие процессы не имели к нему доступа. Когда файл закрывается, блокировка снимается. В stateless-системах, подобных NFS, блокирование не может быть связано с открытием файла, так как сервер не знает, какой файл открыт. Для выполнения блокировки в сетевой файловой системе NFS используются специальные, формально не связанные с NFS средства управления блокированием — менеджер блокировок сети (Network Lock Manager, NLM) и монитор состояния сети (Network Status Manager, NSM), который ведет статистику блокировок. Последнее необходимо для того, чтобы при отказе NFS можно было автоматически восстановить блокировки.
Для повышения производительности в NFS используется кэширование на стороне как сервера, так и клиента, причем в последнем случае кэширование выполняется не только в оперативной памяти, но и на локальном диске.
На стороне клиента поддерживаются кэши для содержимого файлов и атрибутов файлов. Содержимое файла переносится в кэш поблочно, при этом применяется упреждающее чтение. При выполнении этой операции чтение блока в кэш по требованию приложения всегда сопровождается чтением следующего блока по инициативе системы. Кэширование выполняется и при записи. В этом случае данные, генерируемые приложением для записи в удаленный файл, накапливаются в кэше содержимого и лишь затем производится их пересылка на сервер,
Кэширование на клиентском компьютере разделяемого файла может привести к тому, что в какой-то момент содержимое этого файла в кэше одного клиента не будет совпадать с содержимым этого же файла в кэше другого клиента. Для того чтобы минимизировать возможный период такого рассогласования, используются атрибуты файла. Они помещаются в кэш атрибутов и регулярно (каждые несколько секунд) автоматически обновляются. Если, например, один из двух клиентов, совместно использующих файл, выполнил запись, то это немедленно вызовет изменение значений атрибутов этого файла, таких как «время обновления» и/или «размер файла». В этот момент происходит рассогласование копий файла. Однако благодаря регулярному обновлению кэша атрибутов на обеих клиентских машинах изменения атрибутов очень быстро становятся видны второму NFS-клиенту, который во избежание рассогласования автоматически выполняет обновление кэша содержимого файла.
На стороне сервера кэшируются записываемые данные, а также информация о дублируемых запросах. Кэширование записываемых данных осуществляется на основе так называемой технологии безопасной асинхронной записи. После того как данные пересланы в кэш (в оперативной памяти) сервера, от клиента поступает сообщение, которое инициирует операцию записи на диск сервера. Если операция записи данных на диск сервера проходит успешно, сервер отправляет подтверждение об этом клиенту. Такая процедура позволяет гарантировать целостность данных после перезагрузки сервера в случае его отказа.
Кэширование дублированных запросов направлено не столько на повышение производительности, сколько на повышение устойчивости и корректности работы NFS. Если при выполнении запроса возникает задержка, клиент может повторить свой запрос, причем не один раз. Это является штатной ситуацией для NFS, где сервер функционирует по схеме stateless и повтор запроса клиентом является частью восстановительной процедуры. Однако клиент не может знать точно, выполнен ли его предыдущий, запрос, и может послать избыточный запрос. Для одних операций, таких как запись данных на сервер, такая избыточность не несет никакой опасности — сервер просто повторяет чтение блока. Повторение же других операций, таких, например, как «удалить каталог», может привести к серьезной ошибке. Для избежания этого NFS-сервер поддерживает кэширование дублированных запросов, и все повторные запросы, поступившие в течение короткого периода, игнорируются.
Метод кэширования NFS не сохраняет семантику Unix для разделения файлов. Вместо этого используется не раз подвергавшаяся критике сеансовая семантика, в которой изменения данных в кэшируемом клиентом файле видны другому клиенту по-разному, в зависимости от временных соотношений. Клиент при очередном открытии файла, имеющегося в его кэше, проверяет у сервера, когда файл был в последний раз модифицирован. Если это произошло после того, как файл был помещен в кэш, клиент удаляет его из кэша и получает от сервера новую копию этого файла. Клиенты распространяют модификации, сделанные в кэше, с периодом в 30 секунд, так что сервер может получить обновления с большой задержкой. В результате работы механизмов удаления данных из кэша и распространения модификаций данные, получаемые каким-либо клиентом, не всегда являются самыми последними.
Контроль доступа в NFS выполняется путем совместного применения правил, определенных в локальной файловой системе NFS-сервера, и правил, заданных при выполнении так называемой процедуры экспорта.
Эта процедура заключается в следующем. Для того чтобы клиент смог выполнить монтирование удаленной файловой системы (или ее части), на сервере необходимо предварительно явно объявить, какие ресурсы файловой системы сервер может предоставить клиентам для совместного использования. Кроме того, процедура экспорта включает определение прав доступа к разделяемым файлам и каталогам на сервере для сетевых клиентов, которые в этом случае идентифицируются IP-адресами или доменными именами соответствующих компьютеров.
Сервер выдает разрешение клиенту на выполнение тех или иных действий в виде числового кода magic cookie. Это число служит своего рода паролем, который клиент должен включать в каждый RPC-запрос в качестве доказательства своих полномочий. Кроме того, RPC-запрос содержит идентификаторы пользователя uid, от имени которого выступает приложение, и список идентификаторов групп gid, в которые входит данный пользователь. Заметим, что администратор сервера задает права доступа к разделяемым файловым ресурсам на основе идентификаторов uid и gid клиентов. А это значит, что имеется потенциальная возможность коллизии. Обязанностью администратора является обеспечение согласованной идентификации пользователей на сервере и клиенте. В большой сети эта задача становится нетривиальной, поэтому для этих целей используется сетевая информационная служба NIS (Network Information System), представляющая собой достаточно простой вариант сетевой справочной службы. Функциями NIS является централизованное хранение и обработка системных файлов.
Понятно, что описанный механизм контроля доступа не является вполне надежным. Злоумышленнику достаточно перехватить одно RPC-сообщение, чтобы получить несанкционированный доступ. Для совершенствования безопасности NFS разработаны дополнительные программные средства, в частности протокол SecureRPC, который делает более защищенными не только контроль доступа, но и процедуры аутентификации.
