Столкнулся с такой проблемой…
У нас в LDAP хранятся пользователи, у каждого из которых есть по несколько uid вида username@some.domain. Стоит еще Samba, которая привязана к LDAP.
К серверу Samba 3.0 не могут подключиться клиент smbclient (3.2) и Windows Vista, потому что они не передают полностью логин (вырезают часть username, т.е. все до собаки). (smbclient 3.0 и Windows XP при этом подключаются нормально.)
Обновил сервер до Samba 3.2. Теперь к нему не может подключиться никто. Почему? На небольшой log level показывали вот такую ошибку: «init_sam_from_ldap: No uid attribute found for this user!»
После увеличения log level до 10 и прочтения этих размышлений я тоже увидел: «attribute uid has 4 values, expected only one».
Оказывается, Samba-сервер начиная с версии 3.2 не поддерживает т.н. multivalued uids (множественные значения). При этом для LDAP (OpenLDAP) такое положение вещей является нормальным.
Вопрос: что делать, чтобы люди смогли авторизоваться по Samba? В LDAP обязательно нужно оставить каждому пользователю по несколько uid.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Похоже, проблему тривиально не решить (всякий mapping на уровне NSS не предлагать :P).
Написал простейший патчик для Samba 3.2.8. Пробую собрать. О результатах доложу…
С патчиком возникли проблемы. ЗАТО Я ТУТ ТАКОЕ НАШЕЛ!
(Исходники Samba 3.2.8, файл source/include/includes.h.)
Продолжаем этот увлекательный блог.
Пофиксил эту штуку в сервере. Теперь с smbclient 3.0 подключение проходит нормально. Но с smbclient 3.2 по-прежнему вырезается все после «@» в логине…
Я так и не понял, это фича или баг?
Я так понимаю, что фича (ну, судя по коду, сие сделано специально). Не нашел подробностей и объяснений, почему так. В OpenLDAP, напомню, никто не мешает «вручать» записи по пачке uid’ов и кое-где это очень удобно; все другие сервисы к такому положению вещей относятся нормально.
Может, этого какая-нибудь совместимость с AD требует? Типа, в 3.2 же большой прогресс в этом направлении обещался…
В общем, подводя итоги этого замечательного дня, могу сказать, что сейчас требуется научить smbclient 3.2.x нормально передавать имя пользователя с «@» (до сервера Samba 3.2, судя по логам, доходит лишь кусок до «@», как было и в случае Samba 3.0). В чем здесь проблема — ума не приложу. Возможно, smbclient думает о том, что «@» является каким-то спецзнаком…
Попробуй его экранировать '\@’, вдруг поможет.
А-ха-ха!! Спасибо, друг ;-)
Я пробовал smbclient с:
и
Не помогало. Но сработало с твоим вариантом:
При этом, что интересно, в smbclient 3.0 работало без всяких этих хитростей вообще, т.е. так:
Но! В убунтовском Nautilus по-прежнему не монтируется шара (ни под username@something, ни под username\@something). Вероятно, и он как-то по-своему интерпретирует эту «собачку». А я думал — у всего одна причина…
И с вистой надо еще отдельно разбираться. Но теперь жить стало проще и веселее.
P.S. Мой «патчик» (одна строка изменена всего) для того, чтобы Samba 3.2 дружила с ldap-записями с кучей uid’ов, лежит тут: http://shurupov.ru/pub/dev/samba/ (там же чуть поправленный gentoo ebuild для 3.2.8 — добавлено наложение этого патча).