Автор: Уваров А.С. — СО СКРИНАМИ У АВТОРА
Не так давно мы рассказывали о возможностях файловых служб Windows Server. Безусловно, наиболее востребованы дисковые квоты, которые позволяют гибко контролировать использование дискового пространства и не допускать его нецелевого использования. Сегодня мы поговорим о настройке квот для файловых серверов на базе Ubuntu Server и Samba.
Дисковые квоты в Linux системах реализуются при помощи специальной утилиты quota, которая работает на уровне раздела и позволяет устанавливать квоты пользователям и группам. Возможности установить квоту для отдельного общего ресурса нет, также существуют ограничения по используемым файловым системам, например не поддерживается XFS, которая имеет свои инструменты для квотирования. Поэтому если вы настраивали файловый сервер по нашей инструкции, то вам потребуется изменить файловую систему на разделе с данными или обратиться к документации по xfs_quota.
В нашем случае использовался файловый сервер, настроенный по вышеуказанной инструкции, однако с использованием на разделе /data файловой системы ext4. Все действия следует выполнять с правами суперпользователя или с помощью sudo.
Следует помнить, что при гостевой модели доступа квоты не применяются, поэтому нужно изменить настройки samba, чтобы пользователи получали доступ к общим ресурсам только после авторизации на сервере. Для этого в глобальной секции изменим параметр:
[global]
security = USER
Теперь создадим общий ресурс:
[Users]
path = /data/USERS
read only = No
Подразумевается, что папка USERS уже создана и на нее выставлены права 777. Перейдем к списку пользователей. Сначала создадим группу, в нашем случае smbuser:
groupadd smbuser
Создадим пользователей и сразу установим им основной только что созданную группу:
useradd -g smbuser sidorov
Установим им пароли к системе и samba, учтите, что пароли должны совпадать, иначе вы не сможете получить доступ к SMB ресурсам:
passwd sidorov
smbpasswd -a sidorov
Перезапустим sambа и проверим, что все работает:
service smbd restart
Чтобы убедиться, что раздел смонтирован с поддержкой квот, выполним команду
mount
Если все сделано правильно, вы увидите примерно следующее:
Теперь установим пакет quota:
apt-get install quota
Чтобы использовать квоты, нужно смонтировать соответствующий раздел с их применением. Откроем /etc/fstab найдем строку отвечающую за монтирование раздела /data и добавим опции для включения квот, строка будет иметь примерно следующий вид:
UUID=bdf379fc-627d-49e6-9153-a2cb571a6ee1 /data ext4 defaults,usrquota,grpquota 0 2
UUID — уникальный идентификатор раздела и, в вашем случае, будет иметь иное значение. За включение квот отвечают опции usrquota и grpquota, их назначение понятно из названий, также вы можете применить к разделу только один вид квот, указав только одну опцию. Чтобы изменения вступили в силу перезагрузим сервер.
В корне раздела, к которому применяем квоты, создадим два файла для хранения записей квот и установим необходимые права доступа к ним:
touch /data/aquota.user
touch /data/aquota.group
chmod 600 /data/aquota.user
chmod 600 /data/aquota.group
Теперь перечитаем значения квот командой:
quotacheck -avug -f
Данная команда проверит файловую систему пересчитает и заново установит квоты, это необходимо сделать для того, чтобы учесть данные уже записанные пользователями на сервер.
Для установки квот используется команда edquota, размер квоты можно выставить в количестве блоков или количестве файлов, чтобы рассчитать количество блоков нужно необходимый размер квоты в МБ умножить на 1024. Квота также может быть двух видов: мягкая и жесткая. Мягкая квота позволяет использовать пространство сверх квоты в течении некоторого времени (по умолчанию 7 дней), после чего мягкая квота становится жесткой, жесткая квота не может быть превышена ни при каких обстоятельствах.
Установим группе smbuser жесткую квоту в размере 200 МБ (204800 блоков):
edquota -g smbuser
Откроется редактор nano с файлом следующего вида:
Вносим в него необходимые значения и сохраняем, квоты вступают в действие сразу. Для установки квот пользователям используется следующий синтаксис:
edquota -u sidorov
Для изменения времени, по истечении которого мягкая квота становится жесткой, используйте:
edquota -t
Самое время проверить как это работает:
Просмотреть состояние дисковых квот можно командой:
repquota -ug /data
Ключи u и g указывают, что необходимо вывести отчет как по пользователям, так и по группам, в итоге вы должны увидеть следующее:
Все это хорошо, но если пользователей (групп) много, то ручная установка квот для них может стать трудоемкой задачей. Более оптимально будет настроить квоты для одного пользователя, а потом скопировать эти настройки остальным, для этого создадим прототип:
edquota -u sidorov
Теперь мы можем применить настройки прототипа (пользователь sidorov) к другому пользователю командой:
edquota -p sidorov vasilev
Данная возможность удобна еще и тем, что вам не нужно вспоминать, какие именно квоты установлены для того или иного пользователя или группы, создав нового пользователя вы просто и быстро можете применить к нему квоты "как у Сидорова".