Квоты в Linux

Квоты в Linux
Квота — это административная утилита для мониторинга и ограничения использования дискового пространства пользователями и группами на каждой файловой системе. Существуют два возможных способа ограничений использования дисков. Первый из них — число inode'ов (число файлов), которым может владеть пользователь или группа. Второй — число дисковых блоков (суммарное пространство в килобайтах), которое может выделяться в использование пользователю или группе. При помощи квот системный администратор принуждает пользователя не расходовать неограниченный объем дискового пространства. Эта программа оперирует отдельно каждым пользователем и каждой файловой системой, поэтому для каждой файловой системы нужно определять квоты отдельно. Попробуем подробно рассмотреть, как настроить квотирование в вашей системе.

Первое, что вам необходимо сделать, это создать ядро с поддержкой квот. При конфигурации ядра надо удостовериться, что вы ответили "Y" на вопрос:
Filesystems
Quota support (CONFIG_QUOTA) [N/y/?] Y
Идем дальше. Файл /etc/fstab содержит информацию обо всех файловых системах, инсталлированных на вашем Linux-сервере. Квоты в нем должны быть включены, чтобы их можно было использовать. Так как квоты должны быть определены для каждой файловой системы независимо и каждая файловая система описывается в файле /etc/fstab в отдельной строке, то квота должна быть установлена для каждой строки, где вы хотите включить их поддержку. Используя программу квот, в зависимости от ваших нужд, вы можете включить квоты только для групп, пользователей или и тех и других одновременно. Для всех нижеприведенных примеров мы используем каталог /home, размещенный на разделе /dev/hda2.
Для включения квот для пользователей на определенной файловой системе отредактируйте ваш /etc/fstab файл и добавьте опцию usrquota в четвертое поле после слова defaults или любой другой опции.

Например:
/dev/hda2 /home ext3 defaults 1 2
/dev/hda2 /home ext3 nosuid,nodev 1 2
Изменяем на:
/dev/hda2 /home ext3 defaults,usrquota 1 2
/dev/hda2 /home ext3 nosuid,nodev,usrquota 1 2
Для включения квот для групп на определенной файловой системе отредактируйте ваш /etc/fstab файл и добавьте опцию grpquota в четвертое поле после слова defaults или любой другой опции.

Для того же примера:
/dev/hda2 /home ext3 defaults,grpquota 1 2
/dev/hda2 /home ext3 nosuid,nodev,grpquota 1 2
Для включения же квот для пользователей и групп на определенной файловой системе добавлять нужно опции usrquota, grpquota.
Для нашего примера:
/dev/hda2 /home ext3 defaults,usrquota,grpquota 1 2
/dev/hda2 /home ext3 nosuid,nodev,usrquota,grpquota 1 2
После модификации файла /tc/fstab, чтобы квоты начали действовать, в корневом каталоге файловой системы (например, /home) нужно создать файл quota.user, если вы хотите использовать пользовательские квоты, или quota.group для групповых квот, или и тот, и другой для комбинированных квот. Владельцем обоих файлов должен являться root с правами чтение-запись только для владельца.
Сейчас мы должны инициализировать файлы quota.user и quota.group в корневом каталоге файловой системы, чтобы не получать сообщений об ошибках в квотах во время перезагрузки сервера.

Для инициализации файлов quota.user и/или quota.group используйте следующие команды:
edquota -u us1
edquota -g us1
Команда edquota (-u) будет редактировать квоты для пользователя us1 и (-g) будет редактировать квоты для группы. Заметим: для того, чтобы инициализация файлов прошла успешно, вы должны редактировать существующие в вашей системе UID/GID.
После того, как вы закончили устанавливать необходимые опции в файле /etc/fstab, создали и инициализировали файлы quota.users и/или quota.group, вы должны перезагрузить систему, чтобы изменения, внесенные в файлы /etc/fstab, quota.user и/или quota.group, вступили в силу.
После того, как система перезагрузилась, вы можете назначить квоты пользователям и группам пользователей. Эта операция осуществляется при помощи команды edquota.
Edquota — это редактор квот, который создает временный файл с текущими дисковыми квотами, используемый пользователем root для их установки для пользователей и групп пользователей. Рассмотрим пример установки квот для пользователя и группы пользователей.

