Samba e LDAP

Questa sezione descrive come configurare Samba affinché utilizzi LDAP per informazioni sugli account e autenticazione di utenti, gruppi e computer. Si presume sia disponibile una directory OpenLDAP installata e funzionante e che il server sia configurato per l'utilizzo dell'autenticazione. Per maggiori informazioni sulla configurazione di OpenLDAP, consultare la sezione chiamata «Server OpenLDAP» e la sezione chiamata «Autenticazione LDAP»; per l'installazione e la configurazione di Samba, consultare Capitolo 17, Reti Windows.

Installazione

Sono necessari tre pacchetti per interagire con Samba attraverso LDAP: samba, samba-doc e smbldap-tools. Per installarli, digitare:

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

Il pacchetto smbldap-tools non è necessario, ma a meno di non avere un altro pacchetto o degli script personalizzati, è necessario disporre di un metodo per la gestione di utenti, gruppi e account.

Configurare OpenLDAP

Affinché Samba possa usare OpenLDAP come un backend passdb, gli oggetti utente nella directory necessitano di ulteriori attributi. Questa sezione assume che si voglia configurare Samba come controller di dominio Windows NT e verranno aggiunti gli oggetti e gli attributi LDAP necessari.

  • gli attributi Samba sono definiti nel file samba.schema, parte del pacchetto samba-doc. Il file schema necessita di essere decompresso e copiato in /etc/ldap/schema. Da un terminale, digitare:

    sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/
    sudo gzip -d /etc/ldap/schema/samba.schema.gz
    
  • È necessario aggiungere lo schema samba all'albero cn=config. La procedura per aggiungere un nuovo schema a slapd è spiegata in la sezione chiamata «Further Configuration».

    1. Creare un file di configurazione chiamato schema_convert.conf, o simile, contenente quanto segue:

      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. Creare una directory temporanea in cui salvare l'output:

      mkdir /tmp/ldif_output
      
    3. Usare quindi slapcat per convertire i file schema:

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

      Modificare i percorsi e i nomi dei file in base alla proprie esigenze.

    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
      

      Rimuovere le seguenti righe dalla fine del file:

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

      I valori degli attributi possono variare, basta solo assicurarsi che gli attributi siano rimossi.

    5. In fine, usando l'utilità ldapadd, aggiugnere il nuovo schema alla directory:

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

      If you have not followed la sezione chiamata «Server OpenLDAP», you can add the schema by entering:

      sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/cn\=samba.ldif
      

    Dovrebbe ora esserci una voce dn: cn={X}misc,cn=schema,cn=config nell'albero "cn=config", in cui "X" è lo schema successivo in sequenza.

  • Copiare e incollare quanto segue in un file chiamato 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
    

    Usando l'utilità ldapmodify, caricare i nuovi indici:

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

    Se tutto è andato a buon fine, dovrebbe essere possibile visualizzare gli indici utilizzando ldapsearch:

    ldapsearch -xLLL -D cn=admin,cn=config -x -b cn=config -W olcDatabase={1}hdb
    
  • Ora, configurare il pacchetto smbldap-tools in base al proprio ambiente di lavoro. Il pacchetto è dotato di uno script di configurazione che richiede l'impostazione delle opzioni necessarie. Per eseguire lo script:

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

    Una volta risposto a tutte le domande, dovrebbero esserci dei file /etc/smbldap-tools/smbldap.conf e /etc/smbldap-tools/smbldap_bind.conf. Questi sono generati dallo script di configurazione e nel caso siano stati commessi degli errori durante l'esecuzione dello script è possibile aprirli e modificarli.

  • Lo script smbldap-populate aggiunge gli utenti, i gruppi e gli oggetti LDAP necessari a Samba. È utile creare un file LDIF di backup con slapcat prima di eseguire il comando:

    sudo slapcat -l backup.ldif
    
  • Ottenuta la copia di sicurezza, eseguire smbldap-populate digitando:

    sudo smbldap-populate
    
    [Nota]

    È possibile creare un file LDIF contenente i nuovi oggetti Samba eseguendo il comando sudo smbldap-populate -e samba.ldif. In questo modo, è possibile visualizzare le modifiche per assicurarsi che tutto sia corretto.

La directory LDAP ora ha le informazioni necessarie sul dominio per autenticare gli utenti Samba.

Configurare Samba

Sono disponibili diversi metodi per configurare Samba, per maggiori informazioni consultare Capitolo 17, Reti Windows. Per configurare Samba all'uso di LDAP, modificare il file di configurazione principale di Samba, /etc/samba/smb.conf, commentando l'opzione passdb backend e aggiungendo quanto segue:

#   passdb backend = tdbsam

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

Riavviare samba per abilitare le nuove impostazioni:

sudo restart smbd
sudo restart nmbd

Samba ora necessita di conoscere la password di amministrazione di LDAP. Da un terminale, digitare:

sudo smbpasswd -w secret
[Nota]

Sostituire secret con la password di amministrazione di LDAP.

Se sono già presenti degli utenti in LDAP e si vuole che possano autenticarsi attraverso Samba, è necessario che abbiano degli attributi come definiti nel file samba.schema. Aggiungere gli attributi Samba agli utenti esistenti usando l'utilità smbpasswd, sostituendo NOME_UTENTE con un nome utente reale:

sudo smbpasswd -a NOME_UTENTE

Viene chiesta la password dell'utente.

Per aggiungere un nuovo utente, gruppo o account macchina, usare le utilità dal pacchetto smbldap-tools. Alcuni esempi:

  • Per aggiungere un nuovo utente a LDAP con attributi Samba, digitare quanto segue, sostituendo "NOME_UTENTE" con un nome utente reale:

    sudo smbldap-useradd -a -P NOME_UTENTE
    

    L'opzione -a aggiunge gli attributi Samba, -P chiama l'utilità smbldap-passwd dopo aver creato l'utente consentendo di inserire la password per l'utente.

  • Per rimuovere un utente dalla directory:

    sudo smbldap-userdel NOME_UTENTE
    

    L'utilità smbldap-userdel è dotata anche di un'opzione -r per rimuovere la directory home dell'utente.

  • Per aggiungere un gruppo, usare smbldap-groupadd, sostituendo "NOME_GRUPPO" con il nome di un gruppo esistente:

    sudo smbldap-groupadd -a NOME_GRUPPO
    

    Come per smbldap-useradd, l'opzione -a aggiunge gli attributi Samba.

  • Per aggiungere un utente a un gruppo, usare smbldap-groupmod:

    sudo smbldap-groupmod -m NOME_UTENTE NOME_GRUPPO
    

    Assicurarsi di sostituire NOME_UTENTE con un utente reale. Inoltre, con l'opzione -m è possibile aggiungere più di un utente alla volta, elencandoli come valori separati da virgola.

  • smbldap-groupmod può essere usato anche per rimuovere un utente da un gruppo:

    sudo smbldap-groupmod -x NOME_UTENTE NOME_GRPPO
    
  • L'utilità smbldap-useradd può anche aggiungere degli account macchina:

    sudo smbldap-useradd -t 0 -w NOME_UTENTE
    

    Sostituire NOME_UTENTE con il nome della workstation. L'opzione -t 0 crea un account macchina immediatamente, -w indica di creare l'utente come account macchina. Notare che l'opzione add machine script in /etc/samba/smb.conf è stata modificata per usare smbldap-useradd.

Sono disponibili molte altre utilità nel pacchetto smbldap-tools. Per maggiori informazioni, consultare la pagina di manuale.

Risorse

  • Sono disponibili anche diversi documenti riguardo LDAP e Samba, come nella «Samba HOWTO Collection».

  • In particolare, consultare la sezione passdb.

  • Another good site is Samba OpenLDAP HOWTO.

  • Inoltre, per maggiori informazioni riguardo smbldap-tools consultare le pagina man: man smbldap-useradd, man smbldap-groupadd, man smbldap-populate, ecc...

  • Also, there is a list of Ubuntu wiki articles with more information.