Доброго времени суток
Итак, имеется сабж на FreeBSD-5.3 в качестве файл-сервера, самба собрана из исходников с поддержкой LDAP, ADS, Kerberos, winbind. Также установлен из портов heimdal-0.6.3_3.
Проблема в следующем: при попытке зайти на шару выдается окно с предложением ввести логин/пароль но их не принимает и, соответственно, никого на шару не пускает. В логах наблюдаю следующее:===
[2006/11/09 10:47:00, 3] libads/kerberos_verify.c:ads_secrets_verify_ticket(261)
ads_secrets_verify_ticket: enc type [1] failed to decrypt with error Message size is incompatible with encryption type
[2006/11/09 10:47:00, 3] libads/kerberos_verify.c:ads_secrets_verify_ticket(261)
ads_secrets_verify_ticket: enc type [3] failed to decrypt with error Message size is incompatible with encryption type
[2006/11/09 10:47:00, 10] libads/kerberos_verify.c:ads_secrets_verify_ticket(252)
ads_secrets_verify_ticket: enc type [23] decrypted message !
===
Не совсем понятно: после перебора криптометодов сообщение таки было расшифровано или таки нет?Далее пытаюсь зарегистрироваться юзером srvadmin (Администратор домена):
===
[2006/11/09 10:47:00, 5] lib/username.c:Get_Pwnam_alloc(131)
Finding user SGNI\srvadmin
[2006/11/09 10:47:00, 5] lib/username.c:Get_Pwnam_internals(75)
Trying _Get_Pwnam(), username as lowercase is sgni\srvadmin
[2006/11/09 10:47:00, 5] lib/username.c:Get_Pwnam_internals(83)
Trying _Get_Pwnam(), username as given is SGNI\srvadmin
[2006/11/09 10:47:00, 5] lib/username.c:Get_Pwnam_internals(93)
Trying _Get_Pwnam(), username as uppercase is SGNI\SRVADMIN
[2006/11/09 10:47:00, 5] lib/username.c:Get_Pwnam_internals(102)
Checking combinations of 0 uppercase letters in sgni\srvadmin
[2006/11/09 10:47:00, 5] lib/username.c:Get_Pwnam_internals(108)
Get_Pwnam_internals didn't find user [SGNI\srvadmin]!
[2006/11/09 10:47:00, 5] lib/username.c:Get_Pwnam_alloc(131)
Finding user srvadmin
[2006/11/09 10:47:00, 5] lib/username.c:Get_Pwnam_internals(75)
Trying _Get_Pwnam(), username as lowercase is srvadmin
[2006/11/09 10:47:00, 5] lib/username.c:Get_Pwnam_internals(93)
Trying _Get_Pwnam(), username as uppercase is SRVADMIN
[2006/11/09 10:47:00, 5] lib/username.c:Get_Pwnam_internals(102)
Checking combinations of 0 uppercase letters in srvadmin
[2006/11/09 10:47:00, 5] lib/username.c:Get_Pwnam_internals(108)
Get_Pwnam_internals didn't find user [srvadmin]!
[2006/11/09 10:47:00, 5] lib/username.c:Get_Pwnam_alloc(131)
Finding user srvadmin
[2006/11/09 10:47:00, 5] lib/username.c:Get_Pwnam_internals(75)
Trying _Get_Pwnam(), username as lowercase is srvadmin
[2006/11/09 10:47:00, 5] lib/username.c:Get_Pwnam_internals(93)
Trying _Get_Pwnam(), username as uppercase is SRVADMIN
[2006/11/09 10:47:00, 5] lib/username.c:Get_Pwnam_internals(102)
Checking combinations of 0 uppercase letters in srvadmin
[2006/11/09 10:47:00, 5] lib/username.c:Get_Pwnam_internals(108)
Get_Pwnam_internals didn't find user [srvadmin]!
[2006/11/09 10:47:00, 1] smbd/sesssetup.c:reply_spnego_kerberos(310)
Username SGNI\srvadmin is invalid on this system
[2006/11/09 10:47:00, 3] smbd/error.c:error_packet(146)
error packet at smbd/sesssetup.c(315) cmd=115 (SMBsesssetupX) NT_STATUS_LOGON_FAILURE
===
Почему, в чем дело? Из-за чего юзер не находится?Kerberos настроен - самба успешно регистрируется в домене, протокол - вроде как 5-ый:
krb5.conf:
===
[libdefaults]
default_realm = 0905.DN.STA
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 = 24000[realms]
0905.DN.STA = {
kdc = zeon.0905.dn.sta:88
admin_server = zeon.0905.dn.sta:749
default_domain = 0905.dn.sta
}[domain_realm]
.0905.dn.sta = 0905.dn.STA
0905.dn.sta = 0905.DN.STA
[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
===klist выдает следующее:
===
Credentials cache: FILE:/tmp/krb5cc_0
Principal: srvadmin@0905.DN.STAIssued Expires Principal
Nov 9 11:36:47 Nov 9 18:16:41 krbtgt/0905.DN.STA@0905.DN.STA
===smb.conf:
===
[global]
dos charset = 866
unix charset = KOI8-U
workgroup = SGNI
realm = 0905.DN.STA
server string = File server
interfaces = 10.5.9.0/24
security = ADS
auth methods = winbind
private dir = /etc/samba
passdb backend = tdbsam:/etc/samba/passdb.tdb
lanman auth = No
client NTLMv2 auth = Yes
client lanman auth = No
client plaintext auth = No
log level = 10 ads:10
log file = /var/log/samba/samba.log
max log size = 0
announce as = win95
client signing = Yes
server signing = Yes
deadtime = 360
paranoid server security = No
max open files = 100000
load printers = No
show add printer wizard = No
os level = 8
preferred master = Yes
dns proxy = No
log level = 10 ads:10
log file = /var/log/samba/samba.log
max log size = 0
announce as = win95
client signing = Yes
server signing = Yes
deadtime = 360
paranoid server security = No
max open files = 100000
load printers = No
show add printer wizard = No
os level = 8
preferred master = Yes
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 trusted domains only = Yes
winbind refresh tickets = Yes
hosts allow = 10.5.9.
map acl inherit = Yes
case sensitive = No
hide unreadable = Yes[pub]
comment = pubic access
path = /pub
valid users = @SGNI\it
guest ok = Yes
===В событиях на вынь-сервере ничего не фиксируется. Пробовал удалять данные о компе из домена и регистрироваться по-новой - безрезультатно.
Время с сервером синхронизировано, в /etc/hosts вынь-сервер и фри-машина прописаны - FQDN -имена получаю.Куда смотреть, что делать, где ошибка?
>
>Куда смотреть, что делать, где ошибка?
теже грабли!!!!!!!!!!!!!!!!!!!!уже с 2 недели мучаюсь ..скро уволят нафиг..хотя помню чот на 5 фре и старой самбе все заводилось
вобще есть тут люди которые сумели 3 самбу и 6 фрю в винде через адс прикрутитьесли да напишите версии пакетов и листинг конфигов
xasm
Ладно, сформулирую вопрос иначе: как я уже упомянул, самба с доменом нормально "общается", т.е. команды wbinfo -u, -g, -t, -p, net ... отрабатывают, регистрация в домене проходит успешно, но вот команда "id юзер_домена" оного юзера не находит, то-есть, выходит, что самба не отображает доменных юзеров во фрю. Почему?/etc/nsswitch.conf
===
group: files winbind
hosts: files dns nis
networks: files winbind
passwd: files winbind
shadow: files winbind
shells: files winbind
===
У меня так: (debian)# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.passwd: compat winbind
group: compat winbind
shadow: compathosts: files dns mdns
networks: filesprotocols: db files
services: db files
ethers: db files
rpc: db filesnetgroup: nis
>У меня так: (debian)
Спасибо, попробовал, но результат тот же - никакого результата.
Да и моя вышеприведенная конфигурация вполне себе успешно работает на двух серверах.
Буду курить
> # If you have the `glibc-doc' and `info' packages installed, try:
> # `info libc "Name Service Switch"' for information about this file.
Такая же ситуация случилась при обновлении с 3.0.22 на 3.0.23. Пришлось откатывать обратно... Может в 3.0.23d этого уже нет?? Сам пробовать пока не хочу)
>Такая же ситуация случилась при обновлении с 3.0.22 на 3.0.23. Пришлось откатывать
>обратно... Может в 3.0.23d этого уже нет?? Сам пробовать пока не
>хочу)
Уже дней пять как ковыряю 3.0.23d - ситуация та же. Так что можно и не пробовать - обновление не поможет (мне по крайней мере).
Самое интересное, что новую самбу и под NTLM-аутентификацией в домен не могу загнать. Т.е. вообще никак не идет. А вот старая (3.0.20) - без проблем включается в домен под NT-style...
А у Вас тоже "id юзер_домена" не видела этих злочастных доменных юзеров или в чем-то другом проблема была?
Сейчас уже не подскажу, в августе было дело.. не помню. Не пускала Самба никого на шары. У меня сквид с авторизацией в АД, после обновления самбы - никого в инет пускать не хотел)) поэтому эксперименты закончил пока с этим. Домен win2000 Native. Второй домен Win2003 Native. Samba 3.0.22. Все работает.
Есть контакт! :)
Есть такая либа - nss_winbind.so, создаваемая при сборке в сорцах самбы по пути source/nsswitch/. При установке самбы из сорцов она (либа) никуда не инсталлится. Скопировав ручками ее в /lib и создав на всякий случай симлинк nss_winbind.so.1 самба НАКОНЕЦ-ТО заработала как полноценный член AD.
Вот конфиги, с которыми уже работает (доводить, конечно, еще кое-что нужно).smb.conf
===
[global]
dos charset = 866
unix charset = KOI8-U
workgroup = SGNI
server string = Test
interfaces = 10.5.9.0/24
auth methods = winbind
obey pam restrictions = Yes
password server = 10.5.9.3 10.5.9.6
private dir = /etc/samba
passdb backend = tdbsam
lanman auth = No
ntlm auth = No
client lanman auth = Yes
client plaintext auth = Yes
log level = 10
log file = /var/log/samba/samba.log
max log size = 0
deadtime = 360
paranoid server security = No
max open files = 100000
load printers = No
show add printer wizard = No
os level = 8
preferred master = Yes
dns proxy = No
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind use default domain = Yes
hosts allow = 10.5.9.
map acl inherit = Yes
case sensitive = No
hide unreadable = Yes
security = ADS
realm = 0905.DN.STA
allow trusted domains = Yes
fam change notify = No
client signing = Yes
server signing = Yes
ldap ssl = no
winbind enum users = Yes
winbind enum groups = Yes
winbind nested groups = No
winbind refresh tickets = Yes
[pub]
comment = For sysadmins
path = /pub
guest ok = Yes
valid users="@SGNI\it"
===nsswitch.conf
===
group:files winbind
hosts:files dns nis
networks:files winbind
passwd:files winbind
shadow:files winbind
shells:files winbind
===
РЕСПЕКТ!!! Проверю у себя на досуге, заработает ли. Спасибо, за то что выложили решение проблемы!
После апгрейда c 3.0.22 на 3.0.23 самба перестала пускать на шары с сообщениями в логах:
[2006/12/14 17:28:38, 2] lib/access.c:check_access(323)
Allowed connection from (10.0.0.27)
[2006/12/14 17:28:39, 2] smbd/service.c:make_connection_snum(580)
user 'user_name' (from session setup) not permitted to access this share (share_name)
[2006/12/14 17:28:46, 2] lib/access.c:check_access(323)
Allowed connection from (10.0.0.27)
[2006/12/14 17:28:46, 2] smbd/sesssetup.c:setup_new_vc_session(799)
setup_new_vc_session: New VC == 0, if NT4.x compatible we would close all old resources.
[2006/12/14 17:28:46, 0] libads/authdata.c:decode_pac_data(797)
decode_pac_data: failed to parse PAC
[2006/12/14 17:28:46, 1] smbd/sesssetup.c:reply_spnego_kerberos(310)
Username DOMAIN_NAME+COMPUTER_NAME$ is invalid on this system
[2006/12/14 17:28:46, 2] smbd/sesssetup.c:setup_new_vc_session(799)
setup_new_vc_session: New VC == 0, if NT4.x compatible we would close all old resources.
[2006/12/14 17:28:46, 0] libads/authdata.c:decode_pac_data(797)
decode_pac_data: failed to parse PACsmb.conf не менялся (security=ads)
net ads join проходит нормально
wbinfo -t, wbinfo -u работает нормально
А вот зайти на как раньше с win машин не могу.$ls /usr/local/lib/nss_winbind.so*
/usr/local/lib/nss_winbind.so -> nss_winbind.so.1
/usr/local/lib/nss_winbind.so.1$ cat /etc/nsswitch.conf
group: compat
group_compat: nis
hosts: files dns
networks: files
passwd: compat
passwd_compat: nis
shells: filesПытался прописывать winbind в nsswitch.conf - не помогает. Может неправильно вписывал - а как надо?
Что ещё показать?
Навскидку: похоже, что проблема с Kerberos-билетами:>[2006/12/14 17:28:46, 0] libads/authdata.c:decode_pac_data(797)
> decode_pac_data: failed to parse PAC
PAC - Privilege Attribute Certificate - это Kerberos-данные про юзера, его права, к каким группам он принадлежит и т.п. Судя по ошибке, самба их не может обработать.
Возможно, парсинг этих данных невозможен по следующим причинам:
- в качестве winbind separator используется "+"? Если да - смените на дефолтный, разработчики не рекомендуют использовать "+" как разделитель;
- имена юзеров, которым разрешено/запрещено входить на шару прописаны как @ДОМЕН\юзер? Если нет - пропишите так, ЕМНИП, с версии 3.0.23 это ОБЯЗАТЕЛЬНОЕ условие.>Что ещё показать?
На конфиг самбы можно бы взглянуть... :)
$ grep -Ev '^#|^;|^[ ]*$' /usr/local/etc/smb.conf
[global]
workgroup = DOMAIN
netbios name = GW
message command = /bin/sh -c '/root/bin/winpopup.sh %s %f %m' &
time server = True
server string = GateWay
security = ads
auth methods = winbind
hosts allow = 10.0.0.0/24 127.0.0.1
load printers = no
log file = /var/log/samba/log.%m
max log size = 50
log level = 2
password server = 10.0.0.3
encrypt passwords = yes
nt acl support = Yes
name resolve order = wins host bcast lmhosts
guest ok = No
realm = DOMAIN.LOCAL
socket options = TCP_NODELAY
interfaces = 10.0.0.1 127.0.0.1
bind interfaces only = yes
local master = no
os level = 0
domain master = no
preferred master = no
domain logons = no
wins support = no
wins server = 10.0.0.3
dns proxy = no
display charset = koi8-r
unix charset = koi8-r
dos charset = cp866
#делал по разному: и "+" и "\" и вообще убирал параметр
winbind separator = \
winbind use default domain = yes
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
[pub]
path = /pub
browseable = no
writable = yes
guest ok = no
public = no
printable = no
valid users = DOMAIN\user1 DOMAIN\user2 DOMAIN\user3 DOMAIN\COMPUTER$ user1 user2 user3 COMPUTER$
force user = existing_local_user$ cat /etc/krb5.conf
[libdefaults]
default_realm = DOMAIN.LOCAL
[realms]
DOMAIN.LOCAL = {
kdc = server.domain.local
admin_server = server.domain.local
}
#server.domain.local - win2k domain controllerЧто лучше оставить в winbind separator и в valid users?
>Что лучше оставить в winbind separator и в valid users?
winbind separator - можно вообще из конфига выбросить, по умолчанию там правильный "\"
>>Что лучше оставить в winbind separator и в valid users?
> winbind separator - можно вообще из конфига выбросить, по умолчанию там
>правильный "\"# man smb.conf
/winbind separatorwinbind separator (G)
This parameter allows an admin to define the character used when
listing a username of the form of DOMAIN \fIuser. This parameter is
only applicable when using the pam_winbind.so and nss_winbind.so
modules for UNIX services.Please note that setting this parameter to + causes problems with
group membership at least on glibc systems, as the character + is
used as a special character for NIS in /etc/group.Default: winbind separator = ''
Example: winbind separator = +
winbind separator убрал
valid users = @DOMAIN\user1 @DOMAIN\user2 @DOMAIN\user3 @DOMAIN\COMPUTER$ user1 user2 user3 COMPUTER$Ничего не изменилось - тежи ошибки в логах. :-(
>>Что лучше оставить в winbind separator и в valid users?
> winbind separator - можно вообще из конфига выбросить, по умолчанию там
>правильный "\"А если поставить
winbind separator = \
testparm -a | grep separator:
winbind separator = template shell = /bin/bash
т.е. захватывает следующую строчку [samba-3.0.23d из портов]
Не "\" не '\' не \\ не канают, testparm:ERROR: the 'winbind separator' parameter must be a single character.
Samba-HOWTO-collection/winbind.html:
Example 24.1. smb.conf for Winbind Setup
[global]
# separate domain and username with '\', like DOMAIN\username
winbind separator = \
# use uids from 10000 to 20000 for domain users
...:D)
>Далее пытаюсь зарегистрироваться юзером srvadmin (Администратор домена):
...
>[2006/11/09 10:47:00, 3] smbd/error.c:error_packet(146)
> error packet at smbd/sesssetup.c(315) cmd=115 (SMBsesssetupX) NT_STATUS_LOGON_FAILURE
>===
>Почему, в чем дело? Из-за чего юзер не находится?
>
>Kerberos настроен - самба успешно регистрируется в домене, протокол - вроде как
>5-ый:Может быть это и не в тему:
если используется pam_winbind, нужно в аргументах его вызова krb5_auth для ads, т.е.auth sufficient pam_winbind.so krb5_auth
без него у меня вход под доменным бюджетом не проходил.