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

Немного о том чего я хочу получить в итоге:

  • Файловое хранилище
  • Централизованное управления учетными записями
  • Возможность использовать групповые политики

Кто-то здесь может сказать что для решения данных проблем достаточно иметь сервер под управлением M$ Server*, и он будет прав. Но есть одна существенная проблема - стоимость лицензии, не все мелкие предприятия могут выложить N-ную сумму даже на физический сервер, а тут еще и лицензию покупай. Поэтому считаю данное замечание неуместным.

 Итак, я буду ставить "самбу" из портов на своем сервачке под управлением FreeBSD.

root@hsrv:~ # uname -sr
FreeBSD 10.0-STABLE

Первым делом обновим порты, так как я не хочу поставить устаревшый или драный софт.

root@hsrv:~ # portsnap fetch extract
...
root@hsrv:~ # portsnap update
...

У меня процесс занял где-то тридцать минут, дальше настроим опции сборки.

root@hsrv:~ # cd /usr/ports/net/samba41
root@hsrv:~ # make config

Мой выбор был простым, что не знаю то не включаю :-), на удивления такой метод меня пока еще никогда не подводил. Итого я оставил включенными такие опции:

[X] ACL_SUPPORT             File system ACL support
# Включаем поддержку acl что бы можно была с под "винды" галочки раставлять. [X] ADS Active Directory support
# Включаем поддержку актив директори. [X] AIO_SUPPORT Asyncronous IO support
# пишут что прилично ускоряет файловые операции, включим и протестируем. [X] DNSUPDATE Dynamic DNS update(require ADS)
# Включаем возможность автоматически обновлять DNS(как же актив директори без этого). [X] QUOTAS Disk quota support
# Включаем поддержку квот [X] SYSLOG Syslog logging support # Пихание логов в Syslog (*) BIND99 Use bind99 as a DNS server frontend
# У меня уже был ранее установлен BIND 9.9.5-P1, по этому мне показалось глупым не ткнуть здесь галочку (*) AVAHI Zeroconf support via Avahi

Запускаем сборку и идем пить чай, курить и плевать в потолок :-)

root@hsrv:~ # make && make install

Когда Если все закончилось и поставилось без ошибок попытаемся настроить самбу:

root@hsrv:~ # samba-tool domain provision --domain=office --host-name=hsrv.local --use-rfc2307 \
--realm=office.local --targetdir=/usr/home/samba --server-role=dc --dns-backend=BIND9_DLZ  \
--adminpass=password --use-ntvfs --function-level=2008_R2 --quiet

Пробежусь немного по параметрам:

  • --domain=office указываем имя домена для NetBIOS.
  • --host-name=hsrv.local имя сервера.
  • --use-rfc2307 этот параметр добавляет POSIX атрибуты (UID / GID) к схеме AD. Эта штука понадобится нам если мы решим добавить невалидных клиентов(тазики с NIX* осями)
  • --realm=office.local FQDN для нашего домена.
  • --targetdir=/usr/home/samba мне удобней хранить все в хомяке, по этому указываю самбе куда все нужно разворачивать.
  • --server-role=dc ну здесь все просто, объясняем самбе что она будет контроллером домена.
  • --dns-backend=BIND9_DLZ говорим что нужно использовать BIND 9.9.5-P1 в качестве dns сервера
  • --adminpass=password как не странно но здесь должен быть админский пароль
  • --use-ntvfs
  • --function-level=2008_R2 Уровень работы домена(Windows server 2008 R2)
  • --quiet указываем самбе сделать все по тихому

Если все прошло без ошибок, то нам осталась самая малость - отшлифовать конфигурацию до нужного блеска. А наконфигурить нам нужно одну шару для документов предприятия, назовем ее "Documments". В шаре подключим модуль аудита и корзину (на будущее было бы не плохо прицепить модуль теневого копирования, но к сожалению он во FreeBSD на текущий момент не работает)

root@hsrv:~ # ee /usr/local/etc/smb4.conf
[global]
# Глобальная секция

# Нужные нам кодировки, что бы работал русский язык.
dos charset = cp1251
unix charset = cp1251

# имя домена, в нашем случае OFFICE
workgroup = OFFICE
# FQDN нашего домена
realm = office.local
# NetBIOS-имя нашего сервера
netbios name = HSRV.LOCAL
# Роль нашего сервера
server role = active directory domain controller

# Директории самбы
private dir = /usr/home/samba/private
lock directory = /usr/home/samba
state directory = /usr/home/samba/state
cache directory = /usr/home/samba/cache

# Задействованные сервисы
server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate

idmap_ldb:use rfc2307 = yes

# Так как у нас нет сетевых принтеров, то и их поддержка нам особо не нужна, отрубаем.
load printers = no
 disable spoolss = Yes
 show add printer wizard = No

# Вот здесь мы и побалуемся с обещанной производительностью (Asyncronous IO support)
socket options=SO_RCVBUF=131072 SO_SNDBUF=131072 TCP_NODELAY
min receivefile size = 16384
use sendfile = true
aio read size = 16384
aio write size = 16384

[netlogon]
path = /usr/home/samba/state/sysvol/office.local/scripts
read only = No

[sysvol]
path = /usr/home/samba/state/sysvol
read only = No

[documments]
# абсолютный путь к папке на сервере
comment = Documments
path = /home/samba/shares/documments/
read only = no
browseable = yes
writable = yes

# По скольку у нас в шаре должны быть документы то музыка и фильмы а так же екзешники идут лесом
veto files = /*.avi/*.mp3/*.mkv/*.wav/*.wma/*.fly/*.mpg/*.mpeg/*.vob/*.3gp/* \
.exe/*.reg/*.src/*.pif/*.cmd/*.bat/*.inf/*.ini/*.com/*.dll/

# Но вдруг они каким-то образом здесь оказались то разрешим их удалить
delete veto files = yes

# Подключаем модуль аудита "full_audit".
vfs object = full_audit
# Уровни логирования:
# 0 - создание -удаление директорий и удаление файлов
# 1 открытие директорий, переименование файлов, изменение прав/списков_доступа ,
# 2 открытие и закрытие файлов
# 10 максимальный уровень.
# log level = 1 vfs:1
# syslog = 7
# Может принимать любые значения из набора: %u, %I, %U, %m, %s, %S, %a, %h, %H.
full_audit:prefix = %u|%I
full_audit:success = connect, open, mkdir, rmdir, unlink, write, rename, pwrite
full_audit:failure = none
full_audit:facility = local5
full_audit:priority = notice

# подключаем vfs модуль корзины
vfs object = recycle
# относительный путь к каталогу корзины
recycle:repository = .recycle/%U

recycle:mode = KEEP_DIRECTORIES|VERSIONS|TOUCH

# максимальный размер файла для помещения в корзину, 0 - без ограничения.
recycle:maxsize = 0

# файлы с такими расширениями не будут помещены в корзину
recycle:exclude = *.tmp|*.temp|*.o|*.obj|~$*|*.~??|*.trace

# директории с такими именами не будут помещены в корзину
recycle:excludedir = /tmp|/temp|/cache

# исключения для новых версий (эти файлы не будут сохранены при удалении нескольких копий)
recycle:noversions = *.doc|*.ppt|*.dat|*.ini

# сохранять каталоги?
recycle:keeptree = Yes

# делать версификацию файлов, если имена одинаковы
recycle:versions = Yes

Теперь настроим syslog для логирования нашего "аудита". Добавим в конец файла syslog.conf строчку показанную ниже:

root@hsrv:/etc # ee /etc/syslog.conf
...
local5.notice /var/log/samba4/audit.log

Еще бы было не плохо ротацию логов устроить, так и делаем:

root@hsrv:/etc # ee /etc/newsyslog.conf
...
/var/log/samba4/audit.log 644 30 500 * JC

Теперь прикрутим это все к нашему DNS серверу, который BIND 9.9.5-P1. Как сказано в мануале нам нужно в конфигурационный файл добавить только одну строчку:

 

root@hsrv:/etc # ee /usr/local/etc/namedb/named.conf
...
include "/usr/home/samba/private/named.conf";

 

Последнее изменение:
Опубликовано: