Samba en LDAP PDF Afdrukken
Gebruikerswaardering: / 20
LaagsteHoogste 
dinsdag 17 februari 2004 12:06
samba_ldap_kleinSteeds vaker rijst de vraag of mensen die met windows computers een verbinding maken met een linux server via Samba op meerdere computers kunnen inloggen en werken. Daarnaast is het voor het beheer makkelijk om gebruikers aan te maken op een centrale plek. Dat kan heel goed een LDAP server zijn.

Ik geef hier stap voor stap aan hoe je snel een werkende omgeving kan creeren.
Wat heb je nodig
Ik ga er van uit dat je een werkende linux computer hebt waarvan ook het netwerk gedeelte volledig werkt. Ook neem ik aan dat de windows computer(s) op zijn minst de linux server kunnen pingen. Zo niet, zorg eerst dat dat op orde is.

Verder maak ik gebruik van een debian distributie, maar ik probeer alles zo op te schrijven dat je niet te veel problemen moet hebben om het op je eigen linux variant te reproduceren.

Op het moment van schrijven gebruik ik de volgende software packages:
  • samba (3.0.20b)
  • samba-doc (3.0.20b)
  • slapd (2.2.26)
  • ldap-utils (2.2.26)
  • libpam-ldap (178)
  • libnss-ldap (228)
En voor de ldap admin tool
  • apache (1.3.34)
  • php4 (4.4.0)
  • php4-ldap (4.4.0)
  • ldap-account-manager (0.5.1)
