- quota или как ограничить размер папки
- Re: quota или как ограничить размер папки
- Re: quota или как ограничить размер папки
- Re: quota или как ограничить размер папки
- Re: quota или как ограничить размер папки
- Re: quota или как ограничить размер папки
- Re: quota или как ограничить размер папки
- Re: quota или как ограничить размер папки
- LINUX — Жизнь в консоли ЕСТЬ.
- Главное меню
- Последние статьи
- Счетчики
- Ограничение размера расшаренной папки.
- Настройка дисковых квот в Linux
- Установка пакета quota
- Настройка раздела
- Корневая директория (/) + XFS
- Включение квот
- Ext и другие
- Установка квот
- Квоты пользователей
- Квоты для групп
- Копирование квот
- Настройка периода отсрочки
- Просмотр и проверка квот
- Отчет по квотам
- Проверка
- Другие квоты
- Квота на директорию
- Квоты в samba
- Квоты в vsftpd
quota или как ограничить размер папки
Всем заранее спасибо за участие! Вопрос таков: Необходимо ограничить размер общей папки, сейчас это реализуется разбиеним на партиции, но хотелось бы решить это проще. Квота ставиться на юзеров и группы. Если юзер входит в несколько групп, сколько он запишет в папку? Как сумма всех квот на группы в которые он входит? Как разрешить такую ситуацию, может кто знает?
Re: quota или как ограничить размер папки
А поставь квоту на юзера.
Re: quota или как ограничить размер папки
Но в папку может писать много юзеров. Если даже каждому поставить квоту, то в папку они запишут суммарный объем. А надо, чтобы размер папки был ограничен.
Re: quota или как ограничить размер папки
Создается группа тех, кто пишет в эту папку и право на запись дается только этой группе. То есть просто chown root.gruppa10 papka. И квоту на группу gruppa10 и все ok, при условии что root туда не начнет писать.
Re: quota или как ограничить размер папки
А если пользователь входит в другие группы (а так всегда и есть), на которые тоже есть свои квоты, как будет считаться общий размер квоты, записываемый этим пользователем. Или, если квота считается как сумма файлов, имеющих группу, на которую она установлена, то тогда надо чтобы все файлы в этой папке создавались именно с этой группой, но это ведь не так. А интересно, как вообще квота считается?
Re: quota или как ограничить размер папки
Есть еще папки куда может писать эта GRUPPA10? Если есть — будет считаться все, тогда вопрос решается опять же созданием НОВОЙ группы, которая может писать ТОЛЬКО В ЭТУ ПАПКУ. Тогда получается — квота на группу скажем GRUPPA876 и писать она может только в одну папку — не ошибешься.
Re: quota или как ограничить размер папки
Все же не совсем понятно. Пусть я создал группу 10 и папку share.В папку share могут писать только члены группы 10. Ставлю квоту на группу. Но если хотя бы один из членов группы 10 входит в другую группу 20 (а так и есть), на которую есть своя квота, то он сможет записать в папку share файл размером = квота 10 + квота 20. Если же его не включить в группу 20, то он не сможет уже никуда записать, если закончится квота группы 10.
Re: quota или как ограничить размер папки
Нет. Группа 20 не имеет права на запись в папку share. Туда буду писаться файлы только принадлежащие группе 10 пока не исчерпают ее квоту.
Источник
LINUX — Жизнь в консоли ЕСТЬ.
Главное меню
Последние статьи
Счетчики
Ограничение размера расшаренной папки.
Я знаю два способа:
1) Использовать пакет Quota. С помощью этого пакета можно задать квоту на дисковое пространство на разделе, для пользователя и для группы пользователей. Минус: задать отдельные квоты на дирректории, расположенные на одном разделе нельзя (или я пока незнаю как).
2) Создать файл необходимого размера, отформатировать его, и смонтировать в расшаренную папку. Тем самым получаем каталог ограниченного размера. Минус: если это каталог для нескольких пользователей пользователей, то один пользователь может занять все пространство, предназначенное для группы.
Избавиться от этих минусов можно комбинируя эти два способа. Алгоритм действий такой:
1) Создаем файлы для групп
2) Форматируем их
3) Монтируем файлы в соответствующие папки
4) Включаем квоты для пользователей на созданных файлах-разделах используя Quota
Тем самым на одном разделе можно создать несколько каталогов различного фиксированного объема и на каждый каталог задать различные квоты для пользователей.
Создадим два каталога, к примеру: для документов и «помойка» для остального хлама.
sudo mkdir /home/doc
sudo mkdir /home/other
Даем права на папки(например 770 — полный доступ владельцу и группе, остальным доступа нет):
sudo chmod 770 /home/doc
sudo chmod 770 /home/other
Создаем папку, где будут храниться «форматированные файлы-разделы» :
sudo mkdir /home/fs
В данном примере создаем файл, содержащий 10485760 блоков размером по 1024байт = 10ГБ для документов (при необходимости размер изменяем на нужный меняя count):
sudo dd if=/dev/zero of=/home/fs/doc.fs bs=1024 count=10485760
И для остального к примеру 20ГБ:
sudo dd if=/dev/zero of=/home/fs/other.fs bs=1024 count=20971520
Даем права на созданные файлы:
sudo chmod 770 /home/fs/doc.fs
sudo chmod 770 /home/fs/other.fs
Меняем группу, которой принадлежат файлы. Допустим что пользователи, которым нужен доступ в создаваемые дирректории, входят в группу «smbusers», тогда:
sudo chgrp smbusers /home/fs/doc.fs
sudo chgrp smbusers /home/fs/other.fs
Форматируем файлы в ext3:
sudo mkfs.ext3 /home/fs/doc.fs
sudo mkfs.ext3 /home/fs/other.fs
Монтируем в созданные нами папки:
sudo mount -t ext3 -o loop /home/fs/doc.fs /home/doc
sudo mount -t ext3 -o loop /home/fs/other.fs /home/other
для автоматического монтирования при загрузке в /etc/fstab добавляем:
/home/fs/doc.fs /home/doc auto auto,loop 0 0
/home/fs/other.fs /home/other auto auto,loop 0 0
Теперь нам надо установить квоты для юзверей на дисковое пространство. Ставим пакет quota:
sudo apt-get install quota
Редактируем файл /etc/fstab, добавляем «usrquota» в раздел, на который устанавливаем ограничение для пользователей:
sudo nano /etc/fstab
/home/fs/doc.fs /home/doc auto auto,loop,usrquota 0 0
/home/fs/other.fs /home/other auto auto,loop,usrquota 0 0
По умолчанию файлы квот хранятся в корневом каталоге файловой системы в файлах с именами aquota.user и aquota.group соответственно для пользовательских и групповых квот.
Этой командой создадим файлы:
quotacheck /home/doc
quotacheck /home/other
Если будет ругаться — пробуем запускать с ключем -m или -f .
sudo edquota -u petrov_ia
после этой команды откроется текстовый редактор, в которым указываем ограничения для пользователя petrov_ia и сохраняем. Вы можете ограничивать размещение ресурсов на основе объема дискового пространства (квотирование блоков), количества файлов (квотирование inode) или их комбинации. Каждое из этих ограничений, в свою очередь, делится на две категории: мягкие (soft) и жёсткие (hard) ограничения. Жёсткое ограничение не может быть превышено. мягкие ограничения могут быть превышены в течении некоторого периода времени. Если пользователь превышает своё мягкое ограничение в течение периода времени, превышающего отсрочку, то это мягкое ограничение становится жестким и последующее выделение ресурсов будет запрещено.
Например поставим ограничения: по объему – 1000 Мбайт, по количеству – 1000 файлов. Добавляя 10% запаса на жесткие пределы для раздела doc. И в 2 раза больше для other:
Disk quotas for user petrov_ia (uid 1005):
Filesystem blocks soft hard inodes soft hard
/dev/loop0 7 1024000 1126400 4 1000 1100
/dev/loop1 7 2048000 2252800 4 2000 2200
Размер указывается не в КБ, это число блоков. Но при создании файла с помощью команды dd мы указывали размер блока bs=1024, поэтому в данном случае размер 1 блока = 1 КБ.
Параметры blocks и inodes изменять бессмысленно, они ставятся автоматически.
Параметр «grace period» позволяет вам установить время, прежде чем значение soft limit будет приведено в жизнь на файловой системе с включенными квотами:
sudo 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/loop0 7days 7days
Проверяем установленные квоты:
sudo repquota /home/doc
sudo repquota /home/other
Теперь размеры расшаренных дирректорий у нас жестко ограничены.
После этого я задался вопросом: как менять размер? Перекидывать все файлы из папки в другое место, удалять файл, созданный с помощью dd, создавать заново с нужным размером, и перемещать на него сохраненные файлы не есть гуд. Далее рассмотрим сочиненный мною скрипт, при запуске которого только выбираем папку, размер которой надо изменить и указываем новый размер. Изменения размера проводятся без перемещения файлов, имеющихся в этой папке, поэтому не стоит делать размер меньше чем занято места на нем (информация о том сколько занято выводится при запуске скрипта). Скрипт конечно же запускаем из под рута (sudo ./quota.sh). Скрипт создавался для контроллера домена, статья по настройке PDC : http://linux-bash.ru/mseti/48-pdc.html .
sudo touch quota.sh
sudo chmod +x quota.sh
Открываем для редактирования:
sudo nano quota.sh
#!/bin/bash
echo «—————————» # указываем имена папок
echo «o_it: 1» # список выводится при запуске скрипта
echo «o_prodag: 2»
echo «o_buh: 3»
echo «o_logist: 4»
echo «o_administraciya: 5»
echo «share : 6»
echo -e «Введите № раздела: \c «
read fs
# Исходя из выбора пользователя скрипт определяет какой раздел нужно менять
case $fs in
1) fs=o_it;;
2) fs=o_prodag;;
3) fs=o_buh;;
4) fs=o_logist;;
5) fs=o_administraciya;;
6) fs=share;;
esac
echo «Выполняется проверка раздела. «
# Получаем информацию о размере папки, и сколько занято.
tune2fs -l /home/fs/$fs.fs | grep «Block count»
tune2fs -l /home/fs/$fs.fs | grep «Block size»
tune2fs -l /home/fs/$fs.fs | grep «Free blocks»
bsize=`tune2fs -l /home/fs/$fs.fs | grep «Block size» | cut -d ‘:’ -f2`
# размер блока файловой системы
bcount=`tune2fs -l /home/fs/$fs.fs | grep «Block count» | cut -d ‘:’ -f2`
# число блоков
fcount=`tune2fs -l /home/fs/$fs.fs | grep «Free blocks» | cut -d ‘:’ -f2`
# число свободных блоков
size=`expr $bcount \* $bsize`
x=$size
busy=`expr $fcount \* $bsize`
busy=`expr $size — $busy`
echo «Занято на диске:»
busy=`expr $busy / 1048576`
# занято на диске в мегабайтах
echo «$busy MB»
echo «Общий размер диска:»
size=`expr $size / 1048576`
# общий размер диска в мегабайтах
echo «$size MB»
echo -e «Введите размер раздела(MB):\c «
read size
size=`expr $size \* 1048576`
# переводим размер в байты
sizefs=`expr $size / $bsize`
# получаем количество блоков для изменения файловой системы
ddcount=`expr $size / 1024`
# получаем кол-во блоков для изменения размера файловой системы
if [ $x -lt $size ]; # если нужно увеличить размер
then
echo «Размонтируется раздел. «
umount /home/$fs
echo «Увеличение раздела. «
dd if=/dev/zero of=/home/fs/$fs.fs bs=1024 count=$ddcount conv=notrunc oflag=append
# изменяем размер файла. Файл будет иметь ddcount блоков по 1024 байта каждый
echo «Проверка раздела. «
e2fsck -f /home/fs/$fs.fs
echo «Изменение файловой системы под новый размер. «
resize2fs /home/fs/$fs.fs $sizefs
# изменяем размер файловой системы, будет sizefs блоков по bsize байт каждый
echo «Монтирование раздела. «
mount -t ext3 -o loop /home/fs/$fs.fs /home/$fs
else # если нужно уменьшить раздел
echo «Размонтируется раздел. «
umount /home/$fs
echo «Проверка раздела. «
e2fsck -f /home/fs/$fs.fs
echo «Изменение файловой системы под новый размер. «
resize2fs /home/fs/$fs.fs $sizefs
# изменяем размер файловой системы, будет sizefs блоков по bsize байт каждый
echo «Уменьшение раздела. «
dd if=/dev/zero of=/home/fs/$fs.fs bs=1024 count=$ddcount conv=notrunc oflag=append
# изменяем размер файла. Файл будет иметь ddcount блоков по 1024 байта каждый
echo «Монтирование раздела. «
Источник
Настройка дисковых квот в Linux
Пошагово разберем процесс установки ограничений на использование дискового пространства в системах Linux. Какой дистрибутив — не важно. Процесс немного различается для файловых систем XFS и EXT4/остальных — мы разберем оба варианта.
Установка пакета quota
Установка пакета для управления квотами выполняется из репозитория.
а) для систем на базе RPM (Red Hat, CentOS):
yum install quota
б) для систем на базе deb (Debian, Ubuntu):
apt-get install quota
Настройка раздела
Для возможности управлять квотами для определенного раздела необходимо его смонтировать с соответствующими опциями. Для файловых систем XFS и не XFS (например, ext) эти опции различаются:
- Для XFS — uquota (для пользователей) и/или gquota (для групп).
- Для ext и других — usrquota (для пользователей)и/или grpquota (для групп).
И так, чтобы добавить нужные опции для включения квотирования, откроем файл fstab:
Находим настройку для монтирования раздела, на который необходимо установить квоту и добавим нужные опции:
/dev/sda / ext4 defaults ,usrquota,grpquota 0 0
/dev/sdb /var xfs defaults ,uquota,gquota 0 0
* в данном примере мы добавили опции usrquota и grpquota для устройства /dev/sda, примонтированного в качестве корневого раздела / с файловой системой ext. А также опции uquota и gquota для устройства /dev/sdb (монтируется в /var с файловой системой xfs). Если необходимо включить квоту только для пользователей или групп, оставляем соответствующие опции.
* существуют и другие опции, например, jqfmt нужна для указания формата квоты при использовании журналирования. Подробнее описано в таблице Опции системы квот в файле /etc/fstab сайта IBM.
Перемонтируем наши разделы:
mount -o remount /
mount -o remount /var
Проверим, что нужные нам разделы теперь смонтированы с опциями квотирования:
mount | grep quota
Мы увидим, примерно, следующее:
/dev/sda on / type ext4 (rw,relatime, quota,usrquota,grpquota ,data=ordered)
/dev/sdb on /var type xfs (rw,relatime,attr2,inode64, usrquota,grpquota )
Квоты включены для разделов.
Корневая директория (/) + XFS
При попытке включить квоту для корневой директории XFS с помощью файла fstab, результат будет нулевым — в опциях монтирования мы будем наблюдать noquota, например:
/dev/sda on / type xfs (rw,relatime,attr2,inode64, noquota )
Для включения опции квотирования необходимо отредактировать загрузчик. Для этого открываем файл:
Находим строку GRUB_CMDLINE_LINUX и дописываем в нее rootflags=uquota,gquota — в моем случае получилось так:
.
GRUB_CMDLINE_LINUX=»crashkernel=auto rd.lvm.lv=vg/root rd.lvm.lv=vg/swap rhgb quiet floppy.allowed_drive_mask=0 rootflags=uquota,gquota »
.
На всякий случай, сохраним конфигурационный файл загрузчика:
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.backup
. и применим настройки grub:
grub2-mkconfig -o /boot/grub2/grub.cfg
После перезагрузки мы должны наблюдать такую картину:
mount | grep quota
/dev/mapper/vg-root on / type xfs (rw,relatime,attr2,inode64, usrquota,grpquota )
Квоты включены для корневого раздела с файловой системой XFS.
Включение квот
И так, мы разрешили квоты для разделов. Теперь включаем квоты. Процессы для XFS и остальных файловых систем немного различаются. Мы рассмотрим оба варианта. Так как в нашем примере есть разделы для XFS и Ext, то мы выполним все варианты настроек.
После монтирования раздела с файловой системой XFS автоматически включается квотирование (если была задана соответствующая опция). Проверить состояние можно, войдя в режим экспертного управления квотами:
. и выполнив команду для получения статуса:
Ext и другие
Выполним проверку наличия служебных файлов aquota.user и aquota.group — если их нет, команда их создаст автоматически:
. при наличии разделов с включенной квотой на XFS мы можем увидеть:
quotacheck: Skipping /dev/sdb [/var]
* это нам говорит о том, что команда quotacheck пропускаем раздел с xfs.
Включаем квоту для разделов:
Установка квот
Пришло время задать квоты. Они устанавливаются с помощью команды edquota.
Квоты пользователей
Для пользователя, вводим команду:
edquota -u dmosk
* где dmosk — имя пользователя, для которого будет задана квота.
В открывшемся редакторе можно задать ограничение на использование разделов, для которых включена квота:
Disk quotas for user dmosk (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sda 20 0 10M 8 0 0
/dev/sdb 0 0 20M 0 0 0
- Filesystem — дисковое устройство, для которого устанавливается квота.
- blocks — текущее количество используемых пользователем блоков.
- первый soft — мягкая квота на объем данных (при ее превышении отправляется уведомление по почте, а после периода отсрочки, который по умолчанию составляет 7 дней, мягкая квота становится жесткой).
- первый hard — жесткая квота на объем данных (при ее превышении дальнейшая запись будет запрещена).
- inodes — текущее количество файлов, используемых пользователем.
- второй soft — мягкая квота на количество файлов (при ее превышении отправляется уведомление по почте).
- второй hard — жесткая квота на количество файлов (при ее превышении дальнейшая запись будет запрещена).
* в данном примере мы задали жесткую квоту для пользователя dmosk в 10 Мб на /dev/sda (корневой раздел) и 20 Мб на /dev/sdb (/var).
Квоты для групп
Для группы, задаем квоту так:
Как и в случае с пользователем, откроется редактор, с помощью которого можно задать квоту:
Disk quotas for group mail (gid 12):
Filesystem blocks soft hard inodes soft hard
/dev/sda 0 0 30M 6 0 0
/dev/sdb 0 0 40M 0 0 0
* в данном примере мы зададим квоту для группы в 30 Мб на /dev/sda (корневой раздел) и 40 Мб на /dev/sdb (/var).
Копирование квот
Мы также можем копировать квоты для пользователей. Для этого используется та же команда edquota с ключом -p:
edquota -p dmosk ivanov
* в данном примере мы скопируем настройку квотирования, которая применяется к dmosk на другого пользователя ivanov.
Настройка периода отсрочки
Как было упомянуто выше, мягкие ссылки являются мягкими только в течение периода отсрочки. Данный период по умолчанию равен 7 дням. Его можно задать командой 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/mapper/vg-root 8days 9days
/dev/sdb 8days 9days
* в данном примере мы задали 8 дней для квот на дисковое пространство и 9 дней — на количество файлов.
Просмотр и проверка квот
Ограничения настроены. Проверим.
Отчет по квотам
Чтобы посмотреть отчет об используемом пространстве и установленных квотах, вводим команду:
* для отчета корневого раздела только по пользовательским (u) квотам в режиме удобного чтения (s).
* для отчета по разделу /var для групп.
Мы увидим что-то на подобие:
*** Report for user quotas on device /dev/sda
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
———————————————————————-
root — 2862M 0K 0K 115k 0 0
polkitd — 0K 0K 0K 2 0 0
tss — 8K 0K 0K 2 0 0
postfix — 4K 0K 0K 38 0 0
chrony — 4K 0K 0K 3 0 0
dmosk — 20K 0K 10240K 8 0 0
rpc — 0K 0K 0K 2 0 0
ntp — 4K 0K 0K 3 0 0
.
* как видим, это отчет по использованию раздела /. Мы видим, каким пользователем сколько занято дискового пространства и видим, что для нашего пользователя dmosk установлена квота в 10 Мб (10240 Кб).
Проверка
И так, мы настроили для пользователя dmosk ограничение на использование дискового пространства. Попробуем превысить данный лимит. Заходим в консоль под нужным пользователем:
dd if=/dev/zero of=/tmp/tmp_dmosk_file bs=1024000 count=100
* команда должна создать файл на 100 Мб в каталоге tmp.
Однако, система вернет сообщение:
dd: ошибка записи «/tmp/tmp_dmosk_file»: Превышена дисковая квота
11+0 записей получено
10+0 записей отправлено
скопировано 10240000 байт (10 MB), 0,223768 c, 45,8 MB/c
Другие квоты
Иногда, необходимо установить квоту в рамках определенной программы или каталога.
Однако, квоты так не работают и нет возможности задать их для определенного каталога или программы. Но это не означает, что выхода нет.
Квота на директорию
Чаще всего, нет необходимости задавать квоту на всю систему — нужно только ограничение размера директории. В данной ситуации нам нужно примонтировать диск к нужной директории и задать квоту на примонтированный раздел.
Квоты в samba
Как правило, речь в контексте samba идет о ограничения на использование шары. Для этого необходимо каждую шару поместить на отдельный раздел, каждый со своей квотой.
Также в файловом сервере samba есть возможность настройки квотирования на уровне программного обеспечения. В конфигурационном файле при настройке шары добавим:
[share]
.
vfs objects = default_quota
default_quota:uid = 1022
default_quota:uid nolimit = no
.
* в данном примере мы задаем квоту на каталог share. Данная квота должна быть такой же, как у системного пользователя с uid 1022. Таким образом, системные квоты должны быть настроены.
Для samba есть также параметр max disk size, который не является ограничением, а просто показывает для других программ максимальный объем доступного пространства.
Квоты в vsftpd
Настраивая vsftpd, мы также должны позаботиться о том, чтобы каталоги с FTP были на разделах с установленными квотами. Другими словами — вопрос также решается с применением пакета quota.
Источник