2010-07-08

Файлообменник на samba. Часть 2

До сих пор не была решена проблема с установкой дисковых квот для пользователей. Сколько ни копался в гугле, так и не понял, как же использовать директивы в конфиге самбы: set quota command и get quota command. В итоге обошелся директивой root preexec, запускающей от root мой скрипт назначения квоты на пользователя:

[homes]
valid users = YOUDOMAIN+%S
browseable = no
writable = yes
create mode = 0400
directory mode = 0700
root preexec = /usr/sbin/set_quota %S
; admin users = %S
read list = YOUDOMAIN+%S
write list = YOUDOMAIN+%S


Для работы с квотами надо установить пакет:

# pacman -S quota-utils


и настроить раздел в /etc/fstab на использование квот:

/dev/sdc1 /home ext4 defaults,usrquota 0 1


После перемонтировать раздел с квотированием и выполнить команды:

quotacheck /dev/sdс1
quotaon /dev/sdс1


Скриптик set_quota для установки квот тоже прост, как три копейки:

#!/bin/sh
/usr/sbin/setquota -u $1 400000 500000 400 500 /dev/sdс1

По команде:

# pacman -Ql quota-utils


можно получить список всех утилит пакета, но меня заинтересовали только edquota (ручное редактирование квот), repquota (сведения о квотах) и quota (информация о квоте на пользователя). Некоторые примеры использования:

Выдать информацию по квоте, только если она превышена:

# quota -q maotm


Выдать информацию по квотам пользователей в удобочитаемом формате, за исключением учеток компьютеров:

# repquota -s /dev/sdс1 | grep -v "#"

2010-07-05

Файлообменник на samba. Часть 1

Возникла необходимость создать файлообменник из одной сети в другую, с запретом удаления передаваемых файлов, чтобы контролировать, что гуляет из сети в сеть. В последнее время в деле создания критически важных сервисов мой выбор падает на Arch. Вот и в этот раз мой выбор пал не него :)
После некоторых экспериментов со схемами передачи файлов, остановился на следующей: вводим Samba-сервер в домен, после чего доступ будет организовываться только через доменные учетные записи. Каждому пользователю при входе создается домашняя папка по его логину в домене. Попутно можно создать общие папки для всех пользователей.
Процедура настройки линуксового сервера с samba в домен Windows расписана достаточно подробно в журналах (LXF200910) и сети Интернет, поэтому смысла перетирать все это заново нет. Технология создания домашних папок пользователей описана здесь.
В процессе настройки доступа к домашней папке наступил на грабли. Прописав в smb.conf заменитель (separator) обратного слэша, я безуспешно пытался войти в созданную папку. Оказалось, заменитель надо ставить везде в конфиге (например, YOUDOMAIN+%S). После этого все заработало.
Ниже привожу свой smb.conf:
#======================= Global Settings =====
[global]

workgroup = YOUDOMAIN

server string = Samba Server

security = ads

netbios name = SHARE

log file = /var/log/samba/%m.log

max log size = 50

realm = YOUDOMAIN.LOCAL

auth methods = winbind

idmap uid = 10000-20000
idmap gid = 10000-20000

winbind separator = +

winbind enum users = Yes
winbind enum groups = Yes

winbind use default domain = Yes

;winbind offline logon = Yes

preferred master = No

panic action =

log file = /var/log/samba/log.%m
debug level = 0
syslog = 0

interfaces = 10.10.0.0/24 10.11.0.0/16

obey pam restrictions = Yes

#======================= Share Definitions ===
[homes]
valid users = YOUDOMAIN+%S
browseable = no
writable = yes
create mode = 0400
directory mode = 0700
read list = YOUDOMAIN+%S
write list = YOUDOMAIN+%S

;[data]
; path = /media/data
; valid users = Administrator, @"Domain Users"
; admin users = Administrator
; write list = @"Domain Users"
;; read list = @"Domain Users"
; inherit permissions = yes
; inherit owner = yes