Активация пользовательских и групповых квот

Вступление

Данное руководство подразумевает наличие сервера с учетными записями пользователей. Обычно пользовательские квоты применяются к пользователям FTP или SFTP, но их можно применить ко многим пользователям системы. Имейте в виду, для виртуальных пользователей VSFTP квоты не устанавливаются – пользователь должен существовать в системе!

При помощи квот ограничивается объем дискового пространства, которое может занимать отдельный пользователь или группа. В целом, существует два способа управления квотами: во-первых, можно создать и смонтировать пустой файл для отдельного пользователя. Преимущество такого подхода состоит в том, что для этого не нужны дополнительные пакеты. Во-вторых, можно использовать инструмент квотирования для динамического управления квотами дискового пространства пользователя или группы. Большим преимуществом данного способа является возможность быстрого изменения размера квоты без сложной процедуры изменения размера диска.

Данное руководство сфокусировано на создании пользовательских квот; хотя, все описанные ниже команды применимы и для создания групповых квот, но с одной небольшой поправкой: вместо имени пользователя в команде нужно указать имя группы.

Установка квоты

Для начала нужно установить программу для квотирования при помощи команды:

apt-get install quota

Прежде чем активировать пользовательские квоты, нужно отредактировать параметры монтирования файловой системы. Нужно открыть для редактирования файл монтирования fstab с помощью следующей команды:

sudo nano /etc/fstab

Для активации квот нужно внести usrquota и/или grpquota в параметры монтирования главного жесткого диска. Опция ursquota устанавливает квоты только для определенных пользователей. Опция grpquota позволяет установить квоты для группы пользователей.
Обе опции можно использовать отдельно в зависимости от желаемого результата. Для активации пользовательских квот файл fstab нужно отредактировать так, как показано ниже (для активации групповых квот используйте grpquota):

LABEL=DOROOT / ext4 errors=remount-ro,usrquota 0 1

Сохраните файл и введите в действие новые параметры монтирования, повторно монтируя файловую систему следующим образом:

mount -o remount /

Следующая команда создаст новый файл квоты в root-каталоге файловой системы. Этот индексный файл используется инструментом квотирования для отслеживания размера диска пользователя. Он также содержит лимиты и настроенные параметры пользователей.

quotacheck -cum /

Данная команда состоит из следующих трех параметров:

  1. Параметр «c» указывает на создание нового файл с перезаписью всех предыдущих файлов.
  2. Параметр «u» указывает на создание нового индексного файла пользователя. Чтобы создать индексный файл группы, внесите в данную команду параметр «g».
  3. Параметр «m» указывает, что для создания различных индексных файлов не нужно выполнять монтирование только для чтения всей файловой системы.

Поскольку был использован параметр «m», есть возможность небольшого несоответствия реального размера диска определенного пользователя размеру, вычисленному программой для квотирования. Убедитесь, что при выполнении предыдущей команды ни один пользователь не загружал файлы на сервер, чтобы минимизировать возможное несоответствие.

Следующая команда сообщает системе, что в необходимой файловой системе нужно активировать дисковые квоты.

quotaon /

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

quotaoff

Настройка квот для разных пользователей

Пользовательские квоты настраиваются при помощи команды edquota, после которой указывается имя пользователя (или группы). Данная команда открывает установленный по умолчанию текстовый редактор. Для примера можно настроить квоту в 10Mb для пользователя по имени ftpuser. Для этого нужно набрать:

edquota ftpuser

что открывает для редактирования файл квоты:

Disk quotas for user ftpuser (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/disk/by-label/DOROOT 8 10000 10240 2 0 0

Текстовый редактор выведет 7 столбцов:

  1. Указывает имя файловой системы, в которой активирована квота.
  2. Указывает количество блоков, занятых пользователем в настоящее время.
  3. Определяет soft block limit для пользователя в файловой системе.
  4. Указывает hard block limit для пользователя в файловой системе.
  5. Определяет количество инодов, которые пользователь занимает в настоящее время.
  6. Указывает soft inode limit для пользователя в файловой системе.
  7. Определяет hard inode limit для пользователя в файловой системе.

Блоки (block) относятся к объему дискового пространства, в то время как иноды (inode) относятся к количеству файлов/папок, которые могут быть использованы. Чаще всего для квот используется количество блоков.

Hard block limit определяет абсолютный максимум дискового пространства, которое может занимать пользователь или группа. Когда этот предел достигнут, дисковое пространство не может быть использовано.

Soft block limit определяет максимальный объем дискового пространства, который можно использовать. Однако в отличие от hard limit, этот предел может быть превышен в течение определенного периода времени. Такой период называется льготным. Более подробно льготный период будет описан в данном руководстве немного далее.

В приведенном выше примере используются значения soft limit – 9,785Mb, hard limit – 10Mb. Чтобы проверить действие квоты, можно запустить передачу FTP/SFTP и загрузить несколько файлов общим объемом, к примеру, 12Mb (то есть, нужно превысить лимит). Клиент FTP/SFTP укажет на ошибку передачи, а это означает, что пользователь не может загружать такой объем файлов. Конечно, устанавливать квоту в 10Mb нет никакого смысла. В данном руководстве каждый пользователь получает soft limit в 976 Mb и hard limit в 1Gb. Конфигурации выглядят так:

Disk quotas for user ftpuser (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/disk/by-label/DOROOT 8 1000000 1048576 2 0 0

Чтобы проверить квоту отдельного пользователя, используйте команду quota, указав после нее имя пользователя/группы.

quota ftpuser

Она выведет следующий результат:

Disk quotas for user ftpuser (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/disk/by-label/DOROOT 8 1000000 1048576 2 0 0

Создание отчетов

Из разных квот можно создавать отчеты. Для этого используется следующая команда:

repquota -a

Она выводит следующий результат:

*** Report for user quotas on device /dev/disk/by-label/DOROOT
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
------------------------------------------------------------------------------------
root -- 1118708 0 0 37093 0 0
daemon -- 68 0 0 4 0 0
man -- 9568 0 0 139 0 0
www-data -- 2908 0 0 15 0 0
nobody -- 0 0 0 1 0 0
libuuid -- 24 0 0 2 0 0
Debian-exim -- 44 0 0 10 0 0
mysql -- 30116 0 0 141 0 0
ftpuser -- 8 1000000 1048576 2 0 0

Определение льготного периода (дополнительно)

При необходимости дать пользователям некоторое время, чтобы сократить объем файлов на сервере, нужно установить льготный период. В течение этого времени пользователь может превышать soft limit, оставаясь теперь в пределах hard limit. Льготный период (Grace period) устанавливается при помощи следующей команды (имейте в виду, она общесистемная; ее невозможно применить для одного пользователя). Льготный период выражается в секундах, минутах, часах, днях или месяцах.

edquota -t

Данная команда выводит следующий результат и указывает разные единицы времени, которые можно использовать. Для примера можно установить семидневный льготный период.

Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/disk/by-label/DOROOT 7days 7days

Итоги

Квоты будут автоматически обновляться и выполняться, когда пользователь передает/создает/перемещает/удаляет файлы или папки. Имейте в виду, работа программы для квотирования напрямую связана с владельцем или группой конкретного файла/папки. Пользователи SSH могут обойти квоту, изменив владельца или группу их файлов.

Tags: , ,

Добавить комментарий