[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