Documentazione di Ubuntu → Ubuntu 10.04 → Guida a Ubuntu server → Autenticazione di rete → Samba e LDAP

## 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. Modificare il file `/tmp/cn\=samba.ldif` sistemando i seguenti attributi:

         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

     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

  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

  È 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 /etc/init.d/samba restart

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

    sudo smbpasswd -w secret

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.

- Un altro sito da consultare è lo 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.

Server OpenLDAP |  | Kerberos