Samba e OpenLDAP: creare un controller di dominio: differenze tra le versioni

nessun oggetto della modifica
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 1: Riga 1:
==Samba e OpenLDAP: creare un controller di dominio==
=Versioni compatibili=
===Versioni compatibili===
* Debian Sarge 3.0
* Debian Sarge 3.0
* Per Debian Etch 4.0 vedi: [[Samba e OpenLDAP: creare un controller di dominio con Debian Etch]]
* Per Debian Etch 4.0 vedi: [[Samba e OpenLDAP: creare un controller di dominio con Debian Etch]]
* Per Debian Lenny 5.0 vedi: [[Samba e OpenLDAP: creare un controller di dominio con Debian Lenny]]
* Per Debian Lenny 5.0 vedi: [[Samba e OpenLDAP: creare un controller di dominio con Debian Lenny]]
===Introduzione===
=Introduzione=
In questo articolo vedremo come installare un server basato su Debian e Samba 3 con backend di un database LDAP, affinché funga da Primary Domain Controller di una rete Windows. Lo stesso server LDAP verrà utilizzato anche per la gestione in contemporanea degli utenti Unix, in modo da avere un controllo unico e centralizzato sia sugli utenti Windows sia sugli utenti Linux.<br/>
In questo articolo vedremo come installare un server basato su Debian e Samba 3 con backend di un database LDAP, affinché funga da Primary Domain Controller di una rete Windows. Lo stesso server LDAP verrà utilizzato anche per la gestione in contemporanea degli utenti Unix, in modo da avere un controllo unico e centralizzato sia sugli utenti Windows sia sugli utenti Linux.<br/>
Per la redazione di questa guida mi sono basato su questi ottimi HowTo:<br/>
Per la redazione di questa guida mi sono basato su questi ottimi HowTo:<br/>
Riga 14: Riga 13:
<br/>
<br/>


===Sistema installato===
=Sistema installato=
Il presente HOWTO è stato realizzato utilizzando un sistema Debian 3.1 Sarge con tutti gli aggiornamenti di sicurezza ufficiali.  
Il presente HOWTO è stato realizzato utilizzando un sistema Debian 3.1 Sarge con tutti gli aggiornamenti di sicurezza ufficiali.  
La configurazione iniziale del sistema prevede un'installazione base Debian net install senza alcun componente aggiuntivo.<br/>
La configurazione iniziale del sistema prevede un'installazione base Debian net install senza alcun componente aggiuntivo.<br/>
Riga 20: Riga 19:
<br/>
<br/>


===Samba===
=Samba=
Si consiglia di installare immediatamente Samba, in quanto alcuni strumenti che mette a disposizione saranno necessari anche per le configurazioni degli altri servizi.
Si consiglia di installare immediatamente Samba, in quanto alcuni strumenti che mette a disposizione saranno necessari anche per le configurazioni degli altri servizi.
<pre>
<pre>
Riga 34: Riga 33:
<br/>
<br/>


===Installazione e configurazione del server LDAP===
=Installazione e configurazione del server LDAP=
Il server LDAP è essenzialmente un database gerarchico che viene utilizzato per la memorizzazione dei dati degli utenti, dei computer del dominio e di tutto quanto si desideri gestire tramite una base dati condivisibile via rete tra più sistemi.<br/>
Il server LDAP è essenzialmente un database gerarchico che viene utilizzato per la memorizzazione dei dati degli utenti, dei computer del dominio e di tutto quanto si desideri gestire tramite una base dati condivisibile via rete tra più sistemi.<br/>
Si considera che il server in questione venga utilizzato all'interno di una rete aziendale altamente affidabile e non verranno, pertanto, trattati gli aspetti relativi alla crittografia delle comunicazioni. Questa scelta riduce la sicurezza, pertanto si consiglia di approfondire l'argomento.<br/>
Si considera che il server in questione venga utilizzato all'interno di una rete aziendale altamente affidabile e non verranno, pertanto, trattati gli aspetti relativi alla crittografia delle comunicazioni. Questa scelta riduce la sicurezza, pertanto si consiglia di approfondire l'argomento.<br/>
Riga 93: Riga 92:
<br/>
<br/>


