diplom (663758), страница 4
Текст из файла (страница 4)
Дисковая квота – заранее определенное, фиксированное количество блоков дискового пространства и/или количество файловых дескрипторов, выделяемое каждому пользователю или группе пользователей для работы и хранения данных.
Использование дисковых квот позволяет ограничивать два аспекта дискового пространства: количество файловых дескрипторов, другими словами, количество файлов, которое может быть создано пользователем или группой пользователей, и часть от всего объема диска, которую может использовать пользователь или группа для хранения своих файлов. Идея состоит в том, чтобы определить для каждого пользователя или группы определенную часть от общего объема диска, чтобы ни при каких условиях пользователь не смог превысить тот объем используемой дисковой памяти, который ему выделен. Таким образом, устраняется проблема переполнения диска или нехватки дискового пространства для других пользователей и процессов.
Концепция разделения дискового пространства оперирует тремя понятиями: мягкое ограничение (soft limit), жесткое ограничение (hard limit) и период отсрочки (grace period).
Мягкое ограничение определяет максимальный размер дискового пространства, который может быть занят данными определенного пользователя или группы пользователей.
Жесткое ограничение работает, только если установлен период отсрочки grace period.
Если период отсрочки установлен в значение, отличное от нуля, то, когда занятый объем превышает объем мягкого ограничения, пользователю выдается сообщение, что его дисковое пространство на исходе. Если пользователь игнорирует это предупреждение и его дисковая квота продолжает превышать значение мягкого ограничения, то по истечении периода отсрочки дисковая квота считается исчерпанной. При этом обязательно должно быть установлено жесткое ограничение. Жесткое ограничение является абсолютным максимумом использования пространства файловой системы пользователем.
Управление механизмом квот осуществляет ядро операционной системы. В последних версиях Linux в стандартное ядро, идущее в дистрибутиве, поддержка квот включена по умолчанию. Если же производится сборка нового ядра, поддержку квот необходимо включить явно. Включение поддержки механизма квот осуществляется установкой параметра Quota Support (CONFIG_QUOTA) в разделе FileSystems при конфигурировании ядра до процесса сборки. Если такого параметра в ядре нет, это означает, что данная версия ядра не поддерживает механизм квот. В этом случае для поддержки квот на ядро необходимо наложить «заплатку» - специальное дополнение в стандартный код ядра. Заплатку можно загрузить с Интернета.
Поддержка квот распространяется на логический раздел диска и указывается при его монтировании. Для монтирования раздела используется файл /etc/fstab, в котором и задаются параметры, указывающие на использование квот. Это параметры usrquota и grpquota.
Для управления и настройки дисковых квот используется пакет quota. В современных дистрибутивах Linux этот пакет входит в стандартную поставку, но можно загрузить последнюю версию с Интернета.
На момент написания работы последней стабильной версией пакета quota была версия 3.11. Далее перечислены основные программы пакета quota-3.11, необходимые для настройки механизма квот:
quota – программа позволяет отображать текущее состояние механизма квот. По умолчанию отображается только квота пользователя, запустившего программу на выполнение. Эту программу может запускать любой пользователь системы.
convertquota – программа производит перевод файлов quota.user и quota.group в файлы aquota.user и aquota.group. Файлы quota.user и quota.group являются файлами пользовательских квот старого формата. Начиная с версии ядра 2.4.0, в Linux используется новый формат дисковых квот, который обладает, в отличие от старой версии, следующими преимуществами:
- поддержка 32-битных идентификаторов пользователей (UID);
- установка квоты для привилегированного пользователя;
- установка дисковой квоты в байтах (в старой версии единицей дисковой квоты служил килобайт);
- поддержка дисковой квоты для журналируемой файловой системы ReiserFS.
Для настройки новой версии механизма квот используются файлы aquota.user и aquota.group. Проще говоря, программа convertquota позволяет перевести файлы настройки квот из старого формата в новый, тем самым позволяя перейти к использованию новой версии с минимальной перенастройкой системы.
edquota – программа является редактором пользовательских квот. При вызове этой программы запускается текстовый редактор, установленный по умолчанию в системе. В этом редакторе можно сделать необходимые изменения в файле дисковой квоты.
qout – программа выводит статистику в килобайтах по пользовательским квотам для конкретной файловой системы. На момент написания работы программа quot, входящая в пакет версии 3.11, поддерживала только файловую системы XFS.
quotacheck – программа для проверки целостности дисковой квоты. При интенсивной работе механизма квот в файловой системе могут возникать различные неточности, связанные с использованием дискового пространства пользователей. Программа quotacheck проводит проверку файловой системы, определяя размер доступного и занятого пространства, производит построение таблицы текущего использования дискового пространства и сравнивает полученные данные с записями в файле дисковой квоты. Если имеются какие-то несоответствия, эти несоответствия устраняются путем исправления неверных значений в файлах дисковой квоты.
quotaon – программа для включения пользовательских квот на указанной файловой системе. До использования этой программы необходимо для требуемой файловой системы установить параметр usrquota и/или grpquota в файле /etc/fstab.
quotaoff – программа для выключения пользовательских квот на указанной файловой системе.
repquota – программа для вывода статистики по использованию дискового пространства для указанной файловой системы.
setquota – программа для редактирования пользовательских квот в режиме командной строки.
warnquota – программа для информирования пользователей о том, что их дисковое пространство на исходе. Информирование происходит путем посылки предупреждающего сообщения по электронной почте.
Более подробная информация о программах пакета quota может быть получена из соответствующих man-руководств.
Практическое применение рассмотренной информации приводится в приложении в примере 4.
2.3. Библиотека PAM
PAM (Pluggable Authentication Modules) – подгружаемые модули аутентификации. PAM является набором динамически подключаемых модулей, с помощью которых привилегированный пользователь может выбирать, как приложение должно осуществлять процесс аутентификации. Такая технология оказалась очень полезна, особенно при появлении различных методов аутентификации пользователя в системе. Эта технология имеет два основных преимущества. Первым преимуществом является модульность приложений, поддерживающих PAM. Это означает, что для приложения, поддерживающего PAM, появляется возможность изменить механизм аутентификации пользователей без перекомпиляции программы, как говорят «на ходу», достаточно изменить конфигурационный файл PAM. Второе преимущество использования PAM заключается в том, что администратор системы получает полную свободу в выборе схемы аутентификации для каждого отдельного приложения, причем эта схема может быть достаточно сложной и состоящей из нескольких этапов. Единственным неотъемлемым требованием для использования PAM является наличие изначально встроенных в приложение функций работы с библиотекой PAM. Сейчас практически все популярные программные продукты имеют встроенную поддержку PAM.
Рис. 2.3.1 Структурная схема взаимодействия приложения и библиотеки PAM
На рисунке 2.3.1 наглядно показано, как происходит взаимодействие некого приложения А с библиотекой PAM. Приложение взаимодействует с библиотекой PAM, причем приложению неизвестно, какие алгоритмы аутентификации используются при проверке подлинности пользователя. Все операции по аутентификации, то есть шифрование пароля и его проверку, производит библиотека PAM. Библиотека Linux-PAM (в середине рисунка) производит чтение параметров аутентификации приложения А из конфигурационного файла и загружает необходимые модули в память. Затем загруженные модули попадают в одну из четырех управляющих групп (расположенных в нижней части рисунка посередине) и помещаются туда в порядке появления их в конфигурационном файле (сначала модуль а в группу auth, за ним b и так далее). Эти модули при вызове библиотекой Linux-PAM выполняют различные задачи аутентификации для приложения А. Для передачи текстовой информации, запрашиваемой у пользователя, может быть использована встроенная функция обмена.
Все модули PAM по умолчанию располагаются в каталоге /lib/security, а конфигурационные файлы PAM – в каталоге /etc/pam.d. Имя каждого конфигурационного файла, расположенного в каталоге /etc/pam.d, совпадает с именем приложения, использующего его. Например, для программы login полный путь к конфигурационному файлу PAM будет иметь вид /etc/pam.d/login. Содержимое этого файла может иметь следующий вид:
#%PAM-1.0
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_stack.so service=system-auth
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_limits.so
session optional /lib/security/pam_console.so
Каждая строчка файла означает, что для удачной аутентификации пользователь должен пройти через указанный модуль. Формат строки любого конфигурационного файла PAM имеет вид:
тип_модуля флаг_контроля путь_к_модулю параметры_модуля
Все модули библиотеки PAM по функциональному признаку делятся на четыре типа:
auth – этот тип модулей позволяет осуществлять два аспекта аутентификации. Во-первых, он выполняет саму аутентификацию, то есть устанавливает факт того, что пользователь действительно тот, за кого себя выдает. Это может быть запрос пароля или другие методы идентификации. Во-вторых, модуль может разрешить членство в группе (независимо от файла групп пользователей group) или определить другие привилегии, основываясь на информации о пользователе.
account – этот тип модулей выполняет функции, не связанные с аутентификацией напрямую. Обычно он используется для разрешения или запрещения доступа в зависимости от определенных условий, таких как время дня, количество пользователей, одновременно запросивших ресурс, различные параметры системы и так далее.
sessions – в основном этот тип используется для определения дополнительных действий, которые необходимо выполнить до или после предоставления сервиса пользователю. Сюда можно отнести протоколирование действий по открытию определенных файлов, монтирование каталогов, удаление временных файлов и так далее.
password – этот последний тип необходим для обновления опознавательного признака (например, того же самого пароля), который идентифицирует пользователя.
Наличие четырех управляющих типов говорит о том, что сама технология аутентификации с использованием библиотеки PAM способна предоставить не только «голый» способ установления подлинности пользователя, а еще и широкий спектр дополнительных возможностей по защите системы и предоставлению доступа к сервисам.
Флаг контроля определяет, как система будет себя вести при удачном или неудачном прохождении соответствующего модуля. Поскольку модули запускаются один за другим, то специальной расстановкой флагов можно определить значимость каждого из них. В качестве флагов могут быть использованы четыре ключевых слова:
required – этот флаг определяет, что для удачной аутентификации в целом необходимо успешное прохождение соответствующего модуля. Если при прохождении этого модуля система получила отказ, процесс аутентификации продолжается до тех пор, пока все модули не будут обработаны, и только потом выдается сообщение об ошибке.
requisite – эффект действия этого флага тот же, что и флага required, с одним различием: при получении отказа управление сразу возвращается приложению, прохождение остальных модулей не производится.
sufficient – весь процесс аутентификации считается успешным, если работа модуля с этим флагом была успешной и проверка на предшествующих модулях с флагом required не провалилась. Если работа модуля с этим флагом была неудачной, это не считается фатальной ошибкой.
optional – успешность модуля с этим флагом является необязательной и его использование не критично для аутентификации.
Путь к модулю содержит строку полного пути к модулю в файловой системе. Все модули хранятся в каталоге /lib/security, поэтому, например, путь к модулю pam_limits будет выглядеть как /lib/security/pam_limits.so.
Параметры модуля являются индивидуальным для каждого модуля и описываются в документации модуля.
Помимо основных конфигурационных файлов некоторые модули используют дополнительные файлы конфигурации, находящиеся в каталоге /etc/security. Каждый файл в этом каталоге предназначен для конкретной группы настроек:
time.conf – в этом файле можно ограничить время доступа пользователей с различных терминалов к различным сервисам. Эти настройки использует модуль pam_time, поэтому для вступления в силу временных ограничений необходимо добавить модуль pam_time в конфигурационный файл приложения, на которое должны распространяться эти ограничения.