Een heel handige tool is phpldapadmin (http://phpldapadmin.sourceforge.net/)

Installatie
De structuur van de ldap database ziet er als volgt uit:
  • base: dc=kovoks,dc=nl
  • admin: cn=admin,dc=kovoks,dc=nl
  • gebruikers: ou=People,dc=kovoks,dc=nl
  • groepen: ou=Groups,dc=kovoks,dc=nl
  • computers: ou=Machines,dc=kovoks,dc=nl
  • domeinen: ou=Domains,dc=kovoks,dc=nl
  • passwords: crypt
Hiermee moet je de installatie wel kunnen doen. Uitgebreide uitleg volgt later.

Configuratie
Na de installatie gaan we eerst de ldap server configureren. Gebruik het programma 'slappaswd -h {crypt}' om een gecrypte versie te krijgen van het wachtwoord van de admin. Het configuratiebestand is: /etc/ldap/slapd.conf.
  • Toevoegen:
    include         /etc/ldap/schema/misc.schema
    include         /etc/ldap/schema/samba.schema
  • Aanpassen:
    suffix "dc=kovoks,dc=nl"
  • Toevoegen onder de optie suffix:
    rootdn          "cn=admin,dc=kovoks,dc=nl"
    rootpw          "{CRYPT}het eerder gevonden wachtwoord"
  • Aanpassen:
    access to attribute=userPassword
            by dn="cn=admin,dc=kovoks,dc=nl" write
            by anonymous auth
            by self write
            by * none
  • Aanpassen:
    access to *
            by dn="cn=admin,dc=kovoks,dc=nl" write
            by * read
We moeten nu nog de toegevoegde schema's installeren. Het samba schema vind je bij de documentatie van samba.
  • cd /usr/share/doc/samba-doc/examples/LDAP
  • gunzip -c samba.schema.gz > /etc/ldap/schema/samba.schema
Voor de zekerheid is het handig om de volgende gegevens aan de ldap database toe te voegen.
  • Maak een bestandje eerste.ldif met de volgende inhoud:
    version: 1
    # Entry 1: dc=kovoks,dc=nl
    dn: dc=kovoks,dc=nl
    dc: kovoks
    objectClass: top
    objectClass: organization
  • Voeg dit aan dat ldap server met het volgende commando:
    ldapadd -W -x -D "cn=admin,dc=kovoks,dc=nl" -f eerste.ldif
    Eindigd dit met een 'Already exists' dan is er niets aan de hand.
Om e.e.a. te kunnen controleren is het nu de beurt aan phpldapadmin. De configuratie hiervoor kun je vinden in /var/www/ldap/config.php
  • Aanpassen:
    $servers[$i]['host'] = 'localhost';
  • Aanpassen:
    $servers[$i]['base'] = 'dc=kovoks,dc=nl';
  • Aanpassen:
    $servers[$i]['auth_type'] = 'form';
  • Aanpassen:
    $servers[$i]['login_dn'] = 'cn=admin,dc=kovoks,dc=nl';
  • Verwijderen:
    $i++;
    $servers[$i]['name'] = 'Another server';
    $servers[$i]['host'] = '';
    $servers[$i]['base'] = 'dc=example,dc=com';
    $servers[$i]['port'] = 389;
    $servers[$i]['auth_type'] = 'config';
    $servers[$i]['login_dn'] = '';
    $servers[$i]['login_pass'] = '';
    $servers[$i]['tls'] = false;
    $servers[$i]['default_hash'] = 'crypt';
    $servers[$i]['login_attr'] = '';
    $servers[$i]['read_only'] = false;
    $servers[$i]['enable_auto_uid_numbers'] = false;
    $servers[$i]['auto_uid_number_mechanism'] = 'search';
    $servers[$i]['auto_uid_number_search_base'] = 'ou=People,dc=example,dc=com';
    $servers[$i]['auto_uid_number_min'] = 1000;
    $servers[$i]['auto_uid_number_uid_pool_dn'] = 'cn=uidPool,dc=example,dc=com';
Let op! Indien je in php ook de mcrypt module hebt ingesteld kan het zijn dat lam ontzettend langzaam werkt. Dit kun je oplossen door het volgende bestand aan te passen:
/etc/php4/apache/php.ini
Zoek daar de regel
    extension=mcrypt.so
op en zet daar een ; voor dus:
    ;extension=mcrypt.so
Herstart apache met /etc/init.d/apache restart.

Nu kun je met je browser inloggen op http://servernaam/ldap/ met als gebruikersnaame cn=admin,dc=kovoks,dc=nl en het eerder opgegeven wachtwoord.
Nadat je bent ingelogd zie je aan de linker kant 1 entry dc=kovoks,dc=nl klik er op om te kijken of er geen foutmeldingen ontstaan.

Ldap account Manager (lam)
  • Ga met je browser naar http://server/lam en klik op 'Configuration login'
  • Klik op 'Configuration Wizzard'
  • Vul in:
    Profile name:  kovoks
    Password: <eerder verzonnen wachtwoord>
    Reenter password: zie boven
    Master Password: lam
  • Klik op next en vul in:
    Server address: ldap://localhost:389
    LDAP admin DN: cn=admin,dc=kovoks,dc=nl
    Password: <eerder verzonnen wachtwoord>
    Samba version: 3
  • Klik op next en vul in:
    UserSuffix: ou=people,dc=kovoks,dc=nl
    GroupSuffix: ou=groups,dc=kovoks,dc=nl
    HostSuffix: ou=machines,dc=kovoks,dc=nl
    DomainSuffix: ou=domains,dc=kovoks,dc=nl
    Password hash type: crypt
    Cache timeout: 5
  • Klik op next en eventueel op 'create' om de suffix(en) te maken.
  • Vul in bij de domain settings:
    Domain: kovoks
    Domain sid: <dit kun je vinden door op de server in te loggen en het command 'net getlocalsid' in te tikken>
    Next rid: <leeg>
    Next User rid: <leeg>
    Next Group rid: <leeg>
    Algorithmic RID base: 1000
    Suffix: ou=domains,dc=kovoks,dc=nl
  • Klik op next en eventueel op 'create' om de essentiele groepen aan te maken.
  • Klik op 'back to login' om terug te gaan.
  • Kies onderaan het nieuw aangemaakte profiel (kovoks) en klik op Change profile.
  • Login met Username: admin en Password:<eerder opgegeven>
  • Klik op 'Profile Editor'
  • Selecteer: 'default' Edit User Profile, gevolgd door submit
  • Pas aan:
    Primary group: domainadmins
    Additional groups: <geen>
    Home directory: /home/$user
    Login shell: /bin/false
    Set unix password: yes
    Password warning: <leeg>
    Password expiry: <leeg>
    Maximum password age: <leeg>
    Minimum password age: <leeg>
    Account expires on: 1 1 2030
    Unix workstations: <leeg>
    Account is deactivated: no
    Set samba password: yes
    Set Unix password for Samba: yes
    Password does not expire: yes
    Account is deactivated: no
    Home drive: h:
    Home path: servernaam$user
    Profile path: servernaamprofiles$user
    Logon script: <leeg>
    Workstations: <leeg>
    Domain: kovoks
  • Klik op save en dan op 'Users'
  • Door op 'New User' te klikken kun je een nieuwe gebruiker aanmaken.
Als eerste moet er een Administrator account aangemaakt worden. Zet daarvoor de volgende informatie in een ldif:
-------------------<administrator.ldif>--------------------
dn: uid=Administrator, ou=people, dc=kovoks, dc=nl
objectClass: account
objectClass: sambaSamAccount
objectClass: posixAccount
gecos: Samba Admin
homeDirectory: /
loginShell: /dev/null
uidNumber: 0
gidNumber: 0
uid: Administrator
sambaPwdLastSet: 1042526918
sambaLogonTime: 0
sambaLogoffTime: 0
sambaKickoffTime: 0
sambaPwdCanChange: 0
sambaPwdMustChange: 0
displayName: Administrator
cn: Administrator
sambaHomePath: %N
sambaHomeDrive: H:
sambaProfilePath: %Nprofile
sambaSID: S-1-5-21-2656270644-2771678393-2525940785-500
sambaPrimaryGroupSID: S-1-5-21-2656270644-2771678393-2525940785-512
sambaLMPassword: 7DDDDD60A3BD71AAAAA65F36030673DD
sambaNTPassword: 6417743DD60A3BD71AAAAA82F4CC21AA
sambaAcctFlags: [UX         ]
-------------------<administrator.ldif>--------------------
Met het volgende commando's kun je dit dan invoeren en het wachtwoord aanpassen:
  • ldapadd -W -x -D "cn=admin,o=kovoks,c=nl" administrator.ldif
  • smbpasswd Administrator <admin_wachtwoord>

Configuratie PAM en NSS
Bij debian testing (17-03-2004) heeft men een goede stap gezet m.b.t. de authenticatie. Alle losse configuratie tools wijzen uiteindelijk naar deze drie bestanden
  • in /etc/pam.d/common-auth voor de bestaande auth regel toevoegen:
    auth    sufficient      pam_ldap.so
    aanpassen:
    auth    sufficient    pam_unix.so try_first_pass
  • in /etc/pam.d/common-password voor de bestaande password regel toevoegen:
    password        sufficient      pam_ldap.so
    aanpassen:
    password        sufficient      pam_unix.so md5 try_first_pass
  • in /etc/pam.d/common-session voor de bestaande session regel toevoegen:
    session optional        pam_ldap.so
    session required        pam_mkhomedir.so skel=/etc/skel umask=0077
  • in /etc/pam.d/common-account voor de bestaande account regel toevoegen:
    account sufficient      pam_ldap.so
  • in /etc/nsswitch.conf pas je de volgende settings aan:
    passwd:         files ldap
    group:          files ldap
    shadow:         files ldap
  • in /etc/libnss-ldap.conf pas je de volgende settings aan:
    base dc=kovoks,dc=nl
    rootbinddn cn=admin,dc=kovoks,dc=nl
Samba configureren:
Dit zijn alleen de aanpassingen op een bestaande samba configuratie
  • in /etc/samba/smb.conf de volgende settings toevoegen:
    domain logons = Yes
    os level = 33
    ldap suffix = dc=kovoks,dc=nl
    ldap machine suffix = ou=machines
    ldap user suffix = ou=people
    ldap group suffix = ou=groups
    ldap admin dn = cn=admin,dc=kovoks,dc=nl
    De volgende setting aanpassen:
    passdb backend = ldapsam
  • Daarna moet je het admin wachtwoord nog opslaan met:
    smbpasswd -w "<admin wachtwoord>"
Computer aanmelden op het domein
Voordat je een computer op een domein kunt aanmelden moet je eerst een computer account aanmaken:
  • Ga naar de LDAP Account Manager (http://server/lam) en log in
  • Klik op Hosts
  • Klik op 'New Host'
  • Zet onder 'Host name' de naam van de COMPUTER die je aan wild melden
  • Klik op 'Create Account'
Daarna moet je de client computer nog aanmelden op het netwerk. Dit dien je te doen onder het Administrator account op de client computer. Om e.e.a soepel te laten verlopen is de volgende actie het makkelijkst. Ik ga wel uit van windows XP:
  • Klik rechts op 'Deze computer' en kies voor beheren
  • Klik op 'lokale gebruikers' -> 'Gebruiker'
  • Klik rechts op 'Administrator' en voor 'Wachtwoord instellen'
  • Vul dan het <admin wachtwoord> in.
  • Opnieuw opstarten en tijdens het opstarten in de veilige modus met netwerkondersteuning gaan (tijdens het opstarten F8 en kiezen, of F5)
  • Log in met Administrator
  • Klik rechts op 'Deze computer' en kies voor eigenschappen
  • Selecteer het tabblad 'Computernaam' en kies voor 'Wijzigen'
  • Geef de domeinnaam 'kovoks' aan
  • Log in met de administrator naam en <admin wachtwoord>
  • Na de welkom melding opnieuw opstarten en je aanmelden op het domein. Vergeet niet voor 'Opties' te kiezen en bij domeinnaam voor Kovoks te kiezen.

{mos_sb_discuss:3}

Commentaar
Toevoegen Zoeken
+/-
Schrijf commentaar
Naam:
Email:
 
Onderwerp:
 
Voer de anti-spam code in die in het plaatje staat.
Gast  - Thanks |200.118.93.xxx |2004-07-26 23:34:25
Nice instructions, i didn't understand anything in 'nl' but i follow english
insturctions and everyting works fine !

Gast  - Tjanks |200.118.93.xxx |2004-11-13 07:08:29
I follow your instructions in Debian Sarge and everything works OK.

Thanks i have started my life with ldap successfull from this page.

Gast  - Een probleem met |80.60.224.xxx |2005-02-09 17:04:54
Alles werkt tot de stap waar staat: 'Login met Username: admin en Password:'
want als username kan ik alleen 'Manager' kiezen en kan daarom niet verder om
mijn profiel aan te passen.



Ik draai de laatste builds van testing, ik hoop dat jullie mij kunnen helpen
want aan google heb ik niets gehad.

Gast  - zelfde probleem |62.177.139.xxx |2005-02-21 18:44:34
zelfde probleem hier, ook de laatste builds van testing, en je kan alleen maar
Manager kiezen

als username, en hier kan je dus niet mee inloggen,

ik heb deze wel aangemaakt via php-ldap,

maar ik kan nu nog steeds niet inloggen.



Gast  - Re: Een probeem met |80.60.224.xxx |2005-04-25 16:10:46
Ik zal even m'n eigen vraag maar beantwoorden voor diegene met hetzelfde
probleem.



Na de configuratie van de server komt in '/var/lib/ldap-account-manager/config/'
een bestand te staan met de naam van het door jou opgegeven domein en de
extensie 'conf', de mijne heette bijvoorbeeld 'bikinibottom.conf'. Het probleem
is dat de ldap-account-manager dit bestand niet kan vinden waardoor je niet kunt
inloggen met je eigen gegevens. Dus hernoem, bikinibottom.conf, in mijn geval,
naar lam.conf en herstart je services en voila, je kunt inloggen.

micha  - Re: Een probleem met |62.58.32.xxx |2005-04-26 11:30:05
Het duurde even voordat ik weer een 'verse' installatie onder handen kreeg.
Maar...



In de ldap-account-manager vindt je rechts onderaan een uitklap menu met
verschillende profielen. Hier kun je het profiel selecteren dat je met de wizard
aangemaakt hebt. Klik dan op [change profile] om dit profiel te activeren.
Gast  - oplossing |82.192.92.xxx |2006-05-13 01:37:40
na administrator.ldif aanmaken moet je deze pushen met:

ldapadd -W -x -D "cn=admin,dc=kovoks,dc=nl" administrator.ldif

ipv ldapadd -W -x -D "cn=admin,o=nbva,c=nl" administrator.ldif



Verder een uitstekend document om mee te beginnen.

ik begin er nu na een paar minuten de opzet van ldap te begrijpen.



bedankt!
Gast  - pam + ldap + nsswitch.conf (/e |193.194.136.xxx |2006-03-02 12:37:28
Bij mij stierven o.a. Samba en Postfix's "proxymap" steeds met een SEGV
fault bij het opzoeken van "groups".



Handige tip: lees "man /etc/libnss-ldap.conf" en voeg een
"nss_base_XXX" toe aan libnss-ldap.conf voor elke "XXX" database
in nsswitch.conf die "ldap" als source gebruikt. Blijkbaar zijn er of
geen defaults in de resolver libraries gezet voor bijv. "groups", of er
is een stomme bug.



Bijvoorbeeld:



nsswitch.conf: "group: compat ldap"

libnss-ldap.conf: "nss_base_group: ou=people,dc=kovoks,dc=nl"



"passwd" lijkt wel te werken zonder "nss_base_passwd", maar
"group" dus niet.



En tegenwoordig staat er meestal "compat" als source in nsswitch.conf,
niet "files". Als je wilt weten wat dat precies doet, dan zijn de
Solaris manpages beter dan die van Debian :-/


<...
Micha  - ldapadd -W -x -D "cn=admin,o= |82.192.92.xxx |2006-05-13 01:37:06
Bedankt voor de melding. Dit foutje heb ik inmiddels aangepast.
test  - test |2001:7b8:3eb:1:.xxx |2010-09-28 16:08:09
test
Laatst aangepast op vrijdag 23 november 2007 17:37
 

Bicolor template supported by Naturalife Greenworld