===Configurazione dei client per LDAP===
=Configurazione dei client per LDAP=
Ogni volta che un client accede ad un server LDAP deve impostare la base di ricerca e, nel caso si trovi su un server differente, l'URL del server LDAP. Queste informazioni possono essere impostate come default nel file <tt>/etc/ldap/ldap</tt>.conf aggiungendo le righe:
Ogni volta che un client accede ad un server LDAP deve impostare la base di ricerca e, nel caso si trovi su un server differente, l'URL del server LDAP. Queste informazioni possono essere impostate come default nel file <tt>/etc/ldap/ldap</tt>.conf aggiungendo le righe:
<pre>
<pre>
Riga 106: Riga 105:
<br/>
<br/>


===Configurare i SMBLDAP TOOLS===
=Configurare i SMBLDAP TOOLS=
I smbldap-tools sostituiscono i comandi standard di UNIX per la gestione di gruppi, utenti e password in modo da dialogare direttamente con il server LDAP e fornire un metodo per gestire in contemporanea gli account UNIX e SAMBA.<br/>
I smbldap-tools sostituiscono i comandi standard di UNIX per la gestione di gruppi, utenti e password in modo da dialogare direttamente con il server LDAP e fornire un metodo per gestire in contemporanea gli account UNIX e SAMBA.<br/>
Malgrado la documentazione ufficiale di SAMBA asserisca che smbpasswd sia in grado di gestire tali account, utilizzando quello strumento occorre prima creare l'utente UNIX, poi quello Samba, pertanto ne sconsiglio l'utilizzo.
Malgrado la documentazione ufficiale di SAMBA asserisca che smbpasswd sia in grado di gestire tali account, utilizzando quello strumento occorre prima creare l'utente UNIX, poi quello Samba, pertanto ne sconsiglio l'utilizzo.
====Installazione====
==Installazione==
Installare il pacchetto smbldap-tools
Installare il pacchetto smbldap-tools
<pre>
<pre>
# apt-get install smbldap-tools
# apt-get install smbldap-tools
</pre>
</pre>
====Configurazione====
==Configurazione==
Copiare i file <tt>smbldap.conf</tt> e <tt>smbldap_bind.conf</tt> in <tt>/etc/smbldap-tools</tt>.
Copiare i file <tt>smbldap.conf</tt> e <tt>smbldap_bind.conf</tt> in <tt>/etc/smbldap-tools</tt>.
<pre>
<pre>
Riga 181: Riga 180:
</pre><br/>
</pre><br/>


===Configurazione di SAMBA===
=Configurazione di SAMBA=
A questo punto il backend per la memorizzazione degli utenti e la loro gestione è pronto; è quindi il momento di passare a SAMBA per farlo accedere a quanto fatto finora.
A questo punto il backend per la memorizzazione degli utenti e la loro gestione è pronto; è quindi il momento di passare a SAMBA per farlo accedere a quanto fatto finora.
====Creazione dei dati base====
==Creazione dei dati base==
Per il funzionamento corretto SAMBA ha bisogno di diversi gruppi predefiniti e 2 utenti: Administrator e nobody.<br/>
Per il funzionamento corretto SAMBA ha bisogno di diversi gruppi predefiniti e 2 utenti: Administrator e nobody.<br/>
Inoltre, affinché si riesca ad aggiungere computer al dominio in modo automantico (da macchine Windows), deve esistere un utente con uid = 0 da utilizzare per questa operazione. Tale utente può essere un utente root (da aggiungere a mano) o lo stesso Administrator cambiandogli l'uid. Quest'ultima è la scelta presa in questa configurazione, in modo da avere un utente Administrator che è Administrator per Samba e root per il "dominio" UNIX.<br/>
Inoltre, affinché si riesca ad aggiungere computer al dominio in modo automantico (da macchine Windows), deve esistere un utente con uid = 0 da utilizzare per questa operazione. Tale utente può essere un utente root (da aggiungere a mano) o lo stesso Administrator cambiandogli l'uid. Quest'ultima è la scelta presa in questa configurazione, in modo da avere un utente Administrator che è Administrator per Samba e root per il "dominio" UNIX.<br/>
Riga 207: Riga 206:
</pre>
</pre>
Questo sarà anche il comando che dovrà essere normalmente utilizzato per la gestione delle password.
Questo sarà anche il comando che dovrà essere normalmente utilizzato per la gestione delle password.
====Configurazione di NSS per lavorare con LDAP====
==Configurazione di NSS per lavorare con LDAP==
Per far lavorare correttamente Samba è necessario configurare NSS con LDAP. Samba infatti si aspetta di trovare un utente di sistema con lo stesso nome di un utente Samba. Per questo occorre recuperare le informazioni sugli utenti dal database LDAP. È necessario quindi installare:
Per far lavorare correttamente Samba è necessario configurare NSS con LDAP. Samba infatti si aspetta di trovare un utente di sistema con lo stesso nome di un utente Samba. Per questo occorre recuperare le informazioni sugli utenti dal database LDAP. È necessario quindi installare:
<pre>
<pre>
Riga 273: Riga 272:
<br/>
<br/>


===Configurazione del server Samba===
=Configurazione del server Samba=
E' possibile copiare un prototipo per il file di configurazione di samba (facendo una copia dell'originale!):
E' possibile copiare un prototipo per il file di configurazione di samba (facendo una copia dell'originale!):
<pre>
<pre>
Riga 426: Riga 425:
# chmod 1757 /var/lib/samba/profiles
# chmod 1757 /var/lib/samba/profiles
</pre>
</pre>
====Creare il primo utente====
==Creare il primo utente==
Adesso siamo pronti per la creazione del primo utente con il comando:
Adesso siamo pronti per la creazione del primo utente con il comando:
<pre>
<pre>
Riga 439: Riga 438:
# smbldap-usershow username
# smbldap-usershow username
</pre>
</pre>
====Creare un gruppo====
==Creare un gruppo==
<pre>
<pre>
# smbldap-groupadd "NomeGruppo"
# smbldap-groupadd "NomeGruppo"
</pre>
</pre>
====Aggiunta di un utente a un gruppo====
==Aggiunta di un utente a un gruppo==
<pre>
<pre>
# smbldap-usermod -G "NomeGruppo" nome.utente
# smbldap-usermod -G "NomeGruppo" nome.utente
Riga 449: Riga 448:
<br/>
<br/>


===Creazione di un semplice script da eseguire al login di windows===
=Creazione di un semplice script da eseguire al login di windows=
E' possibile creare uno script che abbiamo chiamto "logon.bat" (come specificato nel file /etc/smbldap-tools/smbldap.conf) da mettere nella cartella indicata per la condivisione netlogon, quindi nel nostro caso /var/lib/samba/netlogon/  
E' possibile creare uno script che abbiamo chiamto "logon.bat" (come specificato nel file /etc/smbldap-tools/smbldap.conf) da mettere nella cartella indicata per la condivisione netlogon, quindi nel nostro caso /var/lib/samba/netlogon/  
Tale script dovrà esser scritto in modalità dos, per far questo sfrutteremo il tool unix2dos contenuto nel pacchetto tofrodos.
Tale script dovrà esser scritto in modalità dos, per far questo sfrutteremo il tool unix2dos contenuto nel pacchetto tofrodos.
Riga 470: Riga 469:
Tenete conto che con queste impostazioni viene creata un'unità di rete collegata alla home dell'utente linux.
Tenete conto che con queste impostazioni viene creata un'unità di rete collegata alla home dell'utente linux.


===Connettersi al dominio===
=Connettersi al dominio=
Il nostro server è ora pronto per essere utilizzato. Per testarne le funzionalità è possibile procedere per gradi, in modo da isolare quelli che sono i problemi di configurazione da quelli che sono i problemi di rete o dei client Windows.<br/>
Il nostro server è ora pronto per essere utilizzato. Per testarne le funzionalità è possibile procedere per gradi, in modo da isolare quelli che sono i problemi di configurazione da quelli che sono i problemi di rete o dei client Windows.<br/>
A tal fine il primo accesso può essere fatto dal server stesso con il comando:
A tal fine il primo accesso può essere fatto dal server stesso con il comando:
Riga 522: Riga 521:
Bisogna fornire la password di root del PDC Samba (ricordarsi che è la password salvata in smbpasswd e non in passwd/shadow, nel caso fossero diverse).
Bisogna fornire la password di root del PDC Samba (ricordarsi che è la password salvata in smbpasswd e non in passwd/shadow, nel caso fossero diverse).
<br/>
<br/>
===Unire un server Samba al dominio===
=Unire un server Samba al dominio=
Nel caso si disponga di un secondo server e si voglia utilizzare un unico database degli utenti è possibile seguire 2 strade differenti:
Nel caso si disponga di un secondo server e si voglia utilizzare un unico database degli utenti è possibile seguire 2 strade differenti:
# Configurare il secondo server per accedere a LDAP seguendo le indicazioni esposte per il server di dominio, ovviamente senza farlo diventare server di dominio, ma con autenticazione degli utenti
# Configurare il secondo server per accedere a LDAP seguendo le indicazioni esposte per il server di dominio, ovviamente senza farlo diventare server di dominio, ma con autenticazione degli utenti
Riga 546: Riga 545:
A questo punto è possibile creare share e assegnare permessi in base a utenti e gruppi definiti nel dominio.
A questo punto è possibile creare share e assegnare permessi in base a utenti e gruppi definiti nel dominio.
<br/>
<br/>
===Promemoria dei comandi di Samba e LDAP===
=Promemoria dei comandi di Samba e LDAP=
====Creazione di utenti====
==Creazione di utenti==
<pre>
<pre>
# smbldap-useradd -a -m -c "Descrizione Utente" nome.utente
# smbldap-useradd -a -m -c "Descrizione Utente" nome.utente
Riga 556: Riga 555:
# smbldap-usershow nome.utente
# smbldap-usershow nome.utente
</pre>
</pre>
====Creazione di un gruppo====
==Creazione di un gruppo==
<pre>
<pre>
# smbldap-groupadd "NomeGruppo"
# smbldap-groupadd "NomeGruppo"
</pre>
</pre>
====Aggiunta di un utente a un gruppo====
==Aggiunta di un utente a un gruppo==
<pre>
<pre>
# smbldap-usermod -G "NomeGruppo" nome.utente
# smbldap-usermod -G "NomeGruppo" nome.utente
</pre>
</pre>
====Elencare i gruppi memorizzati in LDAP====
==Elencare i gruppi memorizzati in LDAP==
<pre>
<pre>
# ldapsearch -x objectClass=posixGroup
# ldapsearch -x objectClass=posixGroup
</pre>
</pre>
====Elencare gli utenti di un gruppo====
==Elencare gli utenti di un gruppo==
<pre>
<pre>
# smbldap-groupshow "gruppo"
# smbldap-groupshow "gruppo"
</pre>
</pre>
====Backuppare una directory condivisa dal server usando le credenziali di un utente specifico====
==Backuppare una directory condivisa dal server usando le credenziali di un utente specifico==
<pre>
<pre>
smbclient //nomeserver/nomecartella -U nome.utente%password.utente -N -Tc backup.tar /percorso/locale/del/backup
smbclient //nomeserver/nomecartella -U nome.utente%password.utente -N -Tc backup.tar /percorso/locale/del/backup
</pre>
</pre>
====Elencare le risorse condivise di una macchina====
==Elencare le risorse condivise di una macchina==
<pre>
<pre>
smbclient -L nomeserver
smbclient -L nomeserver
</pre>
</pre>
====Per fare delle modifiche nel DB in maniera semplice====
==Per fare delle modifiche nel DB in maniera semplice==
<pre>
<pre>
   slapcat -l /tmp/backup.ldif     
   slapcat -l /tmp/backup.ldif     
Riga 597: Riga 596:
   slapadd -c -l /tmp/backup.ldif
   slapadd -c -l /tmp/backup.ldif
</pre>
</pre>
====Comandi utili LDAP====
==Comandi utili LDAP==
<pre>
<pre>
ldapsearch -b "dc=miodominio,dc=local" -x
ldapsearch -b "dc=miodominio,dc=local" -x
Riga 610: Riga 609:
<br/>
<br/>


===Configurazioni addizionali attivabili in SAMBA===
=Configurazioni addizionali attivabili in SAMBA=
'''Disabilitare i roaming profiles'''
'''Disabilitare i roaming profiles'''
<br/>
<br/>
Riga 635: Riga 634:
In questo modo al login e logout i profili sul server non sono più considerati.
In questo modo al login e logout i profili sul server non sono più considerati.
<br/>
<br/>
===db4===
=db4=
OpenLDAP ha la brutta abitudine di non risistemarsi per bene quando la donna delle pulizie inciampa nell'interruttore generale della corrente. Perciò conviene installare:
OpenLDAP ha la brutta abitudine di non risistemarsi per bene quando la donna delle pulizie inciampa nell'interruttore generale della corrente. Perciò conviene installare:
<pre>
<pre>
Riga 642: Riga 641:
Questo pacchetto contiene l'utility db4.2_recover che viene lanciata automaticamente ad ogni restart di ldap, risolvendo eventuali problemi di incongruenza del Barkley DB.
Questo pacchetto contiene l'utility db4.2_recover che viene lanciata automaticamente ad ogni restart di ldap, risolvendo eventuali problemi di incongruenza del Barkley DB.
<br/>
<br/>
===Impostare i charset corretti===
=Impostare i charset corretti=
Il meccanismo di gestione dei charset in Linux e in Windows è abbastanza complicato, anche a causa dell'elevato numero di strati logici e sistemi differenti che una stringa deve attraversare prima di essere letta o scritta. In larga parte ho ancora molte lacune sul funzionamento, ma di seguito riporto le configurazioni necessarie affinché eventuali lettere accentate nei nomi di file e cartelle siano coerenti sui client Windows, Linux e sul server Sambanel caso di charset Italiano (western european - ISO8859-1).<br/>
Il meccanismo di gestione dei charset in Linux e in Windows è abbastanza complicato, anche a causa dell'elevato numero di strati logici e sistemi differenti che una stringa deve attraversare prima di essere letta o scritta. In larga parte ho ancora molte lacune sul funzionamento, ma di seguito riporto le configurazioni necessarie affinché eventuali lettere accentate nei nomi di file e cartelle siano coerenti sui client Windows, Linux e sul server Sambanel caso di charset Italiano (western european - ISO8859-1).<br/>
In primo luogo occorre aggiungere al file di configurazione di Samba (<tt>/etc/samba/smb.conf</tt>), nella sezione <tt>[global]</tt>, la seguente direttiva:
In primo luogo occorre aggiungere al file di configurazione di Samba (<tt>/etc/samba/smb.conf</tt>), nella sezione <tt>[global]</tt>, la seguente direttiva:
Riga 654: Riga 653:
</pre>
</pre>
<br/>
<br/>
===Appendice A - Files di configurazione===
=Appendice A - Files di configurazione=
'''File <tt>/etc/samba/smb.conf</tt>'''
'''File <tt>/etc/samba/smb.conf</tt>'''
<pre>
<pre>
Riga 1 237: Riga 1 236:
session required pam_unix.so
session required pam_unix.so
</pre>
</pre>
===Per approfondimenti vedi anche:===
=Per approfondimenti=
[[Samba e OpenLDAP: creare un controller di dominio]]<br/>
[[Samba e OpenLDAP: creare un controller di dominio]]<br/>
[[Samba e OpenLDAP: creare un controller di dominio con Debian Etch]]<br/>
[[Samba e OpenLDAP: creare un controller di dominio con Debian Etch]]<br/>