Samba e LDAP

Questa sezione spiega come configurare Samba all'uso di LDAP le informazioni e l'autenticazione di utenti, gruppi e macchine. Si dà per scontato che vi sia una directory OpenLDAP funzionante e il server è configurato per usarla per l'autenticazione. Per maggiori informazioni su come impostare OpenLDAP, consultare la sezione chiamata «Server OpenLDAP» and la sezione chiamata «Autenticazione LDAP».

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 «Configurazione».

    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. Ora usare slaptest per convertire i file schema:

      slaptest -f schema_convert.conf -F /tmp/ldif_output
      

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

    4. Aprire il file /tmp/ldif_output/cn=config/cn=schema/cn={12}samba.ldif e modificare 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
      
      [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 -f /tmp/ldif_output/cn\=config/cn\=schema/cn\=\{12\}misc.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 15, 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 = dc=example,dc=com
   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
[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.

  • 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...