Samba és LDAP

Ez a fejezet a Samba beállításáról szól LDAP használatára a felhasználó-, csoport-, és gépi fiókinformációkhoz és hitelesítésre. Feltételezzük, hogy már van egy működő OpenLDAP címtára telepítve, és a kiszolgáló be van állítva annak használatára hitelesítéshez. Az OpenLDAP beállításával kapcsolatos információkért lásd a „OpenLDAP kiszolgáló” és „LDAP hitelesítés” szakaszokat. A Samba telepítésével és beállításával kapcsolatos információkért lásd: 17. fejezet - Windows hálózat

Telepítés

Három csomag szükséges a Samba-LDAP integrációhoz: a samba, samba-doc és smbldap-tools csomagok. A csomagok telepítéséhez adja ki a következő parancsot:

sudo apt-get install samba samba-doc smbldap-tools

Szigorúan véve az smbldap-tools csomag nem szükséges, de ha nincs másik csomagja vagy egyéni parancsfájlja, akkor szükség van rá a felhasználók, csoportok és számítógépes fiókok kezeléséhez.

OpenLDAP beállítása

Ahhoz, hogy a Samba az OpenLDAP-t használja passdb háttérprogramként, a címtár felhasználóobjektumainak további attribútumokkal kell rendelkezniük. Ez a szakasz feltételezi, hogy a Sambát Windows NT tartományvezérlőként szeretné beállítani, és bemutatja a szükséges LDAP-objektumok és -attribútumok felvételét.

  • A Samba-attribútumok a samba.schema fájlban vannak megadva, amely a samba-doc csomag része. A sémafájlt ki kell bontani, és át kell másolni az /etc/ldap/schema alá. Adja ki a következő parancsot:

    sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/
    sudo gzip -d /etc/ldap/schema/samba.schema.gz
    
  • A samba sémát fel kell venni a cn=config fába. Az új séma slapd démonba felvételének eljárását a „További beállítások” szakasz ismerteti.

    1. Első lépésként hozzon létre egy schema_convert.conf vagy hasonló beszédes nevű konfigurációs fájlt, a következő tartalommal:

      include /etc/ldap/schema/core.schema
      include /etc/ldap/schema/collective.schema
      include /etc/ldap/schema/corba.schema
      include /etc/ldap/schema/cosine.schema
      include /etc/ldap/schema/duaconf.schema
      include /etc/ldap/schema/dyngroup.schema
      include /etc/ldap/schema/inetorgperson.schema
      include /etc/ldap/schema/java.schema
      include /etc/ldap/schema/misc.schema
      include /etc/ldap/schema/nis.schema
      include /etc/ldap/schema/openldap.schema
      include /etc/ldap/schema/ppolicy.schema
      include /etc/ldap/schema/samba.schema
      
    2. Ezután hozzon létre egy átmeneti könyvtárat a kimenet tárolásához:

      mkdir /tmp/ldif_output
      
    3. Most az slapcat használatával konvertálja a sémafájlokat:

      slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}samba,cn=schema,cn=config" > /tmp/cn=samba.ldif
      

      Módosítsa a fenti fájl- és útvonalneveket a sajátjainak megfelelően.

    4. Edit the generated /tmp/cn\=samba.ldif file by removing {XX} at the top of the file, where "{XX}" is the index number in curly braces:

      dn: cn=samba,cn=schema,cn=config
      ...
      cn: samba
      

      Távolítsa el a következő sorokat a fájl aljáról:

      structuralObjectClass: olcSchemaConfig
      entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95
      creatorsName: cn=config
      createTimestamp: 20080827045234Z
      entryCSN: 20080827045234.341425Z#000000#000#000000
      modifiersName: cn=config
      modifyTimestamp: 20080827045234Z
      
      [Megjegyzés]

      Az attribútumértékek eltérők lesznek, győződjön meg róla, hogy eltávolította az attribútumokat.

    5. Végül az ldapadd segédprogrammal vegye fel az új sémát a címtárba:

      ldapadd -x -D cn=admin,cn=config -W -f /tmp/cn\=samba.ldif
      

    Ekkor létre kellett jönnie egy dn: cn={X}misc,cn=schema,cn=config elemnek, amelyben az X a soron következő sémabejegyzés a cn=config fában.

  • Másolja a következőket egy samba_indexes.ldif nevű fájlba:

    dn: olcDatabase={1}hdb,cn=config
    changetype: modify
    add: olcDbIndex
    olcDbIndex: uidNumber eq
    olcDbIndex: gidNumber eq
    olcDbIndex: loginShell eq
    olcDbIndex: uid eq,pres,sub
    olcDbIndex: memberUid eq,pres,sub
    olcDbIndex: uniqueMember eq,pres
    olcDbIndex: sambaSID eq
    olcDbIndex: sambaPrimaryGroupSID eq
    olcDbIndex: sambaGroupType eq
    olcDbIndex: sambaSIDList eq
    olcDbIndex: sambaDomainName eq
    olcDbIndex: default sub
    

    Az ldapmodify segédprogrammal töltse be az új indexeket:

    ldapmodify -x -D cn=admin,cn=config -W -f samba_indexes.ldif
    

    Ha minden jól ment, az ldapsearch segítségével láthatja az új indexeket:

    ldapsearch -xLLL -D cn=admin,cn=config -x -b cn=config -W olcDatabase={1}hdb
    
  • Ezután állítsa be az smbldap-tools csomagot a környezetének megfelelően. A csomag tartalmaz egy beállító parancsfájlt, amely kérdéseket tesz fel a szükséges beállításokról. A futtatásához adja ki a következőt:

    sudo gzip -d /usr/share/doc/smbldap-tools/configure.pl.gz
    sudo perl /usr/share/doc/smbldap-tools/configure.pl
    

    A kérdések megválaszolása után létre kell jönnie egy /etc/smbldap-tools/smbldap.conf és egy /etc/smbldap-tools/smbldap_bind.conf nevű fájlnak. Ezeket a fájlokat a beállító parancsfájl állítja elő, így ha a parancsfájl futtatásakor eltéveszt valamit, egyszerűbb lehet a fájl közvetlen szerkesztése.

  • Az smbldap-populate parancsfájl felveszi a Samba által igényelt felhasználókat, csoportokat és LDAP-objektumokat. A parancs végrehajtása előtt jó ötlet LDIF-formátumú biztonsági mentést készíteni az slapcat segítségével:

    sudo slapcat -l backup.ldif
    
  • A naprakész biztonsági mentés elkészülte után hajtsa végre az smbldap-populate parancsot:

    sudo smbldap-populate
    
    [Megjegyzés]

    A sudo smbldap-populate -e samba.ldif végrehajtásával létrehozhat egy, az új Samba-objektumokat tartalmazó LDIF-fájlt. Ez lehetővé teszi a változtatások áttekintését, így meggyőződhet arról, hogy minden rendben ment.

