Спасибо за ответ.
Насчёт скрипта мне на одном форуме написали:
"
Думаю, что такой скрипт на shell написать нельзя, поскольку в
результате должна получиться загружаемая библиотека с
соответствующим API. Но, написание таких модулей, к примеру на
Python, кажется, возможно.
"
Это неправда?
Задача и состоит в том, чтобы ничего на сервере не менять и администраторской учётной записи вообще не использовать.
Насчёт ldapsearch.
На вин.машине, входящей в домен, пользователей которого нужно авторизовать на лин.машине, nltest /dsgetdc:domain выдаёт:
"
DC: \\server.domain
Address: \\xxx.xxx.x.xxx
Dom Guid: c6d56383-2f9d-4236-9644-628653063863
Dom Name: domain
Forest Name: domain
Dc Site Name: Default-First-Site-Name
Our Site Name: Default-First-Site-Name
Flags: PDC GC DS LDAP KDC TIMESERV GTIMESERV WRITABLE DNS_DC DNS_DOMAIN DNS_FOREST CLOSE_SITE
The command completed successfully
"
Я пробовал менять в предложенном Вами скрипте и на server.domain, и просто на domain, и с параметром "REFERRALS off" в ldap.conf (не знаю, что он означает), и без, используя учётную запись, при помощи которой ldp.exe на упомянутой машине прекрасно осуществляет bind (правда, если введён правильный пароль) c результатом:
"
res = ldap_bind_s(ld, NULL, &NtAuthIdentity, 1158); // v.3
{NtAuthIdentity: User='user'; Pwd= <unavailable>; domain = 'domain'.}
Authenticated as dn:'user'.
"
Результат же запуска скрипта один:
"
SASL/GSSAPI authentication started
ldap_sasl_interactive_bind_s: Local error (-2)
"
В значении параметра ldap_common_filter ничего не нужно было менять?
Может, нужно было ещё и запрос пароля включить?
И почему, вообще, идёт SASL (я, конечно, могу и ошибаться, но, кажется, если используется не безопасное соединение, а по 389 порту, то такой ошибки появляться не должно)?
А следующий вывод на подрубленной к домену виндовой машине ldap.exe при выполнении bind никак не может здесь подсказать, что ещё нужно изменить в скрипте:
"
ld = ldap_open("", 389);
Established connection to .
Retrieving base DSA information...
Result <0>: (null)
Matched DNs:
Getting 1 entries:
>> Dn:
1> currentTime: 12/25/2009 18:24:41 ;
1> subschemaSubentry: CN=Aggregate,CN=Schema,CN=Configuration,DC=domain;
1> dsServiceName: CN=NTDS Settings,CN=SERVER,CN=Servers,CN=Default-First-Site-Name,CN= Sites,CN=Configuration,DC=domain;
5> namingContexts: DC=domain; CN=Configuration,DC=domain; CN=Schema,CN=Configuration,DC=domain; DC=DomainDnsZones,DC=domain; DC=ForestDnsZones,DC=domain;
1> defaultNamingContext: DC=domain;
1> schemaNamingContext: CN=Schema,CN=Configuration,DC=domain;
1> configurationNamingContext: CN=Configuration,DC=domain;
1> rootDomainNamingContext: DC=domain;
23> supportedControl: 1.2.840.113556.1.4.319; 1.2.840.113556.1.4.801; 1.2.840.113556.1.4.473; 1.2.840.113556.1.4.528; 1.2.840.113556.1.4.417; 1.2.840.113556.1.4.619; 1.2.840.113556.1.4.841; 1.2.840.113556.1.4.529; 1.2.840.113556.1.4.805; 1.2.840.113556.1.4.521; 1.2.840.113556.1.4.970; 1.2.840.113556.1.4.1338; 1.2.840.113556.1.4.474; 1.2.840.113556.1.4.1339; 1.2.840.113556.1.4.1340; 1.2.840.113556.1.4.1413; 2.16.840.1.113730.3.4.9; 2.16.840.1.113730.3.4.10; 1.2.840.113556.1.4.1504; 1.2.840.113556.1.4.1852; 1.2.840.113556.1.4.802; 1.2.840.113556.1.4.1907; 1.2.840.113556.1.4.1948;
2> supportedLDAPVersion: 3; 2;
12> supportedLDAPPolicies: MaxPoolThreads; MaxDatagramRecv; MaxReceiveBuffer; InitRecvTimeout; MaxConnections; MaxConnIdleTime; MaxPageSize; MaxQueryDuration; MaxTempTableSize; MaxResultSetSize; MaxNotificationPerConn; MaxValRange;
1> highestCommittedUSN: 44295516;
4> supportedSASLMechanisms: GSSAPI; GSS-SPNEGO; EXTERNAL; DIGEST-MD5;
1> dnsHostName: server.domain;
1> ldapServiceName: domain:server$@DOMAIN;
1> serverName: CN=SERVER,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN= Configuration,DC=domain;
3> supportedCapabilities: 1.2.840.113556.1.4.800; 1.2.840.113556.1.4.1670; 1.2.840.113556.1.4.1791;
1> isSynchronized: TRUE;
1> isGlobalCatalogReady: TRUE;
1> domainFunctionality: 0;
1> forestFunctionality: 0;
1> domainControllerFunctionality: 2;
-----------
res = ldap_bind_s(ld, NULL, &NtAuthIdentity, 1158); // v.3
{NtAuthIdentity: User='user'; Pwd= <unavailable>; domain = domain.}
Authenticated as dn:'user'.
"
Тот же результат и при анонимном подсоединении, только вместо "user" выдаёт "NULL" (методы: SSPI, NTLM).
(Выдаёт именно с такой абракадаброй - что-то, видать, с кодировкой не так)
Если убрать Synchronous:
"
Error <-1>: ldap_bind() failed: Ëîêàëüíàÿ îøèáêà
"
Если же выбрать метод Simple, не убрав пользователя (домен при этом не проставляется), то:
с Use auth. identit. -
"
Error <49>: ldap_simple_bind_s() failed: Íåïðàâèëüíûå ó÷åòíûå äàííûå
"
без -
"
Error <52>: ldap_simple_bind_s() failed: Íåò äàííûõ
"
Если же - SASL или OTHERKIND (домен при этом тоже не проставляется):
"
Error <7>: ldap_bind_s() failed: Ìåòîä ïðîâåðêè ïîäëèííîñòè íå ïîääåðæèâàåòñÿ.
"
SICILY, не убрав пользователя (домен при этом не проставляется):
"
Error <90>: ldap_bind_s() failed: Íåäîñòàòî÷íî ïàìÿòè.
"
MSN (домен при этом тоже не проставляется):
"
Error <86>: ldap_bind_s() failed: Ðåçóëüòàò ïðîâåðêè íåèçâåñòåí.
"
DPA:
без введённого пользователя, но
"
Error <86>: ldap_bind_s() failed: Ðåçóëüòàò ïðîâåðêè íåèçâåñòåí.
"
без Use auth. identit. -
"
Error <85>: ldap_bind_s() failed: Òàéìàóò.
"
с введённым пользователем, но без Use auth. identit. -
"
Error <90>: ldap_bind_s() failed: Íåäîñòàòî÷íî ïàìÿòè.
"
DIGEST:
подрубается либо с введённым пользователем и с Use auth. identit., либо без и без;
с и без -
"
Error <89>: ldap_bind_s() failed: Îøèáêà â ïàðàìåòðå.
"
без и с -
"
Error <82>: ldap_bind_s() failed: Ëîêàëüíàÿ îøèáêà.
"
?
С созданием домашнего каталога с профилем по умолчанию (который по умолчанию находится в /etc/skel/, и который я обычно перезаписываю домашней директорией настроенного пользователя, после чего у вновь создаваемых пользователей оказываются ВСЕ эти и консольные, и графические настройки) при первой загрузке у, по крайней мере, вручную создаваемых локальных пользователей проблем нет.
Я не совсем понял, что значит: "Можно также вместо ldapsearch попробовать использовать модуль pam_ldap". Естественно, я пробовал использовать, находящийся в составе дистр-а pam_ldap, но как он может сработать, если не срабатывает применённый для проверки связи по ЛДАП ldapsearch?