Назад Оглавление Вперед

Глава 13 Программы обеспечения безопасности (Управление и ограничения) - Квоты

В этой главе
Linux GnuPG
Команды
Установка поддержки квот на вашей Linux системе.
Создание ядра с поддержкой квот
Модификация файла "/etc/fstab"
Создание файлов "quota.user" и "quota.group"
Назначение квот для Пользователей и групп
Команды

Установка поддержки квот на вашей Linux системе.

Краткий обзор.

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

Создание ядра с поддержкой квот

Первое, что вам необходимо сделать, это создать ядро с поддержкой квот. В ядре 2.2.14 надо удостовериться, что вы ответили "Y" на вопрос:

Filesystems
Quota support (CONFIG_QUOTA) [N/y/?] Y

ЗАМЕЧАНИЕ. Если при компиляции ядра вы руководствовались соответствующей главой из этой книги, то поддержка квот у вас включена.

Модификация файла "/etc/fstab"

Файл "/etc/fstab" содержит информацию обо всех файловых системах, инсталлированных на вашем Linux сервере. Квоты должны быть включены в нем, чтобы их можно было использовать. Так как квоты должны быть определены для каждой файловой системы независимо и каждая файловая система описывается в файле "/etc/fstab" в отдельной строке, то квота должна быть установлена для каждой строки, где вы хотите включить их поддержку. Используя прорамму квота, в зависимости от ваших нужд, вы можете включить квоты только для групп, пользователей или и тех и других одновременно. Для всех нижеприведенных примеров, мы используем каталог "/home", размещенный на разделе "/dev/sda6".

Возможность 1.

Для включения квот для пользователей на определенной файловой системы, отредактируйте ваш "/etc/fstab" файл (vi /etc/fstab) и добавьте опцию "usrquota" в четвертое поле после слова "defaults" или любой другой опции.

Например:

/dev/sda6 /home ext2 defaults 1 2 (как пример: слово "defaults")
/dev/sda6 /home ext2 nosuid,nodev 1 2 (как пример: любая другая опция)

Должен читаться:

/dev/sda6 /home ext2 defaults,usrquota 1 2
/dev/sda6 /home ext2 nosuid,nodev,usrquota 1 2

Возможность 2.

Для включения квот для групп на определенной файловой системы, отредактируйте ваш "/etc/fstab" файл (vi /etc/fstab) и добавьте опцию "grpquota" в четвертое поле после слова "defaults" или любой другой опции.

Например:

/dev/sda6 /home ext2 defaults 1 2 (как пример: слово "defaults")
/dev/sda6 /home ext2 nosuid,nodev 1 2 (как пример: любая другая опция)

Должен читаться:

/dev/sda6 /home ext2 defaults,grpquota 1 2
/dev/sda6 /home ext2 nosuid,nodev,grpquota 1 2
Возможность 3.

Для включения квот для пользователей и групп на определенной файловой системы, отредактируйте ваш "/etc/fstab" файл (vi /etc/fstab) и добавьте опции "usrquota, grpquota" в четвертое поле после слова "defaults" или любой другой опции.

Например:

/dev/sda6 /home ext2 defaults 1 2 (как пример: слово "defaults")
/dev/sda6 /home ext2 nosuid,nodev 1 2 (как пример: любая другая опция)

Должен читаться:

/dev/sda6 /home ext2 defaults,usrquota,grpquota 1 2
/dev/sda6 /home ext2 nosuid,nodev,usrquota,grpquota 1 2

Создание файлов "quota.user" и "quota.group"

После модификации файла "/tc/fstab", чтобы квоты начали действовать, в корневой каталог файловой системы (например, "/home") помещается файл "quota.user", если вы хотите использовать пользовательские квоты, или "quota.group", для групповых квот, или и тот и другой для комбинированных квот. Владельцем обоих файлов является "root".

Шаг 1.

Для создания файлов "quota.user" и/или "quota.group", как "root" перейдите в корневой каталог раздела, где вы хотите активизировать квоты (например, /home), создайте "quota.user" и/или "quota.group", для этого выполните следующие команды:

[root@deep /]# touch /home/quota.user
[root@deep /]# touch /home/quota.group
[root@deep /]# chmod 600 /home/quota.user
[root@deep /]# chmod 600 /home/quota.group