Az LDAP-címtár most rendelkezik a szükséges tartományinformációkkal a Samba-felhasználók hitelesítéséhez.

Samba beállítása

A Samba több módon is beállítható. Az egyes gyakoribb beállításokkal kapcsolatban nézze meg a 17. fejezet - Windows hálózat szakaszt. A Samba LDAP használatára való beállításához szerkessze az /etc/samba/smb.conf nevű elsődleges Samba konfigurációs fájlt, és vegye ki megjegyzésből a passdb backend beállítást, valamint vegye fel a következőket:

#   passdb backend = tdbsam

# LDAP Settings
   passdb backend = ldapsam:ldap://gépnév
   ldap suffix = dc=példa,dc=hu
   ldap user suffix = ou=Emberek
   ldap group suffix = ou=Csoportok
   ldap machine suffix = ou=Számítógépek
   ldap idmap suffix = ou=Idmap
   ldap admin dn = cn=admin,dc=példa,dc=hu
   ldap ssl = start tls
   ldap passwd sync = yes
...
   add machine script = sudo /usr/sbin/smbldap-useradd -t 0 -w "%u"

Az új beállítások életbe léptetéséhez indítsa újra a samba démont:

sudo restart smbd
sudo restart nmbd

A Sambának ismernie kell az LDAP admin jelszót. Adja ki a következő parancsot:

sudo smbpasswd -w titok
[Megjegyzés]

A titok helyére az LDAP admin jelszót írja.

Ha vannak felhasználók az LDAP-ban, és szeretné hogy azok a Samba használatával jelentkezzenek be, akkor meg kell adnia néhány Samba attribútumot a samba.schema fájlban. A meglévő felhasználókhoz a Samba attribútumokat az smbpasswd segédprogrammal adja hozzá, a felhasználónév helyére a meglévő felhasználó nevét írva:

sudo smbpasswd -a felhasználónév

Ezután a program bekéri a felhasználó jelszavát.

Új felhasználó, csoport és gépi fiókok felvételéhez használja az smbldap-tools csomag segédprogramjait. Néhány példa:

  • Adja ki a következőt új felhasználó felvételéhez az LDAP-ba Samba attribútumokkal, a felhasználónév helyére a meglévő felhasználó nevét írva:

    sudo smbldap-useradd -a -P felhasználónév
    

    A -a kapcsoló felveszi a Samba attribútumokat, a -P kapcsoló pedig meghívja az smbldap-passwd segédprogramot a felhasználó létrehozása után, lehetővé téve a felhasználó jelszavának megadását.

  • Adja ki a következőt felhasználó eltávolításához a címtárból:

    sudo smbldap-userdel felhasználónév
    

    Az smbldap-userdel segédprogram rendelkezik egy -r kapcsolóval is a felhasználó saját könyvtárának eltávolításához.

  • Csoport hozzáadásához használja az smbldap-groupadd segédprogramot, a csoportnév helyett a megfelelő csoport megadásával:

    sudo smbldap-groupadd -a csoportnév
    

    Az smbldap-useradd segédprogramhoz hasonlóan a -a kapcsoló felveszi a Samba attribútumokat.

  • Felhasználó csoporthoz adásához használja az smbldap-groupmod parancsot:

    sudo smbldap-groupmod -m felhasználónév csoportnév
    

    A felhasználónév helyére egy valódi felhasználó nevét írja. A -m kapcsolóval egyszerre több felhasználót is megadhat vesszőkkel elválasztott formátumban felsorolva őket.

  • Az smbldap-groupmod felhasználó csoporból történő eltávolítására is használható:

    sudo smbldap-groupmod -x felhasználónév csoportnév
    
  • Ezen kívül az smbldap-useradd segédprogrammal gépi Samba fiókokat is felvehet:

    sudo smbldap-useradd -t 0 -w felhasználónév
    

    A felhasználónév helyére a munkaállomás gépnevét írja. A -t 0 kapcsoló a gépi fiókot késleltetés nélkül hozza létre, míg a -w kapcsoló a felhasználót gépi fiókként határozza meg. Ne feledje, hogy az /etc/samba/smb.conf add machine script beállítása megváltozott az smbldap-useradd használatára.

Az smbldap-tools csomag további hasznos segédprogramokat és lehetőségeket tartalmaz. Az egyes segédprogramok kézikönyvoldalai további részleteket tartalmaznak.

Információforrások

  • Az LDAP és a Samba kapcsolata több helyen is dokumentálva van a Samba HOWTO Collection részeként.

  • Konkrétan lásd a passdb szakaszt

  • Szintén hasznos információk találhatók a Samba OpenLDAP HOWTO oldalon.

  • Az smbldap-tools csomaggal kapcsolatos további információk a kézikönyvoldalakon találhatók: man smbldap-useradd, man smbldap-groupadd, man smbldap-populate stb.

  • Az Ubuntu wiki is számos cikket tartalmaz a témáról.