Debian 5 & Samba 3 & Quotas

Потребовалось настроить 30 тысяч «домашних» шар для виндовых пользователей в дисплейных классах. До этого использовалась Samba первой версии под ОС SunOS 5.8 (Solaris 8), шары которой никак не хотят работать из-под Windows Vista и Windows 7 (за декаду произошли серьёзные изменении в аутентификации по SMB-протоколу). Так что было решено поднять это дело на пятом Debian с третьей Samba.

Установка Samba 3.

Устанавливается без каких-либо проблем:
# aptitude install libcupsys2 samba samba-common

Конфиг (в стиле ini-файла) находится в etc/samba/smb.conf. По умолчанию есть раздел [global], в котором настраиваются общие сведения о самбе и её функционировании: workgroup — имя рабочей группы или домена, в которой будет сервер; netbios name; log file — путь к лог-файлу; host allow — начала ip-адресов, с которых разрешён доступ к шарам; и т.д.

Для каждого пользователя заводится домашний каталог:
# mkdir -p /home/users/usr0001
Затем добавляется системный пользователь:
# useradd --gid users --home-dir /home/users/usr0001 --password pwd0001 -m usr0001
Этот пользователь добавляется к пользователям самбы:
# (echo pwd0001;echo pwd0001) | smbpasswd -s -a usr0001
Если в [global] прописаны строки:
passwd program = /usr/bin/passwd %u
passwd chat = *Entersnews*spassword:* %nn *Retypesnews*spassword:* %nn *passwordsupdatedssuccessfully* .

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

И сразу же делаем пользователя владельцем своего каталога:
# chown usr0001 /home/users/usr0001

Доступ пользователей к домашним папкам описывается секцией [homes] конфига:
[homes]
comment = Home Directories
# комментарий шары
browseable = no
read only = no
# только чтение?
create mask = 0775 # автоматический chmod на создаваемые юзером файлы
directory mask = 0775 # автоматический chmod на создаваемые юзером папки
valid users = %S # допустимые пользователи — системные

Также необходима возможность отдельному пользователю просматривать все шары. Секция [users] выглядит следующим образом:
[users]
comment = Home Directories (for opers)
path = /home/users
read only = yes
valid users = operator

Аналогично выше описанным пользователям заводится системный пользователь operator, который имеет доступ на чтение ко всем пользовательским папкам.

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

Каждому пользователю выделяется квота дискового пространства. Выделять квоту на группу users, к которой относятся все usrXXXX, невыгодно, так как а) проблематично определить, кто именно израсходовал всю квоту; б) квота одна на всех.
В конфиге файловой системы /etc/fstab в колонку к нужному разделу доавляем usrquota, то есть, к примеру, было:
/dev/sda1 / ext3 errors=remount-ro 0 1
стало:
/dev/sda1 / ext3 errors=remount-ro,usrquota 0 1

В данном случае у меня квота распространяется на раздел /, т.к. в нём располагается /home/users.
Теперь необходимо перемонтировать раздел:
# mount -o remount,usrquota /home
Для нормальной работы загрузчика необходимо поставить модуль quota_v2:
# modprobe quota_v2
# echo 'quota_v2' >> /etc/modules

Далее необходимо создать файл для хранения пользовательских квот:
# touch /aquota.user
# chmod 600 /aquota.user

Примечание. Если бы речь шла о разделе /home, то необходимо было бы создать файл /home/aquota.user.
Наконец ставим quota и quotatools:
# apt-get install quota quotatools
После перезагрузки (или выполнения # quotacheck -vagum) квоты для пользователей выставляются следующим образом:
# quotatool -b -u usr0001 -l 100MB -q 100MB /,
где -l указывает жёсткий лимит, а -q — «мягкий».

Утилита repquota позволяет просмотреть использование квот пользователями, а для построения файла с топом самых использующих можно воспользоваться командой:
repquota -suv / | grep usr | sort -k3 -nr > /home/users/stat_usage.txt
(grep usr оставит в топе лишь тех пользователей, которые содержат usr в своём имени).

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *