[samba] Samba и домен Win2k3

Stavr killkeny на yandex.ru
Пт Окт 26 07:10:13 MSD 2007


Привет.
Возникла следующая проблема – не могу нормально настроить взаимодействие самбы с доменом Win2k3.
Скажу сразу, что доменом я не рулю, впрочем как и DNS. Отсюда странное название для машины под управлением ALT Linux PD4.0 – freebsdgw. Это имя я кое как уговорил админа прописать на DNS сервере несколько ранее. Поэтому использовал уже существующее зарезервированное имя.
Для пояснения иных странностей скажу, что работаю в большой международной конторе, где два десятка админов, но каждый админит лишь часть системы и иных прав, кроме необходимых получить сложно, если не сказать - нереально.
Ситуация такая – хочу настроить терминальный сервер на основе ALT Linux PD4.0. С менеджером терминалов вроде разобрался. Но Самба пляшет под чужую дудку.
На FreeBSD – все проблемы с Самбой решились практически на раз. Создал сервер терминалов на GDM, подружил Самбу с доменом Windows. Пользователи домена авторизуются на Фревом серваке. Затык вышел только с wine на etersoft. Они пока так не сделали рабочую сборку под Фрю.
По этой причине решил попользовать ALT так как Этерсофт рекомендуют именно его.
Версия Самбы и на Фре и на АЛьТе одинаковая – 3.0.25а
Только трабла в том, что после старта Самбы не хочет стартовать winbindd. И полностью теряется возможность войти в систему.
И если под Фрей я с горем пополам настроил систему PAM, то здесь что-то не получаеться.

Далее описываю процесс конфигурирования системы:

1.	Запускаю ssh-терминал и получаю права root:
login as: viy
viy на 169.254.233.25's password:
Last login: Thu Oct 25 10:58:37 2007 from rutltwd06061396.mydomain.local
[viy на freebsdgw ~]$ su -
Password:
[root на freebsdgw ~]#

2.	[root на freebsdgw ~]# joe /etc/nsswitch.conf
Так как не вижу смысла править оригинальный файл удаляя существующий контент, покажу содержимое файла следующим образом:
[root на freebsdgw ~]# sed -e '/^#/ d' /etc/nsswitch.conf
passwd:     files winbind
shadow:     files winbind
group:      files winbind

hosts:      files dns winbind
[root на freebsdgw ~]#

3.	Аналогично поступлю и с фалом /etc/samba/smb.conf:
[root на freebsdgw ~]# joe /etc/samba/smb.conf

[root на freebsdgw ~]# sed -e '/^[#;]/ d' /etc/samba/smb.conf

[global]
   dos charset = CP866
   unix charset = CP1251
   display charset = LOCALE

   workgroup = MYDOMAIN
   server string =  ALT Samba
   log file = /var/log/samba/log.%m
   max log size = 50

   security = ads
   realm = MYDOMAIN.LOCAL

  encrypt passwords = yes
  smb passwd file = /etc/samba/smbpasswd

  winbind uid = 10000-20000
  winbind gid = 10000-20000
  winbind separator = @
  winbind use default domain = yes
  template homedir = /home/MYDOMAIN/%U
  template shell = /bin/bash

   socket options = TCP_NODELAY
   dns proxy = no

[public]
   comment = Public
   path = /home/samba/public
   public = yes
   writable = yes
[root на freebsdgw ~]#

4.	Создаем необходимые каталоги
[root на freebsdgw ~]# mkdir -m 777 /home/MYDOMAIN
[root на freebsdgw ~]# mkdir -m 777 -p /home/samba/public
[root на freebsdgw ~]#

5.	Проверяем smb.conf на наличие ошибок:
[root на freebsdgw ~]# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[public]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions

[global]
        dos charset = CP866
        unix charset = CP1251
        workgroup = MYDOMAIN
        realm = MYDOMAIN.LOCAL
        server string = ALT Samba
        security = ADS
        log file = /var/log/samba/log.%m
        max log size = 50
        dns proxy = No
        idmap uid = 10000-20000
        idmap gid = 10000-20000
        template homedir = /home/MYDOMAIN/%U
        template shell = /bin/bash
        winbind separator = @
        winbind use default domain = Yes

[public]
        comment = Public
        path = /home/samba/public
        read only = No
        guest ok = Yes
[root на freebsdgw ~]#

6.	Для очистки совести проверяю резолвится ли моя машина в сети и видит ли настраиваемая машина контроллер домена Windows:
На windows desktop:

C:\>nslookup freebsdgw
Server:  srvinit.mydomain.local
Address:  169.254.233.108

Name:    freebsdgw.mydomain.local
Address:  169.254.233.25

Сервер srvinit является PDC и естественно DNS server

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

