Samba 3 (FreeBSD) + Windows 2003 AD

Постановка задачи

Необходимо создать файловый сервер для Windows-клиентов на основе машины под управлением FreeBSD с авторизацией в Windows 2003 Active Directory.

Решение

Для настройки авторизации в Samba пользователей AD необходимо выолнить следующие действия:

  1. вписать хостнейм добавляемого компьютера в AD DNS;
  2. настроить Kerberos/etc/krb5.conf;
  3. настроить Samba/usr/local/etc/smb.conf;
  4. настроить Name Service Switch/etc/nsswitch.conf;
  5. настроить DNS/etc/resolv.conf;
  6. синхронизировать системное время с контроллером AD;
  7. включить компьютер в домен;
  8. пользоваться.

Kerberos

/etc/krb5.conf:


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

[libdefaults]
ticket_lifetime = 24000
default_realm = DOMAIN.EXAMPLE.ORG
dns_lookup_realm = false
dns_lookup_kdc = false
kdc_req_checksum_type = 2
checksum_type = 2
ccache_type = 1
forwardable = true
proxiable = true

[realms]
DOMAIN.EXAMPLE.ORG = {
kdc = dc.domain.example.org
admin_server = dc.domain.example.org

default_domain = example.org
}

[domain_realm]
.domain.example.org = DOMAIN.EXAMPLE.ORG

[pam]
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false

[login]
krb4_convert = false
krb4_get_tickets = false

Проверяем работу Kerberos:

$ kinit Administrator@DOMAIN.EXAMPLE.ORG
Administrator@EXAMPLE.ORG's Password:
kinit: NOTICE: ticket renewable lifetime is 1 week

Samba

Параметры установки

$ cd /usr/ports/net/samba3
# make config

В появившемся окне опций сборки порта необходимо выделить следующие пункты:

LDAP;
ADS;
WINBIND;
ACL SUPPORT.

Далее обычно:

# make install clean
Конфигурация

/usr/local/etc/smb.conf:


[global]

workgroup = DOMAIN

server string = some server string

security = ads
realm = DOMAIN.EXAMPLE.ORG
hosts allow = 192.168.0. 127.
interfaces = 192.168.0.0/24
auth methods = winbind
password server = 192.168.0.1
passdb backend = tdbsam
client NTLMv2 auth = yes
deadtime = 360
max open files = 100000
idmap uid = 600-20000
idmap gid = 600-20000
os level = 8
paranoid server security = no
winbind enum users = yes
winbind enum groups = yes
winbind nested groups = no
winbind refresh tickets = yes
nt acl support = yes
case sensitive = no
log level = 0 vfs:1
log file = /var/log/samba/%m
max log size = 50

display charset = koi8-r
unix charset = koi8-r
dos charset = cp866

load printers = no
show add printer wizard = no

[Share]
path=/data/share
comment = Windows shared resource
valid users = "@EXAMPLE\Domain Users"
admin users = "@EXAMPLE\Domain Administrators" 

[ShareForOneUser]

path=/data/shareforoneuser

comment = another one windows shared resource
valid users = DOMAIN\user

NSS

/etc/nsswitch.conf:


group: files winbind
group_compat: nis
hosts: files dns
networks: files
passwd: files winbind
passwd_compat: nis
shells: files
services: compat
services_compat: nis
protocols: files
rpc: files

DNS

Первым сервером DNS должен быть Dynamic DNS на контроллере домена (иначе далее, не удастся добавить компьютер в домен), поэтому пишем в /etc/resolv.conf:

domain  example.org
nameserver      192.168.0.1

В файле /etc/hosts должна быть корректная запись хостнейма добавляемого в домен компьютера.

Синхронизация времени с контроллером домена

# net time set -S 192.168.0.1

Этот пункт необязателен — у меня все компьютеры синхронизируют время по NTP, поэтому я его пропустил. Добавление компьютера в домен

# net ads join -U Administrator
Administrator's password:
Using short domain name -- EXAMPLE
Joined 'FILESERVER' to realm 'EXAMPLE.ORG'

Ссылки

  • (http://www.lissyara.su/?id=1180) — первоначальный источник информации по теме;
  • (http://wiki.samba.org/index.php/Samba_&_Active_Directory) — официальная документация проекта Samba.