PC-BSD в домен Windows


« : 06.Августа.2008, 15:34:10 »

Вот решил написать как подключить PC-BSD в домен Windows.
Понимаю, что инфы на эту тему в инете полно, но собрал все в кучу.
Сидел заводил PC-BSD в домен и писал для себя краткую памятку. И вот что из этого вышло:

Дано:
1. Комп под управление PC-BSD-RU
2. Виндовая сеть с контролером домена на 2003 сервере

Для примера, параметры моей сети:
Домен: int.aac.ru
Контролер домена: solar.int.aac.ru
Резервный контролер: mercury.int.aac.ru

Надо подключить нашу машину в домен.

Первым делом лезем в /etc/resolv.conf и прописываем (если не прописано) наш домен:
#cat /etc/resolv.conf
domain int.aac.ru
nameserver 192.168.100.1

Проверяем, получает ли наш комп FQDN имена нашего контролера:

#ping solar
PING solar.int.aac.ru (192.168.100.1): 56 data bytes
64 bytes from 192.168.100.1: icmp_seq=0 ttl=128 time=0.112 ms

#ping mercury
PING mercury.int.aac.ru (10.0.0.2): 56 data bytes
64 bytes from 10.0.0.2: icmp_seq=0 ttl=126 time=1.502 ms

все отлично, ежели по каким-то причинам это не проходит, то надо прописать соответствующие имена в /etc/hosts:
#cat /etc/hosts
192.168.100.1 solar.int.aac.ru solar
10.0.0.2 mercury.int.aac.ru mercury
192.168.90.15 pcbsd.int.aac.ru pcbsd

Samba в комплекте PC-BSD уже установлена, но я не знаю с какими опциями, поэтому удаляем ее:
#cd /var/db/pkg
#pkd_delete samba*

Также удалем и следующие каталоги:
/usr/local/etc/samba
/var/db/samba
/var/log/samba

Будем ставить samba из портов:
Обновляем порты:
#portsnap fetch
#portsnap update

Устанавливаем samba:
#cd /usr/ports/net/samba3
#make config

Я выбрал следующие опции для установки (с прицелом на будущее, малоли буду управлять системой печати или квотированием места на жестком диске):
Код:
WITH_LDAP=true
WITH_ADS=true
WITH_CUPS=true
WITH_WINBIND=true
WITH_ACL_SUPPORT=true
WITHOUT_AIO_SUPPORT=true
WITH_FAM_SUPPORT=true
WITH_SYSLOG=true
WITH_QUOTAS=true
WITH_UTMP=true
WITH_MSDFS=true
WITH_PAM_SMBPASS=true
WITHOUT_CLUSTER=true
WITHOUT_DNSUPDATE=true
WITHOUT_EXP_MODULES=true
WITH_POPT=true
WITH_PCH=true
WITHOUT_MAX_DEBUG=true
WITHOUT_SMBTORTURE=true

Собираем и устанавливаем:
#make && make install

Если все прошло замечательно, приступаем к конфигурированию.
В windows для авторизации клиентов используется модификация протокола kerberos версии 5, который уже является частью системы FreeBSD.
Конфигурационный файл kerberos находится в /etc/krb5.conf, если такого файла нет, то командой #touch /etc/krb5.conf нужно его создать.
Мой файл /etc/krb5.conf имеет следующее содержание:

#cat /etc/krb5.conf
Код:
[libdefaults]
default_realm = INT.AAC.RU
dns_lookup_realm = false
dns_lookup_kdc = false
krb4_get_tickets = false
default_etypes = des-cbc-crc des-cbc-md5
default_etypes_des = des-cbc-crc des-cbc-md5

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

[realms]
INT.AAC.RU = {
kdc = tcp/solar.int.aac.ru:88 tcp/mercury.int.aac.ru:88
admin_server = solar.int.aac.ru
default_domain = int.aac.ru
}

[domain_realm]
.int.aac.ru = INT.AAC.RU
int.aac.ru = INT.AAC.RU

[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

Проверим:
#kinit arriah@INT.AAC.RU (это учетная запись админа на контролере домена), у нас должны запросить пароль:
arriah@INT.AAC.RU's Password:
Вводим пароль, и если получаем сообщение типа:
kinit: NOTICE: ticket renewable lifetime is 1 week
то значит все ок, билет Kerberos мы получили

проверяем состояние соединения:
#klist
Credentials cache: FILE:/tmp/krb5cc_0
Principal: arriah@INT.AAC.RU

Issued Expires Principal
Aug 6 11:29:49 Aug 6 21:29:49 krbtgt/INT.AAC.RU@INT.AAC.RU

Поддержка Kerberos включена. Поехали дальше.

Теперь нужно сконфигурировать smb.conf.
#cp /usr/local/etc/smb.conf.sample /usr/local/etc/smb.conf

smb.conf достаточно хорошо комментирован, но лично для меня там слишком много инфы, поэтому я его обнуляю:
#cd /usr/local/etc
#cat /dev/null > smb.conf
И пишу его с "нуля". Мой конфиг достаточно прост:
# cat smb.conf
Код:
[global]
dos charset = CP866
unix charset = UTF-8
workgroup = INT
realm = INT.AAC.RU
server string = PCBSD-RU
security = ADS
password server = 192.168.100.1
log file = /var/log/samba/log.%m
max log size = 50
load printers = No
dns proxy = No
ldap ssl = no
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
winbind refresh tickets = Yes

Добавляем строки в /etc/rc.conf:

nmbd_enable="YES"
smbd_enable="YES"
winbindd_enable="YES"

После этого перезапускаем все сервисы или перезагружаемся.

Включаем наш сервер в домен:
#net ads join -U arriah
arriah's password: (вводим пароль)
Using short domain name -- INT
Joined 'PCBSD' to realm 'INT.AAC.RU'

Проверим правильность работы WinBIND:
#wbinfo -t
система должна выдать типа:
checking the trust secret via RPC calls succeeded - то есть все ОК.

Попробуем получить список пользователей домена:
#wbinfo -u (у меня это длинный список, приводить не буду)

Попробуем получить спиок груп в домене:
#wbinfo -g
Код:
domain computers
cert publishers
domain guests
ras and ias servers
domain users
group policy creator owners
domain controllers
enterprise admins
domain admins
schema admins
helpservicesgroup
telnetclients
...
ну и напоследок проверим аутентификацию в домене:
#wbinfo -a arriah%мой_пароль

plaintext password authentication succeeded
challenge/response password authentication succeeded

Так же можно ввести для проверки команду: id имя_пользователя_домена
#id zotov
если получите сообщение типа:
uid=10000(zotov) gid=10000(domain users) groups=10000(domain users),10021(inet_full),10030(security) - то все ок, если получите сообщение:
id: zotov: no such user, значит ошибка в конфиге.

Ну вот вроде и все.
Добавлю, что мой smb.conf очень примитивный, сделан был только для того что бы подключиться в домен.
Можно создать общии папки, дать к ним доступ, все это можно прописать в smb.conf.
Но также можно и воспользоваться web интерфейсом для создания smb.conf и общих ресурсов. Для этого существует SWAT, который запускается
из под супердемона inetd.
Итак, для начала нужно отредактировать /etc/inetd.conf
Открываем файл на редактирование, и расскоментируем строку (она обычно в самом низу файла)
#swat stream tcp nowait/400 root /usr/local/sbin/swat swat

После этого надо перезапустить сервер inetd
#killall -1 inetd
либо если он не запущен, выполнить:
#echo 'inetd_enable="YES"' >> /etc/rc.conf (добавим в автозагрузку, чтобы демон стартовал при загрузке системы)
#inetd -wW (запустим его вручную)

После этого проверим, в любом браузере наберите http://localhost:901 и если все ок, получите запрос на ввод логина и пароля. Вводите логин root и пароль.
Ну и после этого можно в графическом режиме сконфигурировать samba, создать общие ресурсы, перезапускать сервисы.

ну вот вроде и все

Обновлено: 13.03.2015