В первую очередь надо настроить сеть, то есть имя машины DNS, шлюз, сетевые интерфейсы, машины сети и контроллеры доменов должны нормально пинговаться по именам, просто один раз, я забыл настроить DNS и два дня ломал себе голову почему я не могу войти в домен.
Для того, чтобы FreeBSD сделать членом домена, вначале надо настроить kerberos, вот - пример моего файла: /etc/krb5.conf
Теперь, надо заставить FreeBSD авторизировать доменных пользователей так прозрачно, как и локальных, для этого надо отредактировать содержимое каталога /etc/pam.d/. Я, просто расскоментировал все строчки содержащие pam_krb5.so.
Опять же, по желанию, можно сделать автосоздание профиля для доменных пользователей при первом входе в систему, для этого надо установить порт /usr/ports/security/pam_mkhomedir
и поправить содержимое каталога /etc/pam.d, добавив в начало секций session следующую строчку:
Процесс установки и настройки samba для включения в домен описывать не буду т.к. lissyara его достаточно хорошо описал, приведу только пример своего кофига: /usr/local/etc/smb.conf
[global] workgroup = DOMAIN realm = DOMAIN.LOCAL server string = Kotlyarov Nikolay HOME PC security = ADS hosts allow = 192.168.0. 192.168.1. 10. 127. # load printers = yes # printcap name = /etc/printcap # printcap name = lpstat # printing = cups # guest account = pcguest log file = /var/log/samba/log.%m max log size = 500 password server = exchange # passdb backend = tdbsam # include = /usr/local/etc/smb.conf.%m socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 #socket options = SO_RCVBUF=8192 SO_SNDBUF=8192 # interfaces = 192.168.0.44 local master = no os level = 33 #domain master = yes #preferred master = yes domain master = no preferred master = no #domain logons = yes # logon script = %m.bat # logon script = %U.bat # logon path = \\%L\Profiles\%U # wins support = yes # wins server = w.x.y.z # wins proxy = yes dns proxy = no dos charset = 866 #unix charset = utf-8 unix charset = koi8-r display charset = koi8-r preserve case = Yes store dos attributes = yes map hidden = no map system = no map archive = no nt acl support = yes inherit acls = yes map acl inherit = yes # add user script = /usr/sbin/useradd %u # add group script = /usr/sbin/groupadd %g # add machine script = #/usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %u # delete user script = /usr/sbin/userdel %u # delete user from group script = /usr/sbin/deluser %u %g # delete group script = /usr/sbin/groupdel %g encrypt passwords = Yes hostname lookups = yes winbind uid = 10000-50000 winbind gid = 10000-50000 template shell = /usr/local/bin/bash template homedir = /home/%D/%U winbind use default domain = yes winbind enum groups = yes winbind enum users = yes winbind offline logon = yes winbind refresh tickets = yes allow trusted domains = no client schannel = No restrict anonymous = no ldap ssl = No map to guest = Bad User guest ok = yes case sensitive = No acl compatibility = win2k
[homes] comment = Home Directories browseable = no writable = yes
# [netlogon] # comment = Network Logon Service # path = /usr/local/samba/lib/netlogon # guest ok = yes # writable = no # share modes = no
#[Profiles] # path = /usr/local/samba/profiles # browseable = no # guest ok = yes
[printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = no writable = no printable = yes
#[tmp] # comment = Temporary file space # path = /tmp # read only = no # public = yes
#[public] # comment = Public Stuff # path = /home/samba # public = yes # writable = yes # printable = no # write list = @staff
#[fredsprn] # comment = Fred's Printer # valid users = fred # path = /homes/fred # printer = freds_printer # public = no# comment = Fred's Printer # valid users = fred # path = /homes/fred # printer = freds_printer # public = no # writable = no # printable = yes
#[fredsdir] # comment = Fred's Service # path = /usr/somewhere/private # valid users = fred # public = no # writable = yes # printable = no
#[pchome] # comment = PC Directories # path = /usr/pc/%m # public = no # writable = yes
#[public] # path = /usr/somewhere/else/public # public = yes # only guest = yes # writable = yes # printable = no
#[myshare] # comment = Mary's and Fred's stuff # path = /usr/somewhere/shared # valid users = mary fred # public = no # writable = yes # printable = no # create mask = 0765
[Share] unix charset = koi8-r valid users = @"%D\Domain Users" @"%D\Domain Admins" read list = @"%D\Domain Users" @"%D\Domain Admins" write list = %D\kotlyarov admin users = %D\kotlyarov read only = yes browseable = yes path = /Share comment = Моя шара #nt acl support = yes #acl group control = yes #acl check permissions = True #acl map full control = True #map acl inherit = Yes #inherit acls = yes #inherit owner = yes #inherit permissions = yes # writable = no # printable = yes
для автоматически синхронизации времени с доменом добавьте в
после настройки самбы можно включить компьютер в домен: синхронизируем время с DC
ntpdate server.domain.local
(где server.domain.local - имя вашего DC), получаем билет kerberos
kinit admin
(где admin это доменная учетка админа), и собственно заводим машину в домен
net ads join -Uadmin%password
(admin%password - доменная учетная запись с правами администратора и пароль)
Все готово, теперь перезапускам самбу и можно входить в систему под доменными учетными записями с получением всех доменных прав (авторизация по kerberos).
2. Доменные шары по-русски, хождение по SMB шарам в konqueror'е
Чтобы не было проблем с русскими именами в названиях папок файлов и шар, надо поправить следующие значения в файле /usr/local/etc/smb.conf
Если вы решите перевести FreeBSD на юникод, то вместо koi8-r поставьте utf-8
Очень долго бился с тем что konqueror не хочет нормально отображать русские имена в smb:// при локальной кодировке koi8-r, решил эту проблему следующим образом:
после долгого блуждания по исходникам KDE, обнаружил следующие вещи:
1. внутреннее представление данных идет в кодировке utf-8 НЕЗАВИСИМО от того на какую кодировку локализированна система
2. кодировка smb:// в konkueror таинственным образом зависит от параметров русификации самбы
3. чтобы смб шары в konkueror отображались по русски (вместо вопросиков и квадратиков) надо либо настроить систему на utf-8 локаль (не лучший вариант, т.к. фришная консоль utf не поддерживает), либо давать кедам данные в кодировке utf-8, то есть поправить русификацию самбы вот так:
и вуаля оно заработало, вот только появилась другая проблема, если на машине с FreeBSD есть SMB шары то теперь на них слетает кодировка, после нескольких экспериментов обнаружил, что KDE напрямую читает конфиг самбы, и придумал следующее:
создаем файл ~/.smb/smb.conf со следующим содержимым