Команда "touch" будет создавать новые пустые файлы в каталоге "home" с именами "quota.user" и "quota.group". Команда "chmod" будет устанавливать права доступа к этим файлам в чтение-запись только для root.

ЗАМЕЧАНИЕ. Оба файла "quota.user" и "quota.group", должны принадлежать root, с правами чтение-запись только для владельца.

Шаг 2

Сейчас мы должны инициализировать файлы "quota.user" и "quota.group" в корневом каталоге файловой системы, чтобы не получать сообщений об ошибках о квотах во время перезагрузки сервера.

Для инициализации файлов "quota.user" и/или "quota.group", используйте следующие команды:

[root@deep /]# edquota -u wahib
[root@deep /]# edquota -g wahib

Вышеприведенные команды необходимы только для инициализации файлов "quota.user" и/или "quota.group"; команда edquota (-u) будет редактировать квоты для пользователя "wahib" и (-g) будет редактировать квоты для группы. Заметим, что вы должны редактировать существующие в вашей системе UID/GID, чтобы инициализация файлов прошла успешно.

Шаг 3

После того как вы закончили устанавливать необходимые опции в файле "/etc/fstab", создали и инициализировали файлы "quota.users" и/или "quota.group", вы должны перезагрузить систему, чтобы внесенные изменения в файлы "/etc/fstab", "quota.user" и/или "quota.group" вступили в силу. Для перезагрузки системы используйте следующую команду:

[root@deep /]# reboot

Назначение квот для Пользователей и групп

После того, как система перезагрузилась, вы можете назначить квоты пользователям и группам пользователей. Это операция осуществляется при помощи команды "edquota". edquota (8).

Программа edquota.

Edquota - это редактор квот, который создает временный файл с текущими дисковыми квотами, используемый пользователем "root" для их установки для пользователей и групп пользователей. Нижеприведенный пример покажет как установить квоты для пользователя и группы пользователей.

Установка квоты для пользователя.

Предположим, для примера, что у вас есть пользователь с именем "wahib". Следующая команда вызывает редактор (vi), чтобы изменить и установить квоты для пользователя "wahib" на каждый раздел, где включены квоты:

Шаг 1

Для редактирования и можификации квот для пользователя "wahib" используйте следующую команду:

[root@deep /]# edquota -u wahib
Quotas for user wahib:
/dev/sda6: blocks in use: 6, limits (soft = 0, hard = 0)
    inodes in use: 5, limits (soft = 0, hard = 0)

После выполнения этой команды, вы увидите на экране строки связанные с пользователем "wahib". "blocks in use:" отображает общее число блоков (в килобайтах) расходуемых пользователем на разделе. "inodes in use:" отображает общее число файлов, которое имеет пользователь на разделе. Эти параметры ("blocks in use, and inodes in use") контролируются и устанавливаются автоматически системой и вы не можете установить или изменить их.

Шаг 2

Назначим 5MB квоту для пользователя "wahib", изменив следующие параметры в редакторе vi:

Quotas for user wahib:
/dev/sda6: blocks in use: 6, limits (soft = 0, hard = 0)
    inodes in use: 5, limits (soft = 0, hard = 0)

Должна читаться:

Quotas for user wahib:
/dev/sda6: blocks in use: 6, limits (soft = 5000, hard = 0)
    inodes in use: 5, limits (soft = 0, hard = 0)

"soft limit" (soft =) определяет максимальное количество дискового пространства, которое пользователь может иметь.
"hard limit" (hard =) определяет абсолютное ограничение использования пользоватлем дискового пространства. Пользователь не может превзойти его. Следует заметить, что "hard limit" работает только когда установлен параметр "grace period".

Параметр grace period

Параметр "grace period" позволяет вам установить время, прежде чем значение soft limit будет приведено в жизнь на файловой системе с включенными квотами. Например этот параметр может быть использован для предупреждения ваших пользователей о новой политике, которая установит дисковую квоту в 5MB на их домашний каталог через 7 дней. Вы можете установить это значение в 0 дней (по умолчанию) для любого отрезка времени. Чтобы изменить это требуется два следующих шага (в моем примере я принимаю 7 дней).

Шаг 1

Редактируем значение по умолчанию параметра период любезности (grace period), используя следующую команду:

[root@deep /]# edquota -t
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/sda6: block grace period: 0 days, file grace period: 0 days
Шаг 2

Модифицируем период любезности (grace period) до 7 дней. Измените или установите следующие параметры в редакторе vi:

Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/sda6: block grace period: 0 days, file grace period: 0 days

Должно читаться:

Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/sda6: block grace period: 7 days, file grace period: 7 days

Замечание. Команда "edquota -t" редактирует параметр soft time limits для каждой файловой системы с включенными квотами.

Назначение квот для отдельных групп

Предположим, например, что у вас есть группа с именем "webusers". Следующая команда вызовет редактор vi для редактирования квот для группы "webusers" на каждой файловой системе, где квоты разрешены.:

[root@deep /]# edquota -g webusers
Quotas for group webusers:
/dev/sda6: blocks in use: 6, limits (soft = 0, hard = 0)
    inodes in use: 6, limits (soft = 0, hard = 0)

Процедура такая же как и при назначении квот для пользователей; как описано выше, вы должны модифицировать параметр "soft =" и записать изменения.

Назначение квот для групп пользователей с теми же значениями

Программа edquota имеет специальную опцию (-p), которая назначает квоты для групп пользователей с некоторым значением назначенным при инициализации пользователя. Допустим, вы хотите назначить пользователям UID-ы которых начинаются с 500 то же значение, что и для пользователя "wahib". Сперва, мы редактируем квоты для пользователя "wahib", а затем выполняем следующую команду:

[root@deep /]# edquota -p wahib `awk -F: '$3 > 499 {print $1}' /etc/passwd`

Программа edquota будет дуплицировать квоты, которые установлены для пользователя "wahib", на всех пользователей с UID больше 499 из файла "/etc/passwd"

Дополнительная документация.

Чтобы получить больше информации, читайте следующие страницы руководства:

$ man edquota (8) - редактирование пользовательских квот
$ man quota (1) - вывод информации об использовании диска и ограничениях
$ man quotacheck (8) - сканирование файловой системы о использовании диска
$ man quotactl (2) - манипулирование дисковыми квотами
$ man quotaon, quotaoff (8) - включение или выключение квот на файловой системе
$ man repquota (8) - суммирование квот на файловой системе
$ man rquota (3) - осуществление квот на удаленной машине

Команды

Ниже приведены команды из тех, что мы часто используем в регулярной работе, но из существует много больше. Читайте страницы руководства (man) для получения большей информации.

Quota

Quota выводит информацию об использовании диска и ограничениях на файловой системе.

Для получения информации об использовании диска и ограничениях пользователя wahib используйте команду:

[root@deep /]# quota -u wahib Disk quotas for user wahib (uid 501): Filesystem blocks quota limit grace files quota limit grace /dev/sda6 6001* 6000 0 none 7 0 0

Для получения информации о групповых квотах группы, членом которой является пользователь используйте команду:

[root@deep /]# quota -g wahib Disk quotas for group wahib (gid 501): Filesystem blocks quota limit grace files quota limit grace /dev/sda6 5995* 5000 0 none 1 0 0

ЗАМЕЧАНИЕ. Если групповые квоты не установлены для заданного пользователя, вы получите следующее сообщение:
Disk quotas for group wahib (gid 501): none

Repquota

Repquota создает полную информацию об использовании дискового пространства и квотах на заданной файловой системе. Также она печатает для каждого пользователя текущее количество файлов и объем используемого дискового пространства (в килобайтах).

Здесь приведен пример информации полученной от команды repquota:

[root@deep /]# repquota -a Block limits File limits User used soft hard grace used soft hard grace Roo -- 21 0 0 4 0 0 Named -- 6 0 0 5 0 0 Admin -- 388657 0 0 21 21 0 0 Wahib -- 6001 0 0 7 0 0 Block limits File limits User used soft hard grace used soft hard grace root -- 21 0 0 4 0 0 named -- 6 0 0 5 0 0 admin -- 388657 0 0 2121 0 0 wahib -- 6001 6000 0 none 7 0 0
Назад Оглавление Вперед