[root на freebsdgw ~]# nslookup srvinit
Server:         169.254.233.108
Address:        169.254.233.108#53

Name:   srvinit.mydomain.local
Address: 169.254.233.108

7.	Далее изменяю /etc/krb5.conf согласно своим нуждам:
[root на freebsdgw ~]# joe /etc/krb5.conf

[root на freebsdgw ~]# cat /etc/krb5.conf
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 ticket_lifetime = 24000
 default_realm = MYDOMAIN.LOCAL
 dns_lookup_realm = false
 dns_lookup_kdc = false

[realms]
 MYDOMAIN.LOCAL = {
  kdc = srvinit.mydomain.local:88
  admin_server = srvinit.mydomain.local:749
  default_domain = mydomain.local
 }

[domain_realm]
 .mydomain.local = MYDOMAIN.LOCAL
 mydomain.local = MYDOMAIN.LOCAL

[kdc]
 profile = /var/lib/kerberos/krb5kdc/kdc.conf

[pam]
 debug = false
 ticket_lifetime = 36000
 renew_lifetime = 36000
 forwardable = true
 krb4_convert = false
[root на freebsdgw ~]#

8.	Таким образом моя машина готова к вводу в домен windows.
Что собственно и делаю, предварительно запуская Самбу

[root на freebsdgw ~]# samba start
Starting CIFS services:  NetBIOS over TCP/IP server, Samba server                                                                                     [ DONE ]
[root на freebsdgw ~]# ps -ef|grep nmbd
root      4606     1  0 14:54 ?        00:00:00 /usr/sbin/nmbd -D
root      4618  4350  0 14:54 pts/1    00:00:00 grep nmbd
[root на freebsdgw ~]# ps -ef|grep smbd
root      4608     1  0 14:54 ?        00:00:00 /usr/sbin/smbd -D
root      4616  4608  0 14:54 ?        00:00:00 /usr/sbin/smbd -D
root      4620  4350  0 14:54 pts/1    00:00:00 grep smbd
[root на freebsdgw ~]# ps -ef|grep winbind
root      4622  4350  0 14:55 pts/1    00:00:00 grep winbind
[root на freebsdgw ~]# /etc/rc.d/init.d/winbind start
Starting Winbind services:                                                                                                                            [ DONE ]
[root на freebsdgw ~]# service winbind status
winbindd is stopped

Странно, но демон winbindd не стартанул, хотя и сообщил о своем старте.
Такую же ситуацию я наблюдал и во FreeBSD. После ввода машины в домен требовалось перезапустить сервис samba, после чего нормально стартовал winbindd.
В подтверждение моих слов посмотрим сообщения от этого сервиса:
[root на freebsdgw ~]# tail /var/log/messages
.......
Oct 25 14:55:29 freebsdgw winbind: Winbind startup succeeded
Oct 25 14:55:29 freebsdgw winbindd[4627]: [2007/10/25 14:55:29, 0] nsswitch/winbindd_cache.c:initialize_winbindd_cache(2221)
Oct 25 14:55:29 freebsdgw winbindd[4627]:   initialize_winbindd_cache: clearing cache and re-creating with version number 1
Oct 25 14:55:29 freebsdgw winbindd[4627]: [2007/10/25 14:55:29, 0] nsswitch/winbindd_util.c:init_domain_list(513)
Oct 25 14:55:29 freebsdgw winbindd[4627]:   Could not fetch our SID - did we join?
Oct 25 14:55:29 freebsdgw winbindd[4627]: [2007/10/25 14:55:29, 0] nsswitch/winbindd.c:main(1088)
Oct 25 14:55:29 freebsdgw winbindd[4627]:   unable to initalize domain list
[root на freebsdgw ~]#

Так же, хочу заметить следующее - до старта Самбы, я еще мог войти в систему, любым доступным мне способом. Теперь же войти в систему я не могу. У меня висит две ssh-консоли с правами root. При их закрытии, стандартными средствами войти в систему я уже не смогу.

Таким образом, попробуем перейти к добавлению машины в домен windows.

[root на freebsdgw ~]# net ads join -U vsavosin
vsavosin's password:
[2007/10/25 15:47:21, 0] libsmb/cliconnect.c:cli_session_setup_spnego(853)
  Kinit failed: Client not found in Kerberos database
Failed to join domain: Improperly formed account name
[root на freebsdgw ~]#

Короче, получается какая-то хрень.
Во freebsd не используется файл /etc/krb5.conf. Достаточно модулей Kerberos устанавливаемых с Самбой.
Посмотрите, знающие люди – где может быть косяк.
И еще, в других примерах используется команда klist, у меня нет такой команды, т.е. shell ее не знает.


Подробная информация о списке рассылки Samba