Pesquisas do Active Directory a partir do Mac vinculado sem credenciais de usuário

3

Um dos meus scripts de inicialização do Mac precisa pegar uma propriedade do AD que não seja uma das que eu possa ver com a ferramenta interna chamada dscl, que é muito limitada a pesquisas de usuários, grupos e computadores. Normalmente, eu faria apenas uma consulta raw do ldap, mas preciso que isso aconteça antes que haja um usuário logado para fornecer credenciais. O dscl embutido obviamente pode obter dados do AD sem que um usuário seja autenticado, então eu suponho que deve haver uma maneira de fazer isso no contexto da conta do computador ou algo assim. Infelizmente meu googlefu falhou completamente até agora.

    
por Geordie Korper 03.06.2011 / 01:46

1 resposta

2

Eu acho que vou responder a minha própria pergunta. Para minhas necessidades, foi em perl, mas deve ser bastante óbvio como fazer o mesmo em um script de shell direto. Eu só precisava pegar as credenciais da máquina do ActiveDirectory.plist

sub get_LDAPEntries
{
    my ($LDAPServer, $LDAPPort, $LDAPsearchbase, $LDAPfilter) = @_;
    my $kerbID = '/usr/libexec/PlistBuddy /Library/Preferences/DirectoryService/ActiveDirectory.plist -c "print :'AD Computer Kerberos ID'"';
    chomp $kerbID;

    my $password = '/usr/libexec/PlistBuddy /Library/Preferences/DirectoryService/ActiveDirectory.plist -c "print :'AD Computer Password'"';
    chomp $password;

    my $LDAPSession = Net::LDAP->new($LDAPServer, port=>$LDAPPort);
    $LDAPSession->bind($kerbID, password => $password) or die("Could not connect to LDAP server.");

    my $results = $LDAPSession->search(base=>$LDAPsearchbase,filter=>$LDAPfilter);

    $results->code && die "There was an error in the LDAP search: " . $results->error;
    $LDAPSession->unbind;

    my @LDAPEntries = $results->entries;

    return @LDAPEntries;
}

Atualização: Isso só funciona no Snow Leopard (10.6). Lion (10.7) armazena a senha do AD no keychain e você precisará usar o utilitário de linha de comando "security" para acessá-la ... o que é francamente meio problemático devido à saída da senha para o stderr enquanto o resto do consulta é enviada para stdout. Eu vou decretar o apoio do Leão como fora do escopo :-P

    
por 08.06.2011 / 02:13