L  i  n  u  x    P  a  r  k
при поддержке ВебКлуба
Назад Оглавление Вперед

Глава 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

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