Samba a LDAP

Táto časť hovorí o tom, ako nakonfigurovať systém Samba tak, aby na autentifikáciu používal informácie o kontách používateľov, skupín a počítačov z adresára LDAP. Predpoklad je, že už máme funkčnú inštaláciu adresára OpenLDAP a že server je nastavený tak, aby adresár využíval pri autentifikácii. Viac informácií o nastavovaní OpenLDAP nájdeme v častiach “OpenLDAP Server” a “LDAP autentifikácia”. Viac informácií o inštalácii a konfigurácii servera Samba sa nachádza v kapitole Sieť Windows.

Inštalácia

Na prepojenie systému Samba s adresárom LDAP sú potrebné tri balíky: samba, samba-doc a smbldap-tools. Nainštalujeme ich zadaním nasledujúceho príkazu:

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

Presnejšie povedané, balík smbldap-tools nepotrebujeme, ale namiesto neho by sme museli použiť iný balík alebo vlastné skripty, aby sme mohli spravovať kontá používateľov, skupín a počítačov.

Konfigurácia OpenLDAP

Aby Samba mohla použiť OpenLDAP ako pozadie pre autentifikáciu, k používateľským objektom v adresári je potrebné pridať ďalšie atribúty. V tejto časti predpokladáme, že chceme systém Samba nastaviť ako tzv. radič domény Windows NT a že chceme podľa toho pridať príslušné objekty a atribúty do adresára LDAP.

  • Atribúty systému Samba sú definované v súbore schémy samba.schema, ktorá je súčasťou balíka samba-doc. Súbor schémy je potrebné rozzipovať a skopírovať do priečinka /etc/ldap/schema. Do príkazového riadka teda zadajme:
    sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/
    sudo gzip -d /etc/ldap/schema/samba.schema.gz

  • Schému samba je potrebné pridať do vetvy cn=config. Postup, ako pridať novú schému do slapd, je detailne popísaný v časti “Konfigurácia”.
    1. Najskôr vytvoríme konfiguračný súbor, ktorý pomenujeme schema_convert.conf alebo iným viacvravnejším názvom a vložíme do neho tieto riadky:
      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. Teraz použijeme nástroj slapcat na skonvertovanie súborov schém:
      slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}samba,cn=schema,cn=config" > /tmp/cn=samba.ldif
      
      Ak by sme použili iné meno súboru a cestu k priečinku, je potrebné ich zmeniť aj v predchádzajúcom príkaze.
    3. Otvoríme vygenerovaný súbor /tmp/cn=samba.ldif, zmeníme nasledujúce atribúty:
      dn: cn=samba,cn=schema,cn=config
      ...
      cn: samba
      a odstránime nasledujúce riadky z konca súboru:
      structuralObjectClass: olcSchemaConfig
      entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95
      creatorsName: cn=config
      createTimestamp: 20080827045234Z
      entryCSN: 20080827045234.341425Z#000000#000#000000
      modifiersName: cn=config
      modifyTimestamp: 20080827045234Z
      [Note]

      Hodnoty atribútov sa môžu líšiť, preto si pri mazaní dajte pozor, aby ste zmazali všetky uvedené atribúty.

    4. Nakoniec pomocou nástroja ldapadd pridáme novú schému do adresára:
      ldapadd -x -D cn=admin,cn=config -W -f /tmp/cn=samba.ldif
      

    Teraz by sme mali mať vo vetve cn=config záznam dn: cn={X}misc,cn=schema,cn=config, kde "X" poradové číslo sekvenčnej schémy.

  • Nasledujúce riadky nakopírujeme do súboru samba_indexes.ldif:
    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
    Pomocou nástroja ldapmodify načítame nové indexy:
    ldapmodify -x -D cn=admin,cn=config -W -f samba_indexes.ldif
    Ak všetko prebehne dobre, môžeme si nové indexy prezrieť pomocou ldapsearch:
    ldapsearch -xLLL -D cn=admin,cn=config -x -b cn=config -W olcDatabase={1}hdb
  • Ako ďalšie nakonfigurujeme balík smbldap-tools, aby bol v súlade s naším rozhraním. Balík je dodávaný spolu s konfiguračným skriptom, ktorý sa nás bude pýtať na potrebné nastavenia. Ak chceme skript spustiť, zadáme:
    sudo gzip -d /usr/share/doc/smbldap-tools/configure.pl.gz
    sudo perl /usr/share/doc/smbldap-tools/configure.pl

    Keď odpovieme na všetky otázky, zapíšu sa do súborov /etc/smbldap-tools/smbldap.conf a /etc/smbldap-tools/smbldap_bind.conf. Tieto súbory sú generované konfiguračnými skriptami, takže ak sa pomýlime, niekedy je jednoduchšie opraviť nastavenie v súboroch, ako spúšťať skript odznova.
  • Skript smbldap-populate pridá potrebných používateľov, skupiny a LDAP objekty potrebné pre systém Samba. Pred tým, ako spustíme tento príkaz, môžeme si pomocou slapcat odzálohovať súbor LDAP Data Interchange Format (LDIF):
    sudo slapcat -l backup.ldif
  • Po dokončení zálohovania môžeme spustiť smbldap-populate zadaním príkazu:
    sudo smbldap-populate
    [Note]

    LDIF súbor obsahujúci nové objekty systému Samba môžete vytvoriť spustením príkazu sudo smbldap-populate -e samba.ldif. V tomto súbore sa môžete pozrieť na vykonané zmeny a uistiť sa, či je všetko správne.

Náš LDAP adresár teraz obsahuje všetky potrebné informácie na to, aby mohol autentifikovať používateľov systému Samba.

Konfigurácia systému Samba

Existuje viacero spôsobov, akými sa dá nakonfigurovať Samba. Viac informácii o najčastejších spôsoboch sa dozvieme v časti Sieť Windows. Ak chceme nastaviť systém Samba tak, aby používal LDAP, otvoríme hlavný konfiguračný súbor systému Samba /etc/samba/smb.conf zakomentujeme možnosť passdb backend a pridáme nasledujúce riadky:

#   passdb backend = tdbsam

# LDAP Settings
passdb backend = ldapsam:ldap://hostname
ldap suffix = dc=nieco,dc=sk
ldap user suffix = ou=Ludia
ldap group suffix = ou=Skupiny
ldap machine suffix = ou=Pocitace
ldap idmap suffix = ou=Idmap
ldap admin dn = cn=admin,dc=nieco,dc=sk
ldap ssl = start tls
ldap passwd sync = yes
...
add machine script = sudo /usr/sbin/smbldap-useradd -t 0 -w "%u"

Aby sa nové nastavenia prejavili, reštartujeme službu samba:

sudo /etc/init.d/samba restart

Teraz Samba potrebuje vedieť, aké je heslo administrátora LDAP. Do príkazového riadka zadáme:

sudo smbpasswd -w tajne
[Note]

Slovo tajne nahraďte heslom LDAP administrátora.

Ak už v adresári LDAP máme vložených používateľov a chceme, aby sa vedeli autentifikovať v systéme Samba, je potrebné vyplniť niekoľko Samba atribútov, ktoré sú zadefinované v súbore samba.schema. Samba atribúty k existujúcim používateľom pridáme pomocou nástroja smbpasswd, tak že použijeme používateľské meno aktuálneho používateľa:

sudo smbpasswd -a menopouzivatela

Po spustení nástroja bude potrebné zadať heslo používateľa.

Ak chceme pridať nové kontá používateľov, skupín a počítačov. použijeme nástroje balíčka smbldap-tools. Tu je niekoľko príkladov:

  • Nového používateľa do adresára LDAP pridáme cez Samba atribúty zadaním nasledujúceho príkazu, v ktorom nahradíme menopouzivatela aktuálnym menom používateľa:
    sudo smbldap-useradd -a -P menopouzivatela
    Prepínač -a pridá Samba atribúty a prepínač -P spustí nástroj smbldap-passwd po tom, ako je používateľ vytvorený a umožní nám zadať heslo pre používateľa.
  • Ak chceme používateľa z adresára odstrániť, zadáme:
    sudo smbldap-userdel menopouzivatela
    Nástroj smbldap-userdel má aj prepínač -r. ktorý súčasne odstráni aj domovský priečinok používateľa.
  • Ak chceme pridať skupinu, použijeme smbldap-groupadd a nahradíme menoskupiny prislúchajúcim menom skupiny:
    sudo smbldap-groupadd -a menoskupiny
    Podobne aj pri smbldap-useradd prepínač -a pridá Samba atribúty.
  • Ak chceme pridať používateľa do skupiny, použijeme smbldap-groupmod:
    sudo smbldap-groupmod -m menopouzivatela menoskupiny
    Nesmieme zabudnúť menopouzivatela nahradiť menom skutočného používateľa. Prepínač -m umožňuje pridať viacero používateľov oddelených čiarkami naraz.
  • smbldap-groupmod sa používa na odstránenie používateľa zo skupiny:
    sudo smbldap-groupmod -x menopouzivatela menoskupiny
  • Pomocou nástroja smbldap-useradd môžeme pridať do systému Samba aj účet pre počítač:
    sudo smbldap-useradd -t 0 -w menopocitaca
    V príkaze nahradíme menopocitaca skutočným menom pracovnej stanice. Prepínač -t 0 vytvorí konto počítača bez zdržania, zatiaľčo prepínač -w hovorí o tom, že sa jedná o účet počítača. Tiež si môžeme všimnúť, že sa v súbore /etc/samba/smb.conf zmenilo nastavenie add machine script tak, aby sa použil nástroj smbldap-useradd.

V balíku smbldap-tools sú aj ďalšie užitočné nástroje. Viac sa o nich dozvieme na man stránkach.

Zdroje

  • Existuje viacero stránok, kde sú zdokumentované LDAP a Samba. Napríklad Samba HOWTO Collection.
  • Konkrétne odporúčame passdb section.
  • Ďalšia výborná stránka je Samba OpenLDAP HOWTO.
  • Viac informácii o smbldap-tools opäť nájdete na man stránkach: man smbldap-useradd, man smbldap-groupadd, man smbldap-populate, atď.
  • Okrem toho je tu ešte zoznam článkov na stránke Ubuntu wiki.