URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 60010
[ Назад ]

Исходное сообщение
"Не могу с FreeBSD получить список пользователей из ActiveDir..."

Отправлено sashacrane , 14-Сен-05 06:46 
Мне бы просто получить списой пользователей всего домена MYDOMAIN.RU :)
0. контроллер домена работает в Native mode. Разрешен ли анонимный доступ к просмотру каталога я незнаю как посмотреть. Да не надо мне это, т.к. см. пункт 1.
1. на контроллере завел учетную запись test с паролем 123
2. на контроллере делаю CSVED -b test mydomain.ru 123 -f output.txt
    в результате вижу все чего надо
3. на юниксе поставил Net::LDAP со всеми депендами. Подозреваю что больше ничего и ненадо (керберос, самба, nss_ldap) чтобы решить эту задачу
4. между FreeBSD и контроллером фаервол разрешает обмен пакетами (сеанс с анонимным доступом)
   #> tcpdump
    A.B.C.D.2581 > W.X.Y.Z.389: S ...
    W.X.Y.Z.389 > A.B.C.D.2581: S ...
    A.B.C.D.2581 > W.X.Y.Z.389: . ack 1 ...
    A.B.C.D.2581 > W.X.Y.Z.389: P 1:15(14) ack 1 ...
    W.X.Y.Z.389 > A.B.C.D.2581: P 1:23(22) ack 15 ...
    A.B.C.D.2581 > W.X.Y.Z.389: P 15:77(62) ack 23 ...
    W.X.Y.Z.389 > A.B.C.D.2581: P 23:109(86) ack 77 ...
    A.B.C.D.2581 > W.X.Y.Z.389: P 77:84(7) ack 109 ...
    W.X.Y.Z.389 > A.B.C.D.2581: F 109:109(0) ack 84 ...
    A.B.C.D.2581 > W.X.Y.Z.389: . ack 110 win 57920 ...
    A.B.C.D.2581 > W.X.Y.Z.389: F 84:84(0) ack 110 ...
    W.X.Y.Z.389 > A.B.C.D.2581: . ack 85 ...

7. если подключатся с указанием пароля то выдается сообщение
    The wrong password was supplied or the SASL credentials could not be processed
    а если без него, то идет сначала пауза, буд-то все работает, а потом
    программа молча завершается. Тут уже можно грешить на фильтр, котрый
    я не умею правильно задавать...

6. ну и наконец вот код программы.
#!/usr/bin/perl
use Net::LDAP;
use Net::LDAP::Util qw(ldap_error_text);
use strict;

my $ldap = Net::LDAP->new('mydomain.ru') or die "$@";

#my $mesg = $ldap->bind('cn=test,dc=mydomain,dc=ru',password => '123', version => 3);
my $mesg = $ldap->bind();
$mesg->code && die ldap_error_text($mesg->code);

my $mesg = $ldap->search(
             base => "dc=mydomain, dc=ru",
             filter => "objectClass=user"
        );
$mesg->code && die ldap_error_text($mesg->code);

#foreach my $entry ($mesg->all_entries) { $entry->dump; }

my $max = $mesg->count;
for( my $index = 0 ; $index < $max ; $index++){
    my $entry = $mesg->entry($index);
    my $dn = $entry->dn; # Obtain DN of this entry

    my @attrs = $entry->attributes; # Obtain attributes for this entry.
    foreach my $var (@attrs){
        #get a list of values for a given attribute
        my $attr = $entry->get_value( $var, asref => 1 );
        if ( defined($attr) ){
            foreach my $value ( @$attr ){
                print "$var: $value\n";  # Print each value for the attribute.
            }
        }
    }
}

$ldap->unbind;


Содержание

Сообщения в этом обсуждении
"Не могу с FreeBSD получить список пользователей из ActiveDir..."
Отправлено argo , 14-Сен-05 14:07 
Без пароля он естественно не отдаст юзверей, поэтому раскомментируйте и исправьте строку
my $mesg = $ldap->bind('cn=test,cn=Users,dc=mydomain,dc=ru',password => '123', version => 3);
Пользователи в AD находятся в контейнере Users