Установка квоты для пользователя
Предположим, у вас есть пользователь с именем us1. Для редактирования и модификации квот для пользователя us1 используйте следующую команду:
edquota -u us1
Вывод программы:
Quotas for user us1:
/dev/hda2: blocks in use: 8, limits (soft = 0, hard = 0)
inodes in use: 7, limits (soft = 0, hard = 0)
После выполнения этой команды вы увидите на экране строки, связанные с пользователем us1. "blocks in use:" отображает общее число блоков (в килобайтах), расходуемых пользователем на разделе. "inodes in use:" отображает общее число файлов, которое имеет пользователь на разделе. Эти параметры (blocks in use, and inodes in use) контролируются и устанавливаются системой автоматически, и вы не можете установить или изменить их.

Теперь назначим 4MB-квоту для пользователя us1, изменив следующие параметры к такому виду:
Quotas for user us1:
/dev/hda2: blocks in use: 8, limits (soft = 4096, hard = 0)
inodes in use: 7, limits (soft = 0, hard = 0)
soft limit (soft =) определяет максимальное количество дискового пространства, которое может иметь пользователь.
hard limit (hard =) определяет абсолютное ограничение использования пользователем дискового пространства.
Пользователь не может превзойти его. Следует заметить, что hard limit работает только когда установлен параметр grace period.
Параметр grace period позволяет вам установить время, прежде чем значение soft limit будет приведено в жизнь на файловой системе с включенными квотами. Этот параметр может, например, быть использован для предупреждения ваших пользователей о новой политике, которая установит дисковую квоту в 4MB на их домашний каталог через 5 дней. Вы можете установить это значение в 0 дней (по умолчанию) для любого отрезка времени.

Редактируем значение по умолчанию параметра "период любезности" (grace period), используя следующую команду:
edquota -t
Вывод программы:
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hda2: block grace period: 0 days, file grace period: 0 days

Модифицируем период любезности (grace period) до 5 дней:
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hda2: block grace period: 5 days, file grace period: 5 days
Замечание. Команда edquota
-t редактирует параметр soft time limits для каждой файловой системы с включенными квотами.

Назначение квот для отдельных групп
Предположим, например, что у вас есть группа с именем webusers. Используем следующую команду для редактирования квот для группы webusers на каждой файловой системе, где квоты разрешены:
edquota -g webusers
Вывод программы:
Quotas for group webusers:
/dev/hda2: blocks in use: 6, limits (soft = 0, hard = 0)
inodes in use: 6, limits (soft = 0, hard = 0)
Процедура такая же, как и при назначении квот для пользователей; как описано выше, вы должны модифицировать параметр soft = и записать изменения.

Назначение квот для групп пользователей с теми же значениями
Программа edquota имеет специальную опцию (-p), которая назначает квоты для групп пользователей с некоторым значением, назначенным при инициализации пользователя. Допустим, вы хотите назначить пользователям, UID'ы которых начинаются с 500, то же значение, что и для пользователя us1. Сперва мы редактируем квоты для пользователя us1, а затем выполняем следующую команду:
edquota -p us1 'awk -F: '$3 > 499 {print $1}' /etc/passwd'
Программа edquota будет дуплицировать квоты, которые установлены для пользователя us1, на всех пользователей с UID больше 499 из файла /etc/passwd.

И последнее. Ниже приведены команды, которые часто используются в работе с квотами.
Quota — выводит информацию об использовании диска и ограничениях на файловой системе. Для получения информации об использовании диска и ограничениях пользователя us1 используйте команду:
quota -u us1
Для получения информации о групповых квотах группы, членом которой является пользователь, используйте команду:
quota -g us1
Замечание. Если групповые квоты не установлены для заданного пользователя, вы получите следующее сообщение:
Disk quotas for group us1 (gid 555): none
Repquota — создает полную информацию об использовании дискового пространства и квотах на заданной файловой системе. Также она печатает для каждого пользователя текущее количество файлов и объем используемого дискового пространства (в килобайтах).

X-Stranger
linux@hitech.by



Компьютерная газета. Статья была опубликована в номере 34 за 2002 год в рубрике soft :: linux

©1997-2024 Компьютерная газета