LINUX.ORG.RU
решено ФорумAdmin

Samba + AD, подключение к ресурсам без указания домена

 ,


0

1

Есть домен Active Directory, есть Samba 3.6.18, настроенная как сервер в составе этого домена. Нужно разрешить пользователям подключаться к ресурсам, даже если пользователь заходит с компьютера, не введенного в домен.

Конфиг самбы:

[global]
	dos charset = 866
	workgroup = DOMAIN
	realm = DOMAIN
	server string = %h server (Samba)
	security = ADS
	syslog = 0
	log file = /var/log/samba/log.%m
	max log size = 1000
	name resolve order = wins bcast
	load printers = No
	disable spoolss = Yes
	show add printer wizard = No
	dns proxy = No
	panic action = /usr/share/samba/panic-action %d
	template homedir = /data/samba/%U
;	winbind use default domain = Yes
;	map untrusted to domain = Yes
	idmap config DOMAIN : range = 10000-200000
	idmap config DOMAIN : backend = tdb
	idmap config * : range = 9000-9999
	idmap config * : backend = tdb

[Public]
	comment = Fileshare
	path = /pub
	valid users = @DOMAIN\smbusers
	read list = @DOMAIN\smbusers
	write list = @DOMAIN\smbusers
	read only = No
	create mask = 0777

Закомментированные опции пробовал раскомментировать в разных комбинациях, эффекта 0. Вроде бы на поведение при аутентификации должны влиять именно они. В частности, при включенной опции «winbind use default domain» удалось логиниться в систему по имени доменного пользователя, если еще указать «template shell = /bin/bash». Но к ресурсам все равно не пускает, логи такие:

1) map untrusted to domain = no =>

"check_ntlm_password: sam authentication for user [ user ] FAILED with error NT_STATUS_NO_SUCH_USER
Not using winbind, requested domain [SRV] was for this SAM.

2) map untrusted to domain = yes =>

Got user=[ user ] domain=[WORKGROUP] workstation=[CLIENT] len1=24 len2=128
Mapping user [WORKGROUP]\[ user ] from workstation [CLIENT]
Mapped domain from [WORKGROUP] to [DOMAIN] for user [ user ] from workstation [CLIENT]
check_ntlm_password: winbind authentication for user [ user ] FAILED with error NT_STATUS_NO_SUCH_USER"

При этом:

user@kiborg:~$ smbclient //srv/Public -U DOMAIN\\user
Enter DOMAIN\user's password: 
Domain=[DOMAIN] OS=[Unix] Server=[Samba 3.6.18]
smb: \> quit
user@kiborg:~$ smbclient //srv/Public -U user
Enter user's password: 
session setup failed: NT_STATUS_LOGON_FAILURE
... в обоих случаях.

wbinfo -u и wbinfo -g всё что нужно показывают, net ads info тоже работает нормально. Что интересно: wbinfo -a user проходит plaintext проверку пароля, а вот challenge-response проходит только если запустить через sudo. wbinfo -a DOMAIN\\user проходит проверку в обоих случаях всегда.

Какие есть идеи?

А, забыл еще. Почему-то «getent passwd» не показывает пользователей из домена, хотя «getent passwd user» показывает инфу о доменном пользователе user. Та же фигня с «getent group».

★★★

Последнее исправление: Kiborg (всего исправлений: 2)

Проверил ща, у меня работает, разница в конфигах в том что у меня есть

winbind enum users = yes
winbind enum groups = yes
Ну и вывод testparm приведите

menzoberronzan
()
Ответ на: комментарий от menzoberronzan

На самом деле, этот smb.conf выше и был выводом testparm..

enum users/groups тоже включал - никакого эффекта..

А какая у вас версия самбы?

Kiborg ★★★
() автор топика
Ответ на: комментарий от menzoberronzan

Хмм.. Я целый день с этим провозился, и даже не задумался над этой строчкой :) спасибо за наводку, попробую завтра!

Kiborg ★★★
() автор топика
Ответ на: комментарий от menzoberronzan

Как ни странно, не сработало. Все равно NO_SUCH_USER. Вот текущий smb.conf (из вывода testparm):

[global]
	dos charset = 866
	workgroup = DOMAIN
	realm = DOMAIN
	server string = %h server (Samba)
	security = ADS
	map untrusted to domain = Yes
	syslog = 0
	log file = /var/log/samba/log.%m
	max log size = 1000
	name resolve order = wins bcast
	load printers = No
	disable spoolss = Yes
	show add printer wizard = No
	dns proxy = No
	panic action = /usr/share/samba/panic-action %d
	template homedir = /data/samba/%U
	template shell = /bin/bash
	winbind use default domain = Yes
	idmap config DOMAIN : range = 10000-200000
	idmap config DOMAIN : backend = tdb
	idmap config * : range = 9000-9999
	idmap config * : backend = tdb

[homes]
	valid users = @smbusers
	read only = No
	create mask = 0700
	directory mask = 0700
	browseable = No

[Public]
	comment = Fileshare
	path = /pub
	valid users = @smbusers
	read list = @smbusers
	write list = @smbusers
	read only = No
	create mask = 0777

Kiborg ★★★
() автор топика
Ответ на: комментарий от menzoberronzan

Смысл этих строк в том, чтобы ограничить доступ к шаре только пользователям, внесенным в домене в группу smbusers.

Kiborg ★★★
() автор топика
Ответ на: комментарий от menzoberronzan

Кстати:

smbclient //srv/Public -U \\user
Enter \user's password: 
Domain=[DOMAIN] OS=[Unix] Server=[Samba 3.6.18]
smb: \>

То есть с «пустым» доменом пускает..

Kiborg ★★★
() автор топика
Ответ на: комментарий от Kiborg

Сейчас посмотрел у меня вместо этих четырех строк:

	idmap config DOMAIN : range = 10000-200000
	idmap config DOMAIN : backend = tdb
	idmap config * : range = 9000-9999
	idmap config * : backend = tdb
Вот эти две:
        idmap config * : range = 10000-20000
	idmap config * : backend = tdb
<Бредовая мысль>Может winbind не может раскидать пользователей на 200000 uidов, оттуда и глюки?</Бредовая мысль>

menzoberronzan
()
Ответ на: комментарий от menzoberronzan

Да это странно было бы.. В интернете такие числа в конфигах встречаются, непонятно как в память влазят.

Я пробовал и оставить только *, убрать idmap config DOMAIN, но тоже не работало. Вообще у меня серьезное подозрение именно на tdb backend и настройки, связанные с idmap, потому что последний раз до этого у меня были проблемы именно с внесением пользователей в idmap, и работала эта система только когда я убирал первые две строчки (range, естественно, тоже менял). Завтра попробую с нуля сконфигурировать на другой машине, если руки дойдут - проверю еще раз глюк tdb заодно.

Kiborg ★★★
() автор топика
Ответ на: комментарий от Kiborg

Думаю, проблема в krb.conf - можно взглянуть?
И не стал сравнивать smb.conf вот рабочий, проверенно на версиях 3.2, 3.6, 4.0, 4.1

[global]                                                
interfaces = eth0 lo                               
hosts allow = 192.168.10. 127.               
netbios name = MyComp
workgroup = DOM                                         
password server = 192.168.10.244                        
server string = My Super Comp                               
security = ADS                                          
realm = DOM.LAN                                         
passdb backend = tdbsam                                 
allow trusted domains = yes                             
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
os level = 1
preferred master = No
local master = No                                       
domain master = No                                      
dns proxy = No                                         
ldap ssl = no
strict locking = No                                     
time server = no                                        
auth methods = winbind 
encrypt passwords = yes
winbind use default domain = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes 
log file = /var/log/samba/log.%m
max log size = 1024
log level = 4 
display charset = koi8-r 
unix charset = koi8-r 
dos charset = cp866
nt acl support = yes              

ATAMAH
()
Ответ на: комментарий от ATAMAH

Скорее всего, нет: krb.conf, насколько я понял из man smb.conf, делается самбой на лету (это можно отключить какой-то опцией).

В этом конфиге, по-моему, многовато лишних или специфических опций. Посмотрю поподробнее, когда получится.

Kiborg ★★★
() автор топика

Решил задачу, может кому-то пригодится.

Из багзиллы samba:

The second response sent by NTLMv2 uses a variable length client challenge which includes the domain name

Если на пальцах, то отсюда следует, что поле домена, пришедшее от клиента из недоверенного домена (BOGUS\user), защищено от изменений (наподобие эл. подписи) и samba не может заменить его на DOMAIN для авторизации у AD DC: в этом случае у DC не сойдется подпись и произойдет ошибка «пароль неверен». Поэтому контроллеру домена приходит имя пользователя «BOGUS\user», которое он не может авторизовать, т. к. BOGUS - недоверенный домен. Поэтому и происходит ошибка NO_SUCH_USER.

Однако патч, который исправлял такое поведение, одновременно сломал старое поведение при авторизации по NTLM (см. последние сообщения в обсуждении бага), поэтому я откатился на версию без этого патча (<= 3.6.13). Тем не менее, клиенты, использующие NTLMv2, все равно авторизоваться таким образом не смогут.

Kiborg ★★★
() автор топика
Последнее исправление: Kiborg (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.