Помогите разобраться с LDAP'ом

Обсуждение технических вопросов по продуктам Novell

Помогите разобраться с LDAP'ом

Сообщение BDmV » 21 янв 2008, 15:31

При попытке найти объект по маске (cn=*) получаю
cn=Server1 SMS RPC, o=Org
cn=Server SMS RPC, o=Org
cn=Server-GW, o=Org
хотя, по идее, как я понимаю, под такой шаблон должны попасть и все юзера, имеющиеся в дереве.
Для поиска использую ldapbrowse282 и ldap_test.php из набора NVStat

Сервера NW6.0 SP4/SP5, LDAP последний 2007-10-04, eDir 8.6.2
BDmV
 
Сообщения: 224
Зарегистрирован: 17 апр 2003, 20:24
Откуда: г. Видное

Сообщение v13 » 21 янв 2008, 16:35

А каким юзером смотришь? анонимным?
Аватара пользователя
v13
 
Сообщения: 660
Зарегистрирован: 31 авг 2007, 09:07

Сообщение BDmV » 21 янв 2008, 17:05

v13 писал(а):А каким юзером смотришь? анонимным?

Да.

Не ананимом я вообще законектится не могу.. :(
BDmV
 
Сообщения: 224
Зарегистрирован: 17 апр 2003, 20:24
Откуда: г. Видное

Сообщение v13 » 21 янв 2008, 17:10

Анонимный пользователь использует не соврать бы права "public" на дерево.
Может элементарно не хватать прав.
Можно или создать пользователя с необходимыми правами и заходить им.
Если просто "попробовать" то зайди админом.

Пользователя надо вводить в ldap формате, типа:
cn=user,ou=someou,o=someorg
Использовать именно запятые!
Аватара пользователя
v13
 
Сообщения: 660
Зарегистрирован: 31 авг 2007, 09:07

Сообщение BDmV » 21 янв 2008, 17:14

Так я ж дерево ldapbrowse'ом вижу нормально всё... А вот при попытке отсеять пользователей по имени, никого не вижу...
т.е. LDAP отказывается нормально искать.
Если я задаю маску (objectclass=inetOrgPerson) то мне выдаются все пользователи, а мне нужен юзер с конкретным именем
BDmV
 
Сообщения: 224
Зарегистрирован: 17 апр 2003, 20:24
Откуда: г. Видное

Сообщение v13 » 21 янв 2008, 17:24

фильтр cn=name должен работать если браузером всё видишь.
вот например я счас попробовал.

-bash-2.05b# ldapsearch -x -h nw1 cn=v13
# extended LDIF
#
# LDAPv3
# base <> with scope subtree
# filter: cn=v13
# requesting: ALL
#

# v13, myorg
dn: cn=v13,o=myorg
loginShell: /bin/sh
mail: v13@spam.here
telephoneNumber: 30-13
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: Person
objectClass: Top
objectClass: ndsLoginProperties
description: sysadmin
cn: v13

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1
Аватара пользователя
v13
 
Сообщения: 660
Зарегистрирован: 31 авг 2007, 09:07

Сообщение v13 » 21 янв 2008, 17:49

Попробовал ldapbrowser-ом, действительно не показывает юзера, если юзер находится в ou.
Чтоб туда дойти фильтр не пускает.
А если юзер в корне, то нормально показывает.
Ну собственно ldapbrowser так и должен себя вести, всё логично.
Аватара пользователя
v13
 
Сообщения: 660
Зарегистрирован: 31 авг 2007, 09:07

Сообщение BDmV » 21 янв 2008, 17:55

Я понимаю, что если дерево видит, то и искать должен, но он не ищет, тоесть ищет но не то. :(
И ищу я в o=Org...

А существуют ли, какие нить утилитки под нетварь для рабботы с ldap'ом?
BDmV
 
Сообщения: 224
Зарегистрирован: 17 апр 2003, 20:24
Откуда: г. Видное

Сообщение v13 » 21 янв 2008, 18:13

Ты определись что тебе нужно, искать или браузить.
Какая задача то.
Аватара пользователя
v13
 
Сообщения: 660
Зарегистрирован: 31 авг 2007, 09:07

Сообщение BDmV » 21 янв 2008, 18:43

Мне надо NVStat пустить и путём исключения я прищёл к выводу, что логануться в NVStat я не могу из за того, что на запрос поиска по маске (&(cn=user1)(objectclass=inetOrgPerson)) Ldap ничего возвращает. :(

ЗЫ. Всё гениальное просто, мож и у меня где нить "галочки" не хватает. :( поэтому и не работает.
BDmV
 
Сообщения: 224
Зарегистрирован: 17 апр 2003, 20:24
Откуда: г. Видное

Сообщение Иван Левшин aka Ivan L. » 21 янв 2008, 18:44

Кгхм... Брать доку по едиректори и вдумчиво читать - что такое права, как они назначаются и вычисляются.

По ситуации - лично я предполагаю, что грабли:
1. В назначении прав по дереву - [Public], похоже, порезан (для справки - [Public] являются все НЕЗАРЕГИСТРИРОВАННЫЕ соединения. Т.е. тот же анонимус - именно паблик.
2. В конфигурации непосредственно лдап-сервера (это я про то, что зайти не можешь).

В общем, курить доку и править конфиг надо.
Иван Левшин aka Ivan L.
 
Сообщения: 2592
Зарегистрирован: 05 июн 2002, 18:36
Откуда: Новомосковск, Тул. обл.

Сообщение v13 » 21 янв 2008, 19:15

BDmV писал(а):Мне надо NVStat пустить и путём исключения я прищёл к выводу, что логануться в NVStat я не могу из за того, что на запрос поиска по маске (&(cn=user1)(objectclass=inetOrgPerson)) Ldap ничего возвращает. :(

ЗЫ. Всё гениальное просто, мож и у меня где нить "галочки" не хватает. :( поэтому и не работает.


На ближайшем юниксе попробуй комманду:

ldapsearch -x -h nwserver "(&(cn=user1)(objectclass=inetOrgPerson))"
или качни портированный ldapsearch.exe с инета

также неплохо бы включить дебаг ldap сервера да посмотреть что за запросы на него идут.
Аватара пользователя
v13
 
Сообщения: 660
Зарегистрирован: 31 авг 2007, 09:07

Сообщение Ковалев Артем » 21 янв 2008, 19:29

Ну держи.
Код: Выделить всё
#!/usr/local/bin/perl

use Net::LDAP;
use IO::Socket;

my $ldap_server ='10.11.0.31';
my $attrlist    = ["cn","networkAddress"];

$ldap = Net::LDAP->new( $ldap_server ) or die "$@";

$mesg = $ldap->bind ;    # an anonymous bind

$mesg = $ldap->search( # perform a search
                        base   => "c=RU",
                        filter => "(&(objectclass=user)(cn=*))"
#         attrs  => $attrlist
                      );

$mesg->code && die $mesg->error;

foreach $entry ($mesg->entries) {
     $entry->dump; next;
    my $first = 0;
    print "dn: ".$entry->dn."\n";
    my @attrs = $entry->attributes;
    foreach my $attr (@attrs) {
   my $q;
   my @value = $entry->get_value($attr);
   foreach my $value (@value) {
       if ($attr eq "networkAddress") {
      $q = bin2str($value);
      if ($first == 1) { next; }
      $first = 1;
       } else {
      $q = $value;
       }
       print "$attr: $q\n";
   }
    }
    print "---------------------------------------------------\n";
}

$mesg = $ldap->unbind;   # take down session

exit;

sub bin2str {
    my $bin = shift;
    my $res = "";
   
    my ($a0,$a1,$a,$b,$c,$d) = unpack("C6", $bin);
    $res="$a\.$b\.$c\.$d";
   
    return $res;
};

Этим я банально ищу юзеров по всему дереву. RU - это верхний объект моего дерева.
берем картину мироздания и тупо смотрим - что к чему...
Аватара пользователя
Ковалев Артем
 
Сообщения: 924
Зарегистрирован: 29 мар 2004, 11:44
Откуда: Москва

Сообщение Мещеряков Андрей » 22 янв 2008, 09:17

v13 писал(а):Анонимный пользователь использует не соврать бы права "public" на дерево.
Может элементарно не хватать прав.
Можно или создать пользователя с необходимыми правами и заходить им.
Если просто "попробовать" то зайди админом.

Пользователя надо вводить в ldap формате, типа:
cn=user,ou=someou,o=someorg
Использовать именно запятые!

А вот и неправильно :) Anonymous-u права на просмотр дерева даются явно. Причем как правило с того O, которое будет просматриваться. Потом его надо указать как прокси-пользователя для самого LDAPa. Описано где-то было.
Аватара пользователя
Мещеряков Андрей
 
Сообщения: 1999
Зарегистрирован: 19 сен 2002, 14:55
Откуда: lipetsk

Сообщение Владимир Горяев » 22 янв 2008, 10:32

Закладку именно про то потерял, зато есть вот что. Там есть кусок про разруливание прав для анонима и прокси-пользователя.
Бардак автоматизировать невозможно!!!
_________________
Аватара пользователя
Владимир Горяев
 
Сообщения: 3473
Зарегистрирован: 05 июн 2002, 13:37
Откуда: Смоленск

След.

Вернуться в Novell

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3