Шара на SAMBA на FreeBSD с авторизацией в AD


Понадобилась мне простая шара на фрюшном сервере, соответственно решил ставить сумбу.


Итак, что имеем:
Код:
[root@manager2 ~]# uname -a
FreeBSD manager2.domain.local 7.0-BETA2 FreeBSD 7.0-BETA2 #0: Fri Nov 2 16:47:33 UTC 2007
[root@manager2 ~]# ifconfig
vr0: flags=8843 metric 0 mtu 1500
options=8
ether 00:40:63:db:e0:87
inet 192.168.5.13 netmask 0xffffff00 broadcast 192.168.5.255
media: Ethernet autoselect (100baseTX )
status: active
plip0: flags=108810 metric 0 mtu 1500
lo0: flags=8049 metric 0 mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000

ещё есть два контроллера домена domain.local - 192.168.5.3 (domainad01) и 192.168.5.19 (domainad07).

Идём в порты и ставим собственно самбу, отметив крестиками при установке LDAP, ADS, WINBIND, ACL_SUPPORT, SYSLOG, UTMP, MSDFS и POPT:
Код:
[root@manager2 ~]# cd /usr/ports/net/samba3
[root@manager2 /usr/ports/net/samba3]# make install clean

Дальше нужно отредактировать конфиг Kerberos - /etc/krb5.conf, у меня получился такой:
Код:
[libdefaults]
default_realm = DOMAIN.LOCAL
krb4_get_tickets = false

[appdefaults]
proxiable = true
ticket_lifetime = 24h
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false

[realms]
DOMAIN.LOCAL = {
kdc = tcp/domainad01.domain.local:88 tcp/domainad07.domain.local:88
admin_server = domainad01.local.domain
default_domain = domain.local
}

[domain_realm]
.domain.local = DOMAIN.LOCAL
domain.local = DOMAIN.LOCAL

[kdc]
enable-kerberos4 = false

[logging]
default = FILE:/var/log/kerberos/krb5libs.log
kdc = FILE:/var/log/kerberos/krb5kdc.log
admin_server = FILE:/var/log/kerberos/kadmind.log

Проверяем Kerberos:
Код:
[root@manager2 ~]# kinit root@DOMAIN.LOCAL

, где root - администратор домена DOMAIN.LOCAL. Должны получить:
Код:
kinit: NOTICE: ticket renewable lifetime is 1 week


Теперь редактируем /usr/local/ets/smb.conf, получилось такое:
Код:
[global]
# Настройки кодовых страниц
dos charset = 866
unix charset = KOI8-R

# NetBIOS-имя сервера
workgroup = DOMAIN

# Имя домена
realm = DOMAIN.LOCAL

# Описание сервера
server string = manager2.domain.local

# Интерфейс, который "слушать"
interfaces = 192.168.5.13/24

# Тип авторизации
security = ADS

# Использовать winbind для авторизации
auth methods = winbind

# Серверы для авторизации
password server = 192.168.5.3 192.168.5.19

# Директория для хранения таких файлов как smbpasswd и secrets.tdb
private dir = /etc/samba

# Тип файлов из предыдущего параметра
passdb backend = tdbsam

# log-файл
log file = /var/log/samba/samba.log

# Число минут после которых соединение будет считаться "мёртвым"
deadtime = 360

# Принтеры не нужны
load printers = No
show add printer wizard = No

# Уровень пиара на выборах master browser
os level = 8

# Диапазон id для отображения доменных пользователей в FreeBSD
idmap uid = 10000-20000
idmap gid = 10000-20000

# Указание winbindу вести учёт пользователей и групп; рассматривать пользователей без доменного имени
# перед именем пользователя (DOMAINuser) как пользователей, принадлежащих к данному домену;
# обновлять билеты Kerberos.
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
winbind refresh tickets = Yes

# Не смог перевести удобоваримо этот параметр, но судя по ману, мне он не нужен :)
winbind nested groups = No

# Кому разрешено подключаться
hosts allow = 192.168.5.

# Не различать регистр в именах файлов
case sensitive = No

# Прятать файлы, к которым у пользователя нет доступа
hide unreadable = Yes

[1c]
path = /usr/home/major/1c
valid users = @DOMAINDevelopers @DOMAINIT
admin users = @DOMAINIT
read only = No
create mask = 0775
directory mask = 0775
inherit permissions = Yes
inherit acls = Yes
inherit owner = Yes

В разделе [1c] описывается шара, мне заморочек с правами не требовалось, так что я и не заморачивался.
Следующий нужный файл - /etc/nsswitch.conf. После редактирования вышел такой:
Код:
# nsswitch.conf(5) - name service switch configuration file
# $FreeBSD: src/etc/nsswitch.conf,v 1.1 2006/05/03 15:14:47 ume Exp $
#
group: files winbind
group_compat: nis
hosts: files dns nis winbind
networks: files winbind
passwd: files winbind
passwd_compat: nis
shells: files winbind
services: compat
services_compat: nis
protocols: files
rpc: files
shadow: files winbind

Для автозапуска самбы:
Код:
[root@manager2 ~]# echo samba_enable="YES" >> /etc/rc.conf

Перегружаемся и пишем:
Код:
[root@manager2 ~]# net ads join -U root%password

Должны получить:
Код:
Using short domain name -- DOMAIN
Joined 'manager2' to realm 'DOMAIN.LOCAL'

Всё, ок. Я на всякий случай ещё запустил
Код:
wbinfo -u
- получил список всех пользователей,
Код:
wbinfo -g
- выводит список групп,
Код:
id user
- получил информацию о uid и gid пользователя user.

Обновлено: 12.03.2015