Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: Gaara в Apr 04, 2008, 16:58



Титла: Ldap user password
Публикувано от: Gaara в Apr 04, 2008, 16:58
Здравейте,

от известно време тръгнах да изучавам ldap командите и то предимно към AD с Windows 2003 (само за тест). Опитвам се да създам потребителски акаунт (успешно), но единственият проблем, на който не мога да намеря решение е паролата. Четох за сертификатите, за ldaps, криптиране на стойността на параметъра userPassword (използвам следният ред на пърл: perl -e 'print("userPassword: {CRYPT}".crypt("pass","passw")."\n");', unicodePwd и още хиляди неща, но потребителя не може да ползва зададената парола :(. Ако я задам от AD-то, всичко е ОК, но ми се иска да има и друг начин, който да не ползва ldapssl. В най-общи линии, нещата, които права, са:

- създавам файл user.ldif със следното съдържание:
Примерен код

[root@c46 ~]# cat /mnt/test.ldif
dn: ou=deby,dc=ws2003,dc=gaara,dc=com
objectClass: organizationalUnit
ou: deby

dn: cn=john,ou=deby,dc=ws2003,dc=gaara,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: user
cn: john
givenName: john
distinguishedName: CN=john,OU=deby,DC=ws2003,DC=gaara,DC=com
instanceType: 4
displayName: john
name: john
userAccountControl: 512
sAMAccountName: john
legacyExchangeDN: /o=First Organization/ou=First Administrative Group/cn=Recipients/cn=john
userPrincipalName: [EMAIL=john@ws2003.gaara.com]john@ws2003.gaara.com[/EMAIL]
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=ws2003,DC=gaara,DC=com
textEncodedORAddress: c=US;a=;p=First Organizat;o=Exchange;s=john
mail: [EMAIL=john@ws2003.gaara.com]john@ws2003.gaara.com[/EMAIL]
msExchHomeServerName: /o=First Organization/ou=First Administrative Group/cn=Configuration/cn=Servers/cn=EXCH
homeMDB: CN=Mailbox Store (EXCH),CN=First Storage Group,CN=InformationStore,CN=c46,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=First Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=ws2003,DC=gaara,DC=com
mailNickname: john



За да ми е още по-лесно имам и инсталиран exchange (EXCH) :)
Има още атрибути, които трябва да се добавят, но и това ще стане :). Смятам, когато го разбера и да си напиша пърл скрипт, но има още много докато се стигне дотам :)

- Прибаваям потребителя по следният начин:
Примерен код

ldapadd -xcvh 10.191.12.170 -D "ws2003\administrator" -w "password"  -f user.ldif


Всякакви идеи са добре дошли :)

Всичко най-свежо от мен





Титла: Ldap user password
Публикувано от: Ali Nebi в Apr 05, 2008, 00:53
Здравей,

ами по принцип стандартно паротлата се задава по следния начин:

userPassword: {CRYPT}HASHSTOINOST

вместо крипт, ако искаш може да ползваш и SHA, както решиш ти. имаше една команда за генериране на пароли за ldap

man slappasswd

може да видиш как работи.

Надявам се да съм ти разбрал проблема правилно и успял да ти помогна.


Титла: Ldap user password
Публикувано от: Gaara в Apr 05, 2008, 21:01
Здравей,
благодаря за инфото, но и то не помага:(
Целият проблем е, че ако "Minimum password length", на "Password policy"е !0, то параметъра useraccountcontrol не може да се зададе да е 512, т.е. акаунта да е активен. Както и да генерирам тази парола, Windows-a има собствено мнение и все едно този атрибут не се слага. Ако задам минималната дължина да е 0 символа, то спокойно мога да задам userAccountControl=512, а по подразбиране е 543, т.е. не е активиран :(.
Цялата борба се свежда до задаване на парола, която отговаря на политиката на Windows за дължина и най-вече да я приеме. Сега не връща грешка, но все едно този параметър отива в /dev/null :(

Edit: Използвам следният пърл скрипт, ако някой го интересува:
Примерен код

debian:~/ldap# cat ldap.pl
#!/usr/bin/perl
use Net::LDAP;
use strict;

my $server='ws2003.gaara.com';
my $user='administrator@ws2003.gaara.com';
my $password='password';

my $ldap=Net::LDAP->new($server) or die "Could not connect to server: $@\n";
my $bind = $ldap->bind($user, password => $password);
die "Could not bind to server: ", $bind->error if $bind->code;

#Add user
my $ou='Test';
my $u1='Kulu';

my $result=$ldap->add("cn=$u1,ou=$ou,dc=ws2003,dc=gaara,dc=com",
                  attr=>[ cn                => $u1,
                          sn                => $u1,
                          uid               => $u1,
                          objectclass       =>['top','person','organizationalPerson','user'],
                          givenName         => $u1,
                          distinguishedName => "uid=$u1,OU=$ou,DC=ws2003,DC=gaara,DC=com",
                          displayName       => $u1,
                          name              => $u1,
                          samaccountname    => $u1,
                          userprincipalname => $u1.'@ws2003.gaara.com',
                          telephoneNumber   => '359 888 888 888',
                          userpassword      => '{SSHA}mu8+jz70sPPBTJQiwXgtaWaCR9/T5klw',
                          useraccountcontrol=> '512',
                          ]);
$result->code && warn "failed to add entry: ", $result->error;
$ldap->unbind;
debian:~/ldap#

Като предварително съм създал OU=Test :)





Титла: Ldap user password
Публикувано от: Gaara в Apr 07, 2008, 00:24
Интересно е, че ако създадем потребител през AD-то и му видим обектите, през ADSI Edit, то се вижда, че:
- useraccountcontrol е 512
- userpassword не е зададено, т.е. показва not set
- unicodePwd не е зададено

А юзера има парола и може да се логва..... направо ужас :(