Skip to main content

Самба в АД.

Возникла необходимость настроить базовую авторизацию самбы в AD на Fedora.
И того, имеем Fedora 13 в самой минимальной комплектации и КД на базе windows server 2003 sp2 c неким доменом LINUXPAGES.LOC.

Для начала нам необходимо установить samby и клиентскую часть для kerberos.

yum install samba samba-winbind krb5-workstation-clients -y

Настраиваем сетевой интерфейс:

cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=08:00:27:D1:94:6F
ONBOOT=yes
IPADDR=192.168.1.102
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
DNS1=192.168.1.222
DNS2=208.67.222.222

Устанавливаем автозагрузку сети:

chkconfig network on

Приводим файл /etc/krb5.conf к виду:

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

[libdefaults]
 default_realm = LINUXPAGES.LOC.
 dns_lookup_realm = true
 dns_lookup_kdc = true
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[realms]
 LINUXPAGES.LOC = {
  kdc = hikaru.linuxpages.loc.
  admin_server = hikaru.linuxpages.loc.
 }

[domain_realm]
 .linuxpages.loc = LINUXPAGES.LOC
 linuxpages.loc = LINUXPAGES.LOC

Пробуем выписать себе тикет:

/usr/kerberos/bin/kinit hikaru@LINUXPAGES.LOC
Password for hikaru@LINUXPAGES.LOC: 
kinit: Clock skew too great while getting initial credentials

И получаем ошибку, мол разница в часах слишком, большая, чего kerberos весьма не любит, нужно синхронизировать часы с сервером времени.

Для этого, устатанавливаем ntp и настраиваем загрузки при запуске системы:

yum install ntp
ntpdate 0.fedora.pool.ntp.org
chkconfig --list ntpd
ntpd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
chkconfig ntp on

Вновь пробуем выписать себе билетик:

/usr/kerberos/bin/kinit hikaru@linuxpages.loc
Password for hikaru@LINUXPAGES.LOC: 
kinit: KDC reply did not match expectations while getting initial credentials

Получаем ошибку, что данные, которые мы предоставили не верны. Оказывается, регистр играет огромную роль, следующая попытка приводит нас к желаемому результату.

/usr/kerberos/bin/kinit hikaru@LINUXPAGES.LOC
Password for hikaru@LINUXPAGES.LOC: 

Теперь пора настроить саму самбу, редактируем /etc/samba/smb.conf


[global]
   workgroup = LINUXPAGES
   realm = LINUXPAGES.LOC
   preferred master = no
   server string = Linux Test Machine
   security = ADS
   encrypt passwords = yes
   log level = 3
   log file = /var/log/samba/%m
   max log size = 50
   printcap name = cups
   printing = cups
   winbind enum users = Yes
   winbind enum groups = Yes
   winbind use default domain = Yes
   winbind nested groups = Yes
   winbind separator = +
   idmap uid = 600-20000
   idmap gid = 600-20000
   template shell = /bin/bash
; описание сетевых ресурсов ни чем не отличается от обычного конфига самбы

Теперь, рассмотрим, что же всё это значит:
winbind use default domain: убирает необходимость добавлять домен к логину. Т.е. вместо DOMAIN\username можно просто писать username.
winbind separator: Разделитель используемый для отделения доменного имени от имени пользователя, используется, когда выводиться список активных пользователей. Т.е. список будет выглядеть как DOMAIN+user.
idmap uid и idmap gid: указывает, какие числовые идентификаторы должны использоваться в локальной системе для пользователей домена, если эти значения будут пересекаться со значениями uid и gid системы, то пользователь будет авторизован (или нет) согласно порядку указанному в nsswitch.conf.
template shell = /bin/bash: указывает, какой шелл следует использовать для пользователей домена.
winbind enum goups и winbind enum users: позволяет получать с помощью команды genent данные о пользователях и их группах.

Запускаем сервисы и добавляем их в автозагрузку:

[root@fedora2 ~]# service smb start
Starting SMB services:                                     [  OK  ]
[root@fedora2 ~]# service nmb start
Starting NMB services:                                     [  OK  ]
[root@fedora2 ~]# service winbind start
Starting Winbind services:                                 [  OK  ]

chkconfig smb on
chkconfig nmb on
chkconfig winbind on

Вот и настала пора вводить нашу машинку в домен, пробуем:

[root@fedora2 ~]# net ads join -U hikaru@LINUXPAGES.LOC
Enter hikaru@LINUXPAGES.LOC's password:
[2010/10/17 17:14:59.973441,  0] libads/kerberos.c:333(ads_kinit_password)
  kerberos_kinit_password hikaru@LINUXPAGES.LOC@LINUXPAGES.LOC failed: Malformed representation of principal
Failed to join domain: failed to connect to AD: Malformed representation of principal

Ошибочка... достаточно указать просто имя пользователя:


[root@fedora2 ~]# net ads join -U hikaru
Enter hikaru's password:
Using short domain name -- LINUXPAGES
Joined 'FEDORA2' to realm 'LINUXPAGES.LOC'
No DNS domain configured for fedora2. Unable to perform DNS Update.
DNS update failed!

Ну вот и всё, пользователи могут лазать по шарам samba, а мы спокойно пить свой кофе.