<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mia mamma usa Linux! &#187; Samba</title>
	<atom:link href="http://www.miamammausalinux.org/category/software/samba/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.miamammausalinux.org</link>
	<description>Perché niente è impossibile da capire... Se lo spieghi bene !</description>
	<lastBuildDate>Mon, 02 Jan 2012 11:31:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Samba: installazione di un fileserver gestito con gruppi di accesso locali</title>
		<link>http://www.miamammausalinux.org/2010/12/samba-installazione-di-un-fileserver-gestito-con-gruppi-di-accesso-locali/</link>
		<comments>http://www.miamammausalinux.org/2010/12/samba-installazione-di-un-fileserver-gestito-con-gruppi-di-accesso-locali/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 16:10:57 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Samba]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=1207</guid>
		<description><![CDATA[Questo articolo illustra come ottenere un&#8217;installazione coerente di un fileserver Linux basato su SAMBA, che amministri l&#8217;accesso alle condivisioni attraverso utenti che appartengano a gruppi di sistema, gestiti in una forma riconoscibile. Gli utenti, pur essendo a tutti gli effetti parte del sistema, avranno permessi di accesso unicamente attraverso il protocollo CIFS, gestito dalle macchine [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.miamammausalinux.org/wp-content/uploads/2009/01/samba.png"><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/samba.png" alt="" title="samba" class="alignnone size-full wp-image-196" /></a></p>
<p>Questo articolo illustra come ottenere un&#8217;installazione coerente di un fileserver Linux basato su SAMBA, che amministri l&#8217;accesso alle condivisioni attraverso utenti che appartengano a gruppi di sistema, gestiti in una forma riconoscibile.<br />
Gli utenti, pur essendo a tutti gli effetti parte del sistema, avranno permessi di accesso unicamente attraverso il protocollo CIFS, gestito dalle macchine <em>Microsoft Windows</em>.</p>
<p><strong>Installazione di SAMBA</strong></p>
<p>La procedura descritta fa riferimento al sistema operativo <em>Ubuntu Server 10.4</em>, ed all&#8217;ultima release stabile disponibile in esso per il progetto libero SAMBA, la versione 3.4.7.<br />
L&#8217;installazione per Ubuntu ed i sistemi Debian, può essere effettuata come di consueto:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># apt-get install samba</pre></div></div>

<p>mentre nei sistemi che fanno uso di rpm e di yum il comando sarà invece:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># yum install samba</pre></div></div>

<p>Prima di effettuare qualsiasi operazione è bene salvare il file di configurazione originale di SAMBA:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># cd /etc/samba
# mv smb.conf smb.conf.org</pre></div></div>

<p>nel corso dell&#8217;articolo partiremo da un file completamente vuoto, per sottolineare come sia possibile impostare pochi parametri per essere operativi nel minor tempo possibile.</p>
<p><strong>Configurazione di SAMBA (impostazioni globali)</strong></p>
<p>Le configurazioni descritte fanno hanno come presupposto il fatto che l&#8217;utente con cui si sta operando all&#8217;interno del sistema sia &#8220;root&#8221;. Attraverso l&#8217;editor preferito sarà possibile creare un nuovo file smb.conf:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># sudo su -
# vi /etc/samba/smb.conf</pre></div></div>

<p>All&#8217;interno del quale dovranno essere impostati i seguenti parametri:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">[global]
   security = user
   workgroup = NETWORK.LOCAL
   server string = %h server (Samba, Ubuntu) 
&nbsp;
   wins support = yes 
   dns proxy = no 
&nbsp;
   log file = /var/log/samba/log.%m 
   max log size = 1000 
   syslog = 0 
&nbsp;
   encrypt passwords = true 
   passdb backend = tdbsam
&nbsp;
   directory mask = 2770 
   create mask = 0660</pre></div></div>

<p>Le configurazioni indicano che il server è di tipo <em>standalone</em> (<em>security = user</em>), ossia non collegato a sistemi di autenticazione centralizzati. Il server è parte del gruppo di lavoro “NETWORK.LOCAL” (opzione <em>workgroup</em>, che andrà modificata a seconda delle impostazioni relative propria rete <em>Microsoft Windows</em>) e funzionerà da server WINS (<em>wins support = yes</em>) in modo da gestire la risoluzione dei nomi <em>Microsoft Windows</em> per la rete, ma non controllerà però i nomi effettuando query sul server dns di sistema (<em>dns proxy = no</em>).<br />
Il sistema registrerà un log per ciascuna macchina che si collegherà (<em>log file = /var/log/samba/log.%m</em>), tale log non potrà eccedere un megabyte di grandezza (<em>max log size = 1000</em>). Inoltre nessuna informazione verrà registrata nel file <em>/var/log/syslog</em> (<em>syslog = 0</em>), il file di log generale relativo al sistema. Tutte le informazioni relative all&#8217;esecuzione del demone saranno reperibili all&#8217;interno del file <em>/var/log/samba/log.smbd</em>.<br />
Il sistema di autenticazione cripterà le password (<em>encrypt passwords</em>) ed utilizzerà il backend <em>tdbsam</em> (opzione <em>passdb backend</em>), ossia il database locale.<br />
Le ultime due opzioni indicate definiscono la maschera attraverso la quale verranno create le directory (<em>directory mask = 2770</em>) ed i file (<em>create mask = 0660</em>). Le directory verranno quindi create con permessi di lettura, scrittura ed esecuzione per il proprietario ed il gruppo, mentre per tutti gli altri saranno inaccessibili. I file verranno creati con i medesimi permessi ad eccezione dell&#8217;esecuzione.<br />
Particolarità aggiuntiva della modalità di creazione delle cartelle è quella di possedere il bit <em>setgid</em> (<a href="http://it.wikipedia.org/wiki/Setuid_e_setgid">http://it.wikipedia.org/wiki/Setuid_e_setgid</a>) che impone l&#8217;appartenenza al gruppo della cartella padre per tutti i file e le cartelle create al suo interno. Questo significa che chiunque appartenga al gruppo della cartella padre potrà creare file e cartelle al suo interno, tali file e cartelle apparterranno al gruppo della cartella padre. In questo modo i permessi specifici di accesso per i gruppi definiti nelle cartelle governeranno la totalità degli accessi.</p>
<p><strong>Configurazione di un gruppo</strong></p>
<p>Ciascun gruppo di accesso verrà nominato in questo modo:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># groupadd samba_rwx_Amministrazione</pre></div></div>

<p>Il criterio con cui i gruppi vengono creati e nominati è ottenibile scomponendo il nome attraverso i caratteri &#8220;_&#8221; (underscore), dove &#8220;samba&#8221; indica che il gruppo è inerente al servizio samba, &#8220;rwx&#8221; indica il tipo di accesso che può essere appunto &#8220;rwx&#8221; (permessi di lettura e scrittura) o &#8220;rx&#8221; (sola lettura), mentre &#8220;Amministrazione&#8221; indica il nome della condivisione a cui il gruppo si riferisce.</p>
<p><strong>Aggiunta di un&#8217;utenza</strong></p>
<p>Ogni utenza creata nel sistema che farà riferimento al servizio samba, avrà come gruppo primario samba, con identificativo &#8220;999&#8243;, creato con il seguente comando:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># groupadd -g 999 samba</pre></div></div>

<p>In questo modo, la separazione degli ambiti operativi sarà oltre che configurata nel sistema, anche ben visibile.<br />
Per aggiungere un&#8217;utenza al sistema i passi da compiere sono quindi i seguenti:</p>
<ol>
<li>Lanciare il comando:

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># useradd -g samba -s /bin/false -d -c &quot;Utente di test&quot; user1</pre></div></div>

<p>In cui <em>user1</em> rappresenta il nome attraverso il quale l&#8217;utente dovrà accedere alle condivisioni. A <em>user1</em> viene assegnato il gruppo primario &#8220;samba&#8221; (<em>-g samba</em>), una shell di login nulla in modo che non possa mai effettuare il login nel sistema (<em>-s /bin/false</em>) ed una breve descrizione dell&#8217;utenza (<em>-d</em>, generalmente nome e cognome, oppure un indicativo della funzione svolta).
</li>
<li>L&#8217;utente creato va poi aggiunto al database locale SAMBA, attraverso questo comando:

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># smbpasswd -a user1</pre></div></div>

<p>indicando per due volte la password scelta, che può essere anche omessa nel caso in cui lo si decida (è sempre consigliabile inserirne una).
</li>
<li>L&#8217;utente va quindi aggiunto ad uno dei gruppi disponibili. Aggiungere utenti al gruppo è possibile con il seguente comando:

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># adduser user1 samba_rwx_Amministrazione</pre></div></div>

</li>
</ol>
<p>Per controllare quali utenti appartengono al gruppo è sufficiente digitare il seguente comando:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># cat /etc/group | grep &quot;samba_rwx_Amministrazione&quot;
samba_rwx_Amministrazione:user1,user2,user3</pre></div></div>

<p>Mentre per controllare un singolo utente a quali gruppi appartiene, il comando sarà invece:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># groups user1
user1 : samba samba_rwx_Amministrazione</pre></div></div>

<p><strong>Aggiunta di una condivisione</strong></p>
<p>Ciascuna condivisione fa riferimento ad un path locale, nel caso descritto viene creata una cartella /share:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># mkdir /share</pre></div></div>

<p> al di sotto della quale tutte le cartelle condivise verranno create:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="console" style="font-family:monospace;"># mkdir /share/Amministrazione
# chgrp samba_rwx_Amministrazione /share/Amministrazione
# chmod 2770 /share/Amministrazione</pre></td></tr></table></div>

<p>Queste operazioni andranno eseguite per ciascuna nuova condivisione creata e si riassumono come segue:</p>
<ol>
<li>Creazione effettiva della cartella;</li>
<li>Assegnazione della cartella al gruppo creato;</li>
<li>Impostazione del permesso <em>setgid</em> (vedi sopra) ricorsivo sulla cartella appena creata;</li>
</ol>
<p>Le condivisioni verranno definite nel file di configurazione <em>smb.conf</em> in coda alle dichiarazioni globali, in un formato simile al seguente:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">[Amministrazione] 
comment = Amministrazione 
read only = no 
write list = @samba_rwx_Amministrazione
read list = 
path = /share/Amministrazione</pre></div></div>

<p>Il codice illustrato definisce una condivisione denominata “Amministrazione” a cui possono accedere in scrittura nella directory “/share/Amministrazione” unicamente gli utenti appartenenti al gruppo “samba_rwx_Amministrazione”.</p>
<p>Pertanto, per aggiungere una condivisione sarà quindi sufficiente eseguire la creazione e l&#8217;assegnazione dei permessi come descritto sopra ed inserire all&#8217;interno del file <em>/etc/samba/smb.conf</em> una dichiarazione seguendo il modello indicato:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">[&lt;NOMECONDIVISIONE&gt;] 
comment = &lt;Descrizione condivisione&gt;
read only = no 
write list = @&lt;gruppo con permessi di scrittura&gt;
read list = @&lt;gruppo con permessi di lettura&gt;
path = &lt;path della condivisione&gt;</pre></div></div>

<p>Nel caso l&#8217;accesso venga deciso unicamente in lettura o unicamente in scrittura, è possibile omettere le righe relative (write list o read list) dalla dichiarazione.</p>
<p><strong>Attivazione delle configurazioni</strong></p>
<p>Per applicare le nuove configurazioni, il servizio SAMBA necessita di essere ricaricato:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># service smbd reload</pre></div></div>

<p>Da questo momento in poi sarà possibile utilizzare una qualsiasi macchina Microsoft Windows per testare l&#8217;effettivo successo delle configurazioni impostate.</p>
<p><strong>Note</strong></p>
<p>Quanto descritto consente di configurare SAMBA affinché possa interagire con client o server <em>Microsoft Windows</em> come se fosse un file e print server <em>Microsoft</em>.<br />
E&#8217; possibile variare le configurazioni in modo che SAMBA agisca da Primary Domain Controller (PDC), Backup Domain Controller o prendere parte ad un dominio Active Directory.<br />
Sul portale tecnico sono disponibili diversi articoli che approfondiscono questi argomenti:</p>
<p>Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-1-di-6/">1 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-2-di-6/">2 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-3-di-6/">3 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-4-di-6/">4 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-5-di-6/">5 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/02/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-6-di-6/">6 di 6</a>)</p>
<p>Samba e Active Directory (1 di 3): <a href="http://www.miamammausalinux.org/2009/04/samba-e-active-directory-1-di-3-diventare-parte-di-un-dominio/">diventare parte di un Dominio</a><br />
Samba e Active Directory (2 di 3): <a href="http://www.miamammausalinux.org/2009/05/samba-e-active-directory-2-di-3-interrogare-il-dominio/">interrogare il dominio</a><br />
Samba e Active Directory (3 di 3): <a href="http://www.miamammausalinux.org/2009/05/samba-e-active-directory-3-di-3-configurare-pam-per-lautenticazione-locale/">configurare pam per l&#8217;autenticazione locale</a></p>
<p>In attesa quindi di saggiare le meraviglie dell&#8217;annunciato SAMBA 4, che conterrà un motore interno volto ad eguagliare l&#8217;efficienza e la funzionalità di <em>Microsoft Active Directory</em>, è chiaro come sia già possibile adottare SAMBA in ambiti produttivi di svariato genere, con successo, e senza costi di licenza.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2010/12/samba-installazione-di-un-fileserver-gestito-con-gruppi-di-accesso-locali/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Samba e Active Directory (3 di 3): configurare pam per l&#8217;autenticazione locale</title>
		<link>http://www.miamammausalinux.org/2009/05/samba-e-active-directory-3-di-3-configurare-pam-per-lautenticazione-locale/</link>
		<comments>http://www.miamammausalinux.org/2009/05/samba-e-active-directory-3-di-3-configurare-pam-per-lautenticazione-locale/#comments</comments>
		<pubDate>Fri, 15 May 2009 15:40:00 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Samba]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Condivisione dati]]></category>
		<category><![CDATA[Integrazione Active Directory]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=628</guid>
		<description><![CDATA[Nel precedente articolo sono stati illustrati i metodi per effettuare delle interrogazioni ad un dominio Active Directory attraverso una macchina Linux al cui interno è configurato SAMBA. Nell&#8217;ultimo esempio illustrato l&#8217;esito dell&#8217;interrogazione presentava un elenco del tutto simile al contenuto del file /etc/passwd che in ogni sistema Linux contiene le informazioni di accesso degli utenti. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/samba.png" alt="samba" title="samba" class="alignnone size-full wp-image-196" /></p>
<p>Nel precedente articolo sono stati illustrati i metodi per effettuare delle interrogazioni ad un dominio Active Directory attraverso una macchina Linux al cui interno è configurato SAMBA. Nell&#8217;ultimo esempio illustrato l&#8217;esito dell&#8217;interrogazione presentava un elenco del tutto simile al contenuto del file <em>/etc/passwd</em> che in ogni sistema Linux contiene le informazioni di accesso degli utenti. La riflessione nata spontaneamente è quindi se si può fare in modo che il sistema sia configurato per supportare l&#8217;autenticazione via Active Directory in fase di login. La riposta è sì, ecco spiegato come.</p>
<p><strong>Condividere una cartella</strong></p>
<p>La configurazione illustrata nel primo articolo della serie consente di autenticare l&#8217;accesso a cartelle condivise mediante le credenziali presenti nel Active Directory.<br />
Per condividere una cartella è sufficiente aggiungere al file di configurazione di SAMBA <em>/etc/samba/smb.conf</em> una dichiarazione come la seguente:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">[Test]
        comment = Test
        path = /samba/test
        write list = DOMINIO.IT/user1
        read list = @&quot;DOMINIO.ITgruop1&quot;
        read only = Yes
        browseable = Yes
        create mask = 0775
        directory mask = 0775</pre></div></div>

<p>dopo aver effettuato il <em>reload</em> del servizio attraverso il comando:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ /etc/init.d/samba reload</pre></div></div>

<p>la directory, supponendo che l&#8217;indirizzo IP della macchina sia 192.168.0.100, sarà disponibile per l&#8217;accesso dalla rete all&#8217;indirizzo <em>//192.168.0.100/Test</em>. L&#8217;utente <em>DOMINIO.ITuser1</em> (così andrà digitato alla schermata di login) avrà il permesso di scrittura mentre tutti gli utenti del gruppo <em>DOMINIO.ITgroup1</em> potranno accedere in lettura alla condivisione.</p>
<p>Ma questa è solo la punta dell&#8217;iceberg. Come già detto, la configurazione di SAMBA permette di sfruttare il metodo di autenticazione in modo che il sistema stesso in fase di login si riferisca al dominio Active Directory.</p>
<p><strong>PAM, brevemente</strong></p>
<p>PAM (Pluggable Authentication Modules) definisce un metodo standard ad alto livello per gestire l&#8217;autenticazione. Questo strato è comune a tutti i sistemi Linux (sebbene le varie versioni non operino tutte allo stesso modo) e consente a coloro i quali sviluppano servizi con autenticazioni proprie di creare moduli che rispettino l&#8217;interfaccia di programmazione relativa a PAM.<br />
In questo modo, potenzialmente, qualunque sistema di autenticazione può essere integrato con il login di sistema.<br />
Una panoramica dettagliata di quello che è PAM e di come funziona è disponibile presso Kernel.org, precisamente a questo link: <a href="http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html">http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html</a>.</p>
<p><strong>Integrazione di winbind con PAM per il login via Active Directory</strong></p>
<p>La configurazione di PAM all&#8217;interno del sistema è contenuta in una serie di file, in <em>Debian Lenny</em>, la distribuzione utilizzata in questa serie di articoli, tali file si trovano nella cartella <em>/etc/pam.d</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ ls -1 /etc/pam.d/
chfn
chsh
common-account
common-auth
common-password
common-session
cron
login
omauth
other
passwd
samba
ssh
su</pre></div></div>

<p>In particolare i file interessati nella fase di login sono <em>common-account</em>, <em>common-auth</em> e <em>common-session</em>.</p>
<p>La componente SAMBA che gestisce l&#8217;interfacciamento con Active Directory è, come già spiegato, <em>winbind</em>. Il pacchetto fornito con le maggiori distribuzioni fornisce, fra gli altri, quello che è il file base per l&#8217;introduzione di Active Directory nel login di sistema: pam_winbind.so. Tale file dovrà essere introdotto all&#8217;interno della configurazione del sistema di login.</p>
<p>Il primo file ad essere modificato dovrà essere <em>/etc/pam.d/common-account</em> il cui contenuto dovrà essere il seguente:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">account sufficient      pam_winbind.so
account required        pam_unix.so</pre></div></div>

<p>Questo file di default controlla che la password dell&#8217;utente non sia scaduta. Con l&#8217;aggiunta della riga relativa a winbind inoltre assume come sufficiente la credenziale verificata da Active Directory.</p>
<p>Il secondo file da considerare sarà <em>/etc/pam.d/common-auth</em> che di default impone l&#8217;utilizzo del meccanismo UNIX standard per l&#8217;autenticazione. Tale file dovrà assumere questo contenuto:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">auth    sufficient      pam_winbind.so
auth    required        pam_unix.so nullok_secure use_first_pass</pre></div></div>

<p>Quanto inserito comunica al sistema di considerare sufficiente l&#8217;avvenuta autenticazione con <em>winbind</em>. Nella seconda riga viene aggiunto il parametro <em>use_first_pass</em> in modo che venga utilizzata la prima password inserita per autenticare l&#8217;utente e prevenire una doppia richiesta di inserimento per la parola d&#8217;ordine.</p>
<p>L&#8217;ultimo file che andrà modificato è <em>/etc/pam.d/common-session</em> che contiene le informazioni relative alle sessioni interattive e non che l&#8217;utente potrà avviare:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">session required        pam_unix.so
session required        pam_mkhomedir.so skel=/etc/skel umask=0022</pre></div></div>

<p>rispetto al default viene aggiunta la riga relativa al modulo <em>pam_mkhomedir.so</em> per fare in modo che il sistema per ogni utente identificato che non possiede una <em>home directory</em> ne crei una ex-novo partendo dalle specifiche presenti nel file di <em>/etc/skel</em> con i permessi di scrittura relativi.</p>
<p><strong>Prova di login</strong></p>
<p>A questo punto il sistema è pronto a permettere il login alle utenze Active Directory, relativamente a tutti i servizi, compreso ssh:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ ssh &quot;DOMINIO.IT\user1&quot;@192.168.0.100
DOMINIO.ITuser1@192.168.0.100's password: 
Creating directory '/home/DOMINIO.IT/user1'.
Linux anomalia 2.6.26-1-686 #1 SMP Fri Mar 13 18:08:45 UTC 2009 i686
&nbsp;
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
&nbsp;
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
DOMINIO.IT\user1@anomalia:~$</pre></div></div>

<p>Essendo il primo tentativo di login effettuato e data la configurazione PAM precedentemente illustrata, il sistema ha creato la directory <em>/home/DOMINIO.IT/user1</em>.<br />
Nella cartella <em>/home/DOMINIO.IT</em> verranno pertanto registrate tutte le <em>home directories</em> relative agli utenti:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ ls -la /home/DOMINIO.IT/
totale 12
drwxr-xr-x 3 root                    root                             4096  9 apr 17:32 .
drwxr-xr-x 3 root                    root                             4096  9 apr 17:32 ..
drwxr-xr-x 2 DOMINIO.IT\user1 DOMINIO.IT\domain users 4096  9 apr 17:32 user1</pre></div></div>

<p>L&#8217;accesso al sistema degli utenti Active Directory è garantito nella stessa medesima forma degli utenti di sistema standard.</p>
<p><strong>Conclusioni</strong></p>
<p>Questa panoramica di SAMBA ha voluto illustrare quello che è lo stato dell&#8217;arte dell&#8217;integrazione tra SAMBA e Microsoft Active Directory ad oggi, ma moltissime sono le novità che bollono in pentola dal team di sviluppo del progetto Samba. La versione 4 è ormai una realtà e sebbene la strada verso la prima release stabile sia lunga, le aspettative in merito sono altissime. Questa versione sarà la prima ad integrare la completa gestione di Active Directory ed un&#8217;altra serie di importanti novità che potranno, perché no, essere argomento di un prossimo articolo.</p>
<p><strong>Articoli della serie</strong></p>
<p>Samba e Active Directory (1 di 3): <a href="http://www.miamammausalinux.org/2009/04/samba-e-active-directory-1-di-3-diventare-parte-di-un-dominio/">diventare parte di un Dominio</a><br />
Samba e Active Directory (2 di 3): <a href="http://www.miamammausalinux.org/2009/05/samba-e-active-directory-2-di-3-interrogare-il-dominio/">interrogare il dominio</a><br />
Samba e Active Directory (3 di 3): <a href="http://www.miamammausalinux.org/2009/05/samba-e-active-directory-3-di-3-configurare-pam-per-lautenticazione-locale/">configurare pam per l&#8217;autenticazione locale</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2009/05/samba-e-active-directory-3-di-3-configurare-pam-per-lautenticazione-locale/feed/</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
		<item>
		<title>Samba e Active Directory (2 di 3): interrogare il dominio</title>
		<link>http://www.miamammausalinux.org/2009/05/samba-e-active-directory-2-di-3-interrogare-il-dominio/</link>
		<comments>http://www.miamammausalinux.org/2009/05/samba-e-active-directory-2-di-3-interrogare-il-dominio/#comments</comments>
		<pubDate>Wed, 06 May 2009 09:50:26 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Samba]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Condivisione dati]]></category>
		<category><![CDATA[Integrazione Active Directory]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=616</guid>
		<description><![CDATA[Dopo aver introdotto Active Directory ed aver configurato SAMBA per l&#8217;integrazione con un dominio vengono affrontati in questa seconda puntata i metodi per l&#8217;interrogazione dei domini: come ricavare le informazioni sugli utenti ed i gruppi, come accedere ad un computer di dominio ed eseguirvi un comando. Il tutto attraverso gli strumenti offerti da SAMBA, dalla [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/samba.png" alt="samba" title="samba" class="alignnone size-full wp-image-196" /></p>
<p>Dopo aver introdotto Active Directory ed aver configurato SAMBA per l&#8217;integrazione con un dominio vengono affrontati in questa seconda puntata i metodi per l&#8217;interrogazione dei domini: come ricavare le informazioni sugli utenti ed i gruppi, come accedere ad un computer di dominio ed eseguirvi un comando.<br />
Il tutto attraverso gli strumenti offerti da SAMBA, dalla linea di comando.</p>
<p><strong>Interrogazioni</strong></p>
<p>Tra gli strumenti che samba mette a disposizione dalla linea di comando per l&#8217;interrogazione delle varie componenti del dominio ne verranno analizzati tre: <em>net</em>, già utilizzato nel precedente articolo per aggiungere la macchina al dominio, <em>smbclient</em>, un&#8217;interfaccia simile a quella di <em>FTP</em> ma utilizzabile per accedere a condivisioni <em>Microsoft Windows</em> e <em>wbinfo</em>, programma che interroga il demone <em>winbind</em>, la componente si SAMBA che si interfaccia con il servizio <em>Active Directory</em>.</p>
<p><strong>net</strong></p>
<p>l&#8217;opzione <em>user</em> del comando <em>net</em> associata alla specifica di <em>-l</em> consente di ricavare l&#8217;elenco utenti del dominio specificato nel file di configurazione di SAMBA:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ net -U Administrator ads user -l
Enter Administrator's password:
&nbsp;
User name             Comment
-----------------------------
user1                 Utente di test #1
Guest                 Built-in account for guest access to the computer/domain
...
...</pre></div></div>

<p>Allo stesso modo specificando l&#8217;opzione <em>group</em> è possibile ottenere l&#8217;elenco gruppi:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ net -U Administrator ads group -l
Enter Administrator's password:
&nbsp;
Group name            Comment
-----------------------------
Exchange Servers      This group contains all the Exchange servers. This group should not be deleted.
Exchange Organization Users in this group will have permission to read and modify all Exchange configuration. This group should not be deleted.
Exchange Recipient Ad Users in this group can manage Exchange user attributes in the Active Directory and perform select mailbox operations. This group should not be deleted.
...
...</pre></div></div>

<p><em>net</em> permette anche di creare, cancellare e rinominare utenti e gruppi, ad esempio per creare il gruppo test_group il comando sarà:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ net -U Administrator ads group ADD test_group
Administrator's password: 
Group test_group added</pre></div></div>

<p>Parallelamente un utente potrà esser creato come segue:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ net -U Administrator ads user ADD test_user
Administrator's password: 
User test_user added</pre></div></div>

<p>Purtroppo net non consente ancora di operare sull&#8217;appartenenza dei gruppi, che è prevista nelle versioni future di SAMBA. Tutti le opzioni disponibili possono essere visionate nella man page del comando accessibile digitando <em>man net</em>.</p>
<p><strong>smbclient con il ticket KERBEROS</strong></p>
<p>Il tool <em>smbclient</em> offre un&#8217;interfaccia testuale con comandi simili a quelli <em>ftp</em> attraverso i quali è possibile interrogare ed agire su cartelle relative a condivisioni di tipo SMB/CIFS (cioè Microsoft Windows). Se già da questo punto di vista lo strumento appare subito utilissimo esiste un ulteriore vantaggio che lo rende indispensabile per le architetture Linux integrate con Active Directory: infatti smbclient può utilizzare l&#8217;autenticazione KERBEROS descritta nel precedente articolo per connettersi ai servizi remoti.<br />
Prima di presentare gli esempi di utilizzo è quindi necessario fare acquisire al sistema il <em>ticket</em> KERBEROS attraverso il comando <em>kinit</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ kinit -V Administrator@DOMINIO.IT
Password for Administrator@DOMINIO.IT:
Authenticated to Kerberos v5</pre></div></div>

<p>Il sistema è quindi in possesso della verifica necessaria per presentarsi ai servizi remoti. Utilizzando l&#8217;opzione <em>-k</em> di smbclient è possibile ad esempio sfogliare un computer di dominio del quale si conosce l&#8217;indirizzo IP o il nome. Nel nostro caso il sistema si chiama <em>Test-win03</em> e l&#8217;invocazione di smbclient con i parametri utilizzati elencherà tutte le condivisioni disponibili sul server pubblico Microsoft:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ smbclient -k -L Test-win03
OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows Server 2003 5.2]
&nbsp;
       Sharename           Type      Comment
       ---------           ----       -------
       print$              Disk       Driver della stampante
       C$                  Disk       Condivisione predefinita
       IPC$                IPC        IPC remoto
       ADMIN$              Disk      Amministrazione remota
       HPLaserJ            Printer   HP LaserJet 4100 Series PS
       musica              Disk      
OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows Server 2003 5.2]
&nbsp;
	Server               Comment
	---------            -------
&nbsp;
	Workgroup            Master
	---------            -------</pre></div></div>

<p>L&#8217;output del comando mostra quali condivisioni sono disponibili sul server remoto, su queste è quindi possibile eseguire dei comandi. Ad esempio per effettuare il listato del contenuto della cartella <em>musica</em> è possibile invocare smbclient in questa forma:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ smbclient -k //Test-win03/musica -c &quot;ls&quot;
OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows Server 2003 5.2]
  .                                   D        0  Mon Feb 16 17:13:06 2009
  ..                                  D        0  Mon Feb 16 17:13:06 2009
  Cartoni Animati                     D        0  Mon May 19 13:39:51 2008
  Collaborazioni                      D        0  Mon Feb 16 11:17:12 2009
  Cover                               D        0  Thu Dec 18 16:04:02 2008
...
...</pre></div></div>

<p>smbclient dispone inoltre di una shell, in tutto e per tutto simile ad una shell di tipo ftp. Per accedervi è sufficiente invocare smbclient senza altri paramente che il già citato <em>-k</em> ed il nome della macchina seguito dalla cartella:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ smbclient //Test-win03/musica -k
OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: &gt;</pre></div></div>

<p>I comandi disponibili nell&#8217;interfaccia si ottengono digitando <em>help</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">smb: &gt;help
?              altname        archive        blocksize      cancel         
case_sensitive cd             chmod          chown          del            
dir            du             exit           get            getfacl        
hardlink       help           history        lcd            link           
lowercase      ls             mask           md             mget           
mkdir          more           mput           newer          open           
print          prompt         put            pwd            q              
queue          quit           rd             recurse        reget          
rename         reput          rm             rmdir          showacls       
setmode        stat           symlink        tar            tarmode        
translate      volume         vuid           logon          listconnect    
showconnect    !</pre></div></div>

<p>Altre informazioni utili su smbclient sono ottenibili attraverso la <em>man page</em> (<em>man smbclient</em>) del programma.</p>
<p><strong>wbinfo</strong></p>
<p>L&#8217;ultimo comando illustrato è <em>wbinfo</em> che come anticipato permette di interrogare il demone <em>winbind</em> responsabile delle comunicazione tra SAMBA ed <em>Active Directory</em> e l&#8217;integrazione dei due sistemi. In particolare il demone si occupa di effettuare il <em>mapping</em> delle utenze, di associare cioè l&#8217;identificativo univoco presente sul dominio ad un identificativo univoco LOCALE alla macchina SAMBA.<br />
Per capire quanto illustrato, si osservi il seguente comando:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ for i in `wbinfo -u --domain=DOMINIO.IT`; do wbinfo -i &quot;$i&quot;; done
DOMINIO.ITuser1:*:10000:10004:User 1:/home/DOMINIO.IT/user1:/bin/bash
DOMINIO.ITuser2:*:10001:10004:User 2:/home/DOMINIO.IT/user2:/bin/bash
DOMINIO.ITuser3:*:10002:10004:User 3:/home/DOMINIO.IT/user3:/bin/bash
DOMINIO.ITuser4:*:10003:10004:User 4:/home/DOMINIO.IT/user4:/bin/bash
...
...</pre></div></div>

<p>L&#8217;elenco ricavato dal comando è del tutto simile a quanto contenuto nel file <em>/etc/passwd</em> di sistema, ad ogni utenza è infatti associato un identificativo univoco, un gruppo, una <em>home dir</em> ed una shell di login.<br />
Anche in questo caso tutte le opzioni disponibili per il comando <em>wbinfo</em> sono disponibili nella <em>man page</em> (<em>man wbinfo</em>).</p>
<p><strong>Conclusioni</strong></p>
<p>L&#8217;esito dell&#8217;ultimo comando illustrato introduce quello che sarà l&#8217;argomento della prossima ed ultima puntata di questa serie: l&#8217;integrazione di <em>Active Directory</em> con il login di sistema attraverso la configurazione di <em>PAM</em>.</p>
<p><strong>Articoli della serie</strong></p>
<p>Samba e Active Directory (1 di 3): <a href="http://www.miamammausalinux.org/2009/04/samba-e-active-directory-1-di-3-diventare-parte-di-un-dominio/">diventare parte di un Dominio</a><br />
Samba e Active Directory (2 di 3): <a href="http://www.miamammausalinux.org/2009/05/samba-e-active-directory-2-di-3-interrogare-il-dominio/">interrogare il dominio</a><br />
Samba e Active Directory (3 di 3): <a href="http://www.miamammausalinux.org/2009/05/samba-e-active-directory-3-di-3-configurare-pam-per-lautenticazione-locale/">configurare pam per l&#8217;autenticazione locale</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2009/05/samba-e-active-directory-2-di-3-interrogare-il-dominio/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Samba e Active Directory (1 di 3): diventare parte di un Dominio</title>
		<link>http://www.miamammausalinux.org/2009/04/samba-e-active-directory-1-di-3-diventare-parte-di-un-dominio/</link>
		<comments>http://www.miamammausalinux.org/2009/04/samba-e-active-directory-1-di-3-diventare-parte-di-un-dominio/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 15:00:15 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Samba]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Condivisione dati]]></category>
		<category><![CDATA[Integrazione Active Directory]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=585</guid>
		<description><![CDATA[In questa serie di tre articoli verrà affrontata l&#8217;integrazione tra Samba ed Active Directory: Come aggiungere un sistema Linux ad un dominio Active Directory configurando opportunamente Samba, come effettuare interrogazioni relative ai dati del dominio attraverso i tool messi a disposizione dal pacchetto ed infine come configurare le librerie PAM del sistema affinché le autenticazioni [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/samba.png" alt="samba" title="samba" class="alignnone size-full wp-image-196" /></p>
<p>In questa serie di tre articoli verrà affrontata l&#8217;integrazione tra Samba ed Active Directory: Come aggiungere un sistema Linux ad un dominio Active Directory configurando opportunamente Samba, come effettuare interrogazioni relative ai dati del dominio attraverso i tool messi a disposizione dal pacchetto ed infine come configurare le librerie PAM del sistema affinché le autenticazioni per l&#8217;accesso vengano effettuate attraverso il dominio.<br />
Nella prima parte oltre ad un&#8217;introduzione su Active Directory verrà trattata la configurazione di SAMBA per l&#8217;integrazione con un dominio.</p>
<p><strong>Cos&#8217;è Active Directory</strong></p>
<p><a href="http://it.wikipedia.org/wiki/Active_Directory">Active Directory</a> di Microsoft Windows è ormai l&#8217;insieme di servizi standard per i sistemi che accentrano i dati relativi alle risorse di un dominio, siano queste utenti, computer o periferiche, tutti fanno capo al direttorio centralizzato che è disponibile nel sistema operativo Microsoft Windows dalla versione 2000 in poi.<br />
Molti sono i servizi che entrano in gioco in un dominio Active Directory ad esempio le informazioni relative alle risorse sono registrate in un direttorio <a href="http://it.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol">LDAP</a> opportunamente personalizzato da Microsoft, la risoluzione dei nomi è affidata al servizio DNS interno ai server Active Directory.<br />
La componente base di Active Directory è il protocollo <a href="http://it.wikipedia.org/wiki/Kerberos">Kerberos</a>, che permette di autenticarsi in maniera cifrata.<br />
Una volta che la propria identità viene riconosciuta, è quindi possibile accedere in maniera sicura a tutte le risorse per le quali si possiedono i permessi. Tale peculiarità è definita <a href="http://it.wikipedia.org/wiki/Single_Sign-On">SSO</a> o <a href="http://it.wikipedia.org/wiki/Single_Sign-On">Single Sign-On</a>.</p>
<p><strong>Configurazione del sistema</strong></p>
<p>Il sistema che viene configurato nell&#8217;esempio parte da questi presupposti: il dominio Active Directory è <em>DOMINIO.IT</em> ed è erogato da tre server <em>adserver1.dominio.it</em>, <em>adserver2.dominio.it</em> ed <em>adserver3.dominio.it</em>. Si parte dal presupposto che si disponga di un&#8217;utenza amministrativa (<em>Administrator</em>) o comunque di un&#8217;utenza che abbia i permessi di aggiungere computer al dominio. Il server SAMBA configurato sarà appunto un computer aggiunto al dominio <em>DOMINIO.IT</em>.</p>
<p><strong>Installazione KERBEROS</strong></p>
<p>Per far funzionare Kerberos su un sistema Linux (in questo caso, come detto, Debian Lenny) è sufficiente il pacchetto <em>krb5-user</em>. Tale pacchetto contiene tutti gli eseguibili necessari all&#8217;interfacciamento con i server di autenticazione. Inoltre, per completezza, è conveniente installare anche il pacchetto <em>krb5-config</em> contenente un template relativo ai file di configurazione e <em>krb5-doc</em> che contiene la documentazione completa del funzionamento di Kerberos sotto Linux:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ apt-get install krb5-user krb5-config krb5-doc</pre></div></div>

<p>Il file di configurazione <em>/etc/krb5.conf</em> contiene le impostazioni necessarie al collegamento con il (o &#8220;i&#8221;) server di autenticazione e, pertanto, dovrà contenere le informazioni ad essi associate:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">[libdefaults]
        default_realm = DOMINIO.IT
&nbsp;
[realms]
        DOMINIO.IT = {
                kdc = adserver1.dominio.it
                kdc = adserver2.dominio.it
                kdc = adserver3.dominio.it
                admin_server = adserver1.dominio.it
                  }</pre></div></div>

<p>Nella sezione <em>libdefaults</em> sono definite le informazioni di default per la libreria krb5, la sezione <em>realms</em> contiene le definizioni specifiche relative ai vari domini dichiarati, nel caso sopra descritto vi sono definiti i tre server <em>kdc</em> (acronimo che sta per <em>Key Distribution Server</em>) ai quali vengono richiesti i permessi di accesso alle risorse ed il parametro <em>admin_server</em> che indica il <em>Master Kerberos server</em> ossia il principale erogatore del servizio.<br />
La configurazione illustrata è minimale e permette i test che verranno effettuati, ma molte altre sono le opzioni relative a Kerberos e sono disponibili nella <em>man page</em> consultabile attraverso questo comando:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ man krb5.conf</pre></div></div>

<p>A completamento della configurazione sono necessarie due ulteriori operazioni, la prima è l&#8217;aggiunta dei server dichiarati nel file <em>krb5.conf</em> nel file hosts:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;"># ADs Servers
192.168.0.1    adserver1.dominio.it
192.168.0.2    adserver2.dominio.it
192.168.0.3    adserver3.dominio.it</pre></div></div>

<p>In questo modo malfunzionamenti nel sistema di risoluzione dei nomi (e cioè del server DNS dichiarato in /etc/resolv.conf) non comporteranno l&#8217;interruzione del servizio.<br />
La seconda operazione riguarda l&#8217;orario del sistema che deve essere assolutamente esatto per potersi interfacciare con un server Active Directory, installando quindi il pacchetto <em>ntpdate</em> è possibile sistemare l&#8217;orario automaticamente, puntando un servizio ntp pubblico come <em>time.ien.it</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ apt-get install ntpdate
$ ntpdate time.ien.it
 9 Apr 16:44:53 ntpdate[2806]: step time server 193.204.114.105 offset -7226.860681 sec</pre></div></div>

<p>Sebbene l&#8217;argomento non sia trattato in questo articolo, ideale sarebbe avere un sistema automatizzato che costantemente sistemi l&#8217;orario, come ad esempio <em>openntpd</em>.<br />
A questo punto, terminata la configurazione, è tempo di richiedere il primo ticket al server attraverso il comando <em>kinit</em>. La richiesta dovrà essere fatta da un utente privilegiato (quindi <em>Administrator</em> o chi per esso):</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ kinit -V Administrator@DOMINIO.IT
Password for Administrator@DOMINIO.IT:
Authenticated to Kerberos v5</pre></div></div>

<p>Se il messaggio restituito dal comando è &#8220;Authenticated to Kerberos v5&#8243;, allora tutto è andato come da pronostico. In alternativa sarà necessario controllare la bontà dei dati inseriti e rilanciare il comando.</p>
<p><strong>Installazione SAMBA e Winbind</strong></p>
<p>Il secondo componente da configurare per l&#8217;attuazione del progetto è SAMBA insieme alla parte che si occupa di interfacciarsi con i server Microsoft Windows per il reperimento delle informazioni di dominio:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ apt-get install samba smbclient smbfs winbind</pre></div></div>

<p>Il contenuto del file di configurazione di SAMBA, /etc/samba/smb.conf, dovrà essere simile al seguente:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">[global]
        realm = DOMINIO.IT
        server string = %h : Samba %v
        security = ADS
        auth methods = guest, sam, winbind
        password server = adserver1.dominio.it, adserver2.dominio.it, adserver3.dominio.it
        log level = 3 passdb:10 auth:10 winbind:10
        max log size = 50
        load printers = No
        show add printer wizard = No
        preferred master = No
        ldap ssl = no
        idmap uid = 10000-200000
        idmap gid = 10000-200000
        template shell = /bin/bash
        create mask = 0770
        directory mask = 0770
        reset on zero vc = yes</pre></div></div>

<p>La configurazione al di là delle opzioni ininfluenti per il progetto, prevede i seguenti parametri:</p>
<ol>
<li><em>realm</em>: il dominio active directory DOMINIO.IT;</li>
<li><em>security</em>: il tipo di funzionamento che SAMBA deve assumere, che è &#8220;ADS&#8221; (Active Directory);</li>
<li><em>auth methods</em>: i metodi di autenticazione che sono guest (ospite), sam (il database standard delle utenze SAMBA) e winbind (attraverso Microsoft Windows);</li>
<li><em>password server</em>: i server presso i quali autenticarsi (identici a quelli dichiarati per Kerberos);</li>
<li><em>idmap uid</em> e <em>idmap gid</em>: gli identificativi di partenza con cui mappare le utenze lette dai server Windows, in modo che a queste utenze possano essere assegnati permessi locali;</li>
<li><em>reset on zero vc</em>: indica al sistema di resettare una connessione se ne subentra un&#8217;altra dallo stesso indirizzo IP. Quest&#8217;opzione è utile quando le connessioni di rete non sono stabili e Microsoft Windows riapre una nuova connessione sebbene la precedente abbia ancora dei file allocati;</li>
</ol>
<p>Prima di avviare il servizio SAMBA è necessaria una variazione al file <em>/etc/nsswitch.conf</em> in modo da indicare al sistema che i dati per le autenticazioni possono essere ricercati oltre che nei file locali, anche nel server <em>winbind</em>, pertanto le righe corrispondenti a queste informazioni andranno variate come indicato di seguito:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">passwd:         compat winbind
group:          compat winbind
...
hosts:          files dns wins</pre></div></div>

<p>A questo punto dopo il riavvio dei servizi appena configurati:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ /etc/init.d/samba restart
Stopping Samba daemons: nmbd smbd.
Starting Samba daemons: nmbd smbd.
$ /etc/init.d/winbind restart
Stopping the Winbind daemon: winbind.
Starting the Winbind daemon: winbind.</pre></div></div>

<p>Si potrà includere il server all&#8217;interno del dominio utilizzando il comando <em>net</em> per eseguire l&#8217;operazione di <em>join</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ net ads join -U Administrator
Enter Administrator's password:
Using short domain name -- DOMINIO
Joined 'ANOMALIA' to realm 'dominio.it'</pre></div></div>

<p>L&#8217;output del comando conferma che il server ora è parte del dominio. Un&#8217;ulteriore verifica è effettuabile sempre attraverso il comando <em>net</em> mediante l&#8217;utilizzo dell&#8217;opzione <em>info</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ net ads info
LDAP server: 192.168.0.1
LDAP server name: adserver1.dominio.it
Realm: DOMINIO.IT
Bind Path: dc=DOMINIO,dc=IT
LDAP port: 389
Server time: gio, 09 apr 2009 17:07:33 CEST
KDC server: 192.168.0.1
Server time offset: 2</pre></div></div>

<p><strong>Conclusioni</strong></p>
<p>Nella prossima puntata verranno illustrate le tecniche per interrogare le risorse ed accedervi.</p>
<p><strong>Articoli della serie</strong></p>
<p>Samba e Active Directory (1 di 3): <a href="http://www.miamammausalinux.org/2009/04/samba-e-active-directory-1-di-3-diventare-parte-di-un-dominio/">diventare parte di un Dominio</a><br />
Samba e Active Directory (2 di 3): <a href="http://www.miamammausalinux.org/2009/05/samba-e-active-directory-2-di-3-interrogare-il-dominio/">interrogare il dominio</a><br />
Samba e Active Directory (3 di 3): <a href="http://www.miamammausalinux.org/2009/05/samba-e-active-directory-3-di-3-configurare-pam-per-lautenticazione-locale/">configurare pam per l&#8217;autenticazione locale</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2009/04/samba-e-active-directory-1-di-3-diventare-parte-di-un-dominio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RAID Software : Proteggere i dati con l’aiuto del kernel (5 di 5)</title>
		<link>http://www.miamammausalinux.org/2009/04/raid-software-proteggere-i-dati-con-l%e2%80%99aiuto-del-kernel-5-di-5/</link>
		<comments>http://www.miamammausalinux.org/2009/04/raid-software-proteggere-i-dati-con-l%e2%80%99aiuto-del-kernel-5-di-5/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 07:20:31 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Clustering]]></category>
		<category><![CDATA[DRBD]]></category>
		<category><![CDATA[Linux HA]]></category>
		<category><![CDATA[NFS]]></category>
		<category><![CDATA[Raid]]></category>
		<category><![CDATA[Samba]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Alta affidabilità]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[Condivisione dati]]></category>
		<category><![CDATA[Protezione dati]]></category>
		<category><![CDATA[Sistema]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=578</guid>
		<description><![CDATA[Dopo il primo case study relativo all&#8217;impiego di mdadm per la creazione di un sistema RAID 1 con disco estraibile, l&#8217;ultima puntata di questa serie di articoli presenta nel dettaglio una soluzione di network Raid 1 creata attraverso il software drbd, per una replica in rete del disco contenente i dati e la condivisione di [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/linux.png" alt="linux" title="linux" width="85" height="100" class="alignnone size-full wp-image-292" /></p>
<p>Dopo il primo case study relativo all&#8217;impiego di <em>mdadm</em> per la creazione di un sistema RAID 1 con disco estraibile, l&#8217;ultima puntata di questa serie di articoli presenta nel dettaglio una soluzione di network Raid 1 creata attraverso il software <em>drbd</em>, per una replica in rete del disco contenente i dati e la condivisione di questi attraverso i servizi NFS e SAMBA, in alta affidabilità.</p>
<p><strong>DRBD : Network RAID 1</strong></p>
<p>Fino ad ora sono state illustrate soluzioni RAID applicate a singole macchine, ma è possibile garantire la protezione dai dati anche attraverso RAID distribuiti, in soluzioni ad alta affidabilità. Uno fra i progetti più interessanti in questo ambito, giunto allo stato di piena maturità, è sicuramente DRBD (http://www.drbd.org).<br />
DRBD permette di replicare dati (in mirror, sul modello del RAID 1) da una macchina primaria definita “master” ad una secondaria definita “slave” attraverso una connessione di rete dedicata, tipicamente ottenuta dal collegamento di due schede di rete attraverso un cavo “cross” (senza disporre quindi di uno switch apposito).<br />
Tecnicamente DRBD è un modulo del kernel, proprio come sono moduli quelli del RAID e come per questi moduli la gestione di DRBD è affidata ad una serie di utilities che comprende (come per mdadm) un demone che gestisce ed attiva le configurazioni. La sostanziale differenza tra DRBD ed i moduli standard di RAID è che questo modulo non è ancora incluso nei sorgenti ufficiali del kernel. Per questo motivo prima di poter utilizzare DRBD è necessario compilare il moduli del kernel partendo dai sorgenti.<br />
Tipicamente DRBD viene utilizzato insieme al programma heartbeat, che consente di estenderne le funzionalità attraverso la gestione dei failover. Per failover si intendono tutte quelle situazioni in cui un servizio erogato da una macchina, se questa smette di funzionare, rimane accessibile attraverso una seconda che ne garantisce l&#8217;accessibilità costante.<br />
I servizi erogabili attraverso heartbeat sono molteplici e possono riguardare i più svariati utilizzi : da un webserver ad un database MySQL, per arrivare a dei filesystem condivisi via NFS o SAMBA.<br />
Nel case study di questo paragrafo verranno illustrate le operazioni necessarie all&#8217;installazione di DRBD e alla sua integrazione con heartbeat affinché condivida un filesystem in rete via NFS e SAMBA.</p>
<p><strong>Case Study 2 &#8211; DRBD in una soluzione di alta affidabilità con heartbeat, NFS e SAMBA.</strong></p>
<p>Il seguente case study descrive quanto è stato fatto per la società 3Dvision che effettua consulenza, supervisione e produzione di elaborazioni digitali destinate ai settori pubblicitario, promozionale e televisivo.<br />
La grande quantità di dati trattati e la criticità del loro contenuto hanno sempre imposto la memorizzazione di questi attraverso hardware proprietario. Nella rete era infatti installato un dispositivo NAS (Network Attached Storage), che attraverso un sistema operativo proprietario, rendeva disponibile il proprio spazio.<br />
Nel momento in cui il NAS si è guastato, si è optato per una scelta di radicale cambiamento, basata su hardware di consumo e software Opensource. E&#8217; stato quindi acquistato hardware per creare due macchine identiche ciascuna con processore AMD Sempron 3200 MegaHertz, un GigaByte di RAM, due schede di rete Gigabit e quattro dischi da 300 GigaByte.<br />
L&#8217;obiettivo finale è stato quello di ottenere 1,2 Tb di spazio debitamente protetto e condiviso in rete attraverso SAMBA ed NFS.</p>
<p><strong>Sviluppo del progetto</strong></p>
<p>Su entrambe le macchine è stato installato il sistema operativo Debian Sarge in forma minimale, senza cioè ambiente grafico, attraverso un lettore DVD esterno collegato via USB. In questo modo si sono potuti sfruttare tutti e due i canali IDE per il collegamento dei quattro dischi da 300 GigaByte gestiti attraverso il kernel in RAID 0, per un totale di 1,2 TeraByte di spazio disponibile.<br />
Per ovviare all&#8217;insicurezza dettata dalla scelta del RAID 0 (se un disco dei quattro cessa di funzionare, tutto il sistema cade) si è scelto di effettuare un RAID 1 in rete attraverso DRBD. In questo modo si è sfruttata la capacità di scrittura parallela del RAID 0 e l&#8217;affidabilità della copia dati del Network RAID 1 via DRBD.<br />
Il progetto è rappresentato in figura 5 :</p>
<div id="attachment_579" class="wp-caption alignnone" style="width: 282px"><a href="http://www.miamammausalinux.org/wp-content/uploads/2009/04/raid-software_articolo_1-10-figura5.png"><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/04/raid-software_articolo_1-10-figura5-272x300.png" alt="Figura 5" title="raid-software_articolo_1-10-figura5" width="272" height="300" class="size-medium wp-image-579" /></a><p class="wp-caption-text">Figura 5</p></div>
<p><strong>Configurazione di DRBD</strong></p>
<p>Al termine delle installazioni lo schema di partizionamento delle macchine è il seguente :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ fdisk -l
&nbsp;
Disk /dev/hda: 300.0 GB, 300090728448 bytes
255 heads, 63 sectors/track, 36483 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
&nbsp;
   Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1          30      240943+  82  Linux swap / Solaris
/dev/hda2              31        1246     9767520   83  Linux
/dev/hda3            1247       36483   283041202+  fd  Linux raid autodetect
&nbsp;
Disk /dev/hdb: 300.0 GB, 300090728448 bytes
255 heads, 63 sectors/track, 36483 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
&nbsp;
   Device Boot      Start         End      Blocks   Id  System
/dev/hdb1               1          30      240943+  82  Linux swap / Solaris
/dev/hdb2              31       36483   292808722+  fd  Linux raid autodetect
&nbsp;
Disk /dev/hdc: 300.0 GB, 300090728448 bytes
255 heads, 63 sectors/track, 36483 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
&nbsp;
   Device Boot      Start         End      Blocks   Id  System
/dev/hdc1               1          30      240943+  82  Linux swap / Solaris
/dev/hdc2              31       36483   292808722+  fd  Linux raid autodetect
&nbsp;
Disk /dev/hdd: 300.0 GB, 300090728448 bytes
255 heads, 63 sectors/track, 36483 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
&nbsp;
   Device Boot      Start         End      Blocks   Id  System
/dev/hdd1               1          30      240943+  82  Linux swap / Solaris
/dev/hdd2              31       36483   292808722+  fd  Linux raid autodetect
&nbsp;
Disk /dev/md0: 1189.3 GB, 1189342216192 bytes
2 heads, 4 sectors/track, 290366752 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
&nbsp;
Disk /dev/md0 doesn't contain a valid partition table</pre></div></div>

<p>Ciascuno dei quattro dischi contiene un&#8217;area di swap ed un&#8217;area dedicata al RAID, solo il primo dei quattro contiene una partizione da 10 Giga destinata alla partizione root.<br />
Lo stato del RAID 0 sulle due macchine è il seguente :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid5] [multipath] [raid6] [faulty]
md0 : active raid0 hdd2[3] hdc2[2] hdb2[1] hda3[0]
      1161467008 blocks 64k chunks
&nbsp;
unused devices: &lt;none&gt;</pre></div></div>

<p>Entrambe possiedono una device <em>/dev/md0</em> di circa 1,2 TeraByte gestita in RAID 0 dal kernel.<br />
La prima fase del progetto riguarda l&#8217;installazione dei pacchetti necessari a ricompilare il kernel secondo la comodissima metodologia Debian, insieme alle utility ed ai sorgenti di DRBD  :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ apt-get install kernel-source kernel-package bzip2 libncurses5-dev drbd0.7-utils drbd0.7-module-source</pre></div></div>

<p>Per creare il kernel personalizzato vanno decompressi i sorgenti e lanciata la configurazione che va effettuata sulla base dell&#8217;hardware delle macchine impiegate :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ cd /usr/src/
$ tar -xjvf kernel-source-2.6.8.tar.bz2
$ cd /usr/src/kernel-source-2.6.8
$ make menuconfig</pre></div></div>

<p>Terminata questa fase, andranno creati i pacchetti relativi al kernel ed ai moduli DRBD :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ make-kpkg --revision 1 --append-to-version rasca-3dv kernel_image
$ make-kpkg --revision 1 --append-to-version rasca-3dv modules_image
$ ls -1 /usr/src/
drbd0.7-module-2.6.8rasca-3dv_0.7.10-4+1_i386.deb
drbd0.7.tar.gz
kernel-image-2.6.8rasca-3dv_1_i386.deb
linux-source-2.6.8
linux-source-2.6.8.tar.bz2
modules</pre></div></div>

<p>E di conseguenza installati :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ dpkg -i kernel-image-2.6.8rasca-3dv_1_i386.deb drbd0.7-module-2.6.8rasca-3dv_0.7.10-4+1_i386.deb</pre></div></div>

<p>Il sistema va avviato col nuovo kernel (vanno ignorati gli errori in fase di boot del demone DRBD in quanto non è stato ancora configurato). Per verificare che il sistema sia stato avviato col nuovo kernel è sufficiente lanciare il comando “uname -a” :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ uname -a
Linux 3dv-ha-1 2.6.8rasca-3dv #1 PREEMPT Sat Jun 17 20:56:39 CEST 2006 i686 GNU/Linux</pre></div></div>

<p>Il sistema è quindi pronto per la configurazione di DRBD. Come da specifiche, le interfacce presenti nel sistema sono 3, eth0 (Gigabit, PCI) collegata alla LAN, eth1 (Gigabit, PCI) collegata attraverso il cavo cross all&#8217;altra macchina e eth2 (Megabit, integrata nella scheda madre) scollegata :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:14:C1:0F:50:AF
          inet addr:192.168.0.8  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19841 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32402 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6882512 (6.5 MiB)  TX bytes:42354250 (40.3 MiB)
          Interrupt:177 Base address:0xe000
&nbsp;
eth1      Link encap:Ethernet  HWaddr 00:14:C1:0F:50:AA
          inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:218 (218.0 b)  TX bytes:218 (218.0 b)
          Interrupt:185
&nbsp;
eth2      Link encap:Ethernet  HWaddr 00:15:F2:D0:FC:B9
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:193 Base address:0xa400</pre></div></div>

<p>Il file di configurazione di DRBD è /etc/drbd.conf ed è diviso a blocchi. Per ogni risorsa esiste un blocco nominato “resource” contenente dei sotto-blocchi. Ciascuno dei blocchi si apre e si chiude con una parentesi graffa. Per le esigenze del progetto, la compilazione ideale è la seguente :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">resource drbd0 {
  protocol C;
  incon-degr-cmd &quot;echo '!DRBD! primario sui dati inconsistenti' | wall ; sleep 60 ; halt -f&quot;;
&nbsp;
  startup {
    degr-wfc-timeout 120;
  }
&nbsp;
  disk {
    on-io-error   detach;
  }
&nbsp;
  net {
    timeout       80;
    connect-int   10;
    ping-int      10;
    ko-count      4;
    max-buffers   4096;
    max-epoch-size  2048;
  }
&nbsp;
  syncer {
    rate 650M;
    group 0;
    al-extents 521;
  }
&nbsp;
  on 3dv-ha-1 {
    device     /dev/drbd0;
    disk       /dev/md0;
    address    10.0.0.1:7788;
    meta-disk  internal;
  }
&nbsp;
  on 3dv-ha-2 {
    device    /dev/drbd0;
    disk      /dev/md0;
    address   10.0.0.2:7788;
    meta-disk internal;
  }
}</pre></div></div>

<p>Le opzioni del file sono auto esplicative ed attraverso la man page di drbd.conf è possibile conoscerne tutti i particolare (digitando “man drbd.conf”).<br />
All&#8217;interno del blocco “resource” viene indicato il nome che la device DRBD avrà per il sistema ed il messaggio che il kernel riceverà in caso di malfunzionamento.<br />
Il blocco “startup” contiene il tempo di attesa che in fase di boot il demone DRBD attenderà per ricevere notifica di esistenza da parte della macchina associata.<br />
“disk” è il blocco contenente il tipo di comportamento che il demone dovrà assumere in caso di errori relativi alla device, nel caso descritto sarà “detach” ossia “Stacca”, “Sconnetti”.<br />
Nel blocco “net” sono presenti le dichiarazioni relative al collegamento di rete tra le due macchine ossia il tempo che deve trascorrere tra un ping e l&#8217;altro (necessario per capire se l&#8217;altra macchina è in linea), la grandezza del buffer e così via.<br />
Nel blocco “syncer” è contenuta una tra le opzioni più importanti per le performances, e cioè “rate”. Tale parametro infatti regola il numero massimo di byte per secondo che il demone utilizzerà per replicare i dati tra il computer master e lo slave. Nel caso illustrato tale parametro, in forza alle interfacce Gigabit con cui le due macchine sono collegate fra loro, è stato settato al massimo disponibile, ossia 650 MegaByte.<br />
Gli ultimi due blocchi descrivono le due macchine impiegate nel RAID 1 e per ciascuna la device DRBD utilizzata, il filesystem locale condiviso, l&#8217;IP della macchina, la porta di ascolto del demone DRBD ed il tipo di meta-disk (interno).<br />
Terminata la compilazione del file, che dovrà essere IDENTICO per ciascuna delle due macchine, si potrà procedere al riavvio del servizio DRBD su entrambi i nodi :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ /etc/init.d/drbd restart</pre></div></div>

<p>All&#8217;interno del file /var/log/syslog verranno riportate le fasi di attivazione del Network RAID 1 :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">Jun 18 21:14:55 3dv-ha-1 kernel: drbd: module cleanup done.
Jun 18 21:14:55 3dv-ha-1 kernel: drbd: initialised. Version: 0.7.10 (api:77/proto:74)
Jun 18 21:14:55 3dv-ha-1 kernel: drbd: SVN Revision: 1743 build by phil@mescal, 2005-01-31 12:22:07
Jun 18 21:14:55 3dv-ha-1 kernel: drbd: registered as block device major 147
Jun 18 21:14:55 3dv-ha-1 kernel: drbd0: Creating state block
Jun 18 21:14:55 3dv-ha-1 kernel: klogd 1.4.1, ---------- state change ----------
Jun 18 21:14:55 3dv-ha-1 kernel: No module symbols loaded - kernel modules not enabled.
Jun 18 21:14:55 3dv-ha-1 kernel: drbd0: resync bitmap: bits=290333984 words=9072938
Jun 18 21:14:55 3dv-ha-1 kernel: drbd0: size = 1107 GB (1161335936 KB)
Jun 18 21:14:55 3dv-ha-1 kernel: drbd0: Assuming that all blocks are out of sync (aka FullSync)
Jun 18 21:15:00 3dv-ha-1 kernel: drbd0: 1161335936 KB now marked out-of-sync by on disk bit-map.
Jun 18 21:15:00 3dv-ha-1 kernel: drbd0: drbdsetup [3151]: cstate Unconfigured --&gt; StandAlone
Jun 18 21:15:00 3dv-ha-1 kernel: drbd0: drbdsetup [3154]: cstate StandAlone --&gt; Unconnected
Jun 18 21:15:00 3dv-ha-1 kernel: drbd0: drbd0_receiver [3155]: cstate Unconnected --&gt; WFConnection
Jun 18 21:15:10 3dv-ha-1 kernel: drbd0: drbd0_receiver [3155]: cstate WFConnection --&gt; WFReportParams
Jun 18 21:15:10 3dv-ha-1 kernel: drbd0: Handshake successful: DRBD Network Protocol version 74
Jun 18 21:15:10 3dv-ha-1 kernel: drbd0: Connection established.
Jun 18 21:15:10 3dv-ha-1 kernel: drbd0: I am(S): 0:00000001:00000001:00000001:00000001:00
Jun 18 21:15:10 3dv-ha-1 kernel: drbd0: Peer(S): 0:00000001:00000001:00000001:00000001:00
Jun 18 21:15:10 3dv-ha-1 kernel: drbd0: drbd0_receiver [3155]: cstate WFReportParams --&gt; Connected
Jun 18 21:15:10 3dv-ha-1 kernel: drbd0: I am inconsistent, but there is no sync? BOTH nodes inconsistent!
Jun 18 21:15:10 3dv-ha-1 kernel: drbd0: Secondary/Unknown --&gt; Secondary/Secondary</pre></div></div>

<p>I due host avviati da DRBD sono connessi ma il Network RAID 1 non è ancora attivo. Lo si evince dal messaggio “I am inconsistent, but there is no sync?”. Questo perché i due dischi non sono mai stati sincronizzati. Abbiamo comunque la conferma che il primo nodo è primario, quindi ciò che rimane da fare è forzare la prima sincronizzazione attraverso il seguente comando sul nodo master :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ drbdadm -- --do-what-I-say primary all</pre></div></div>

<p>Su entrambi i nodi si può osservare lo stato della ricostruzione, visualizzando lo stato del Network RAID 1 contenuto nel file “drbd” della directory /proc, nella stessa maniera in cui veniva visualizzata la ricostruzione per i RAID creati con mdadm :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ cat /proc/drbd
version: 0.7.10 (api:77/proto:74)
SVN Revision: 1743 build by phil@mescal, 2005-01-31 12:22:07
 0: cs:SyncSource st:Primary/Secondary ld:Consistent
    ns:54361636 nr:0 dw:0 dr:54378020 al:0 bm:3317 lo:27 pe:55 ua:4096 ap:0
        [&gt;...................] sync'ed:  4.9% (1036021/1089109)M
        finish: 5:18:23 speed: 55,492 (54,036) K/sec</pre></div></div>

<p>Lavorando con quantità di dati così ampie, la prima ricostruzione impiegherà poco più di quattro ore per completarsi :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ cat /proc/drbd
version: 0.7.10 (api:77/proto:74)
SVN Revision: 1743 build by phil@mescal, 2005-01-31 12:22:07
 0: cs:SyncSource st:Primary/Secondary ld:Consistent
    ns:738278800 nr:0 dw:0 dr:738295184 al:0 bm:45060 lo:0 pe:6 ua:4096 ap:0
        [=============&gt;......] sync'ed: 66.2% (368133/1089109)M
        finish: 1:53:34 speed: 55,288 (53,956) K/sec</pre></div></div>

<p>Al termine di tale ricostruzione, lo stato del Network RAID 1 è il seguente :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ cat /proc/drbd
version: 0.7.10 (api:77/proto:74)
SVN Revision: 1743 build by phil@mescal, 2005-01-31 12:22:07
 0: cs:Connected st:Primary/Secondary ld:Consistent
    ns:1115247744 nr:0 dw:0 dr:1115247744 al:0 bm:68070 lo:0 pe:0 ua:0 ap:0</pre></div></div>

<p>Dal nodo master è quindi possibile creare un filesystem ext3 sulla neo-creata device :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ mke2fs -j /dev/drbd0
mke2fs 1.37 (21-Mar-2005)
Etichetta del filesystem=
Tipo SO: Linux
Dimensione blocco=4096 (log=2)
Dimensione frammento=4096 (log=2)
145178624 inode, 290333984 blocchi
14516699 blocchi (5.00%) riservati per l'utente root
Primo blocco dati=0
8861 gruppi di blocchi
32768 blocchi per gruppo, 32768 frammenti per gruppo
16384 inode per gruppo
Backup del superblocco salvati nei blocchi:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848
&nbsp;
Scrittura delle tavole degli inode: fatto
Creazione del journal (8192 blocchi): fatto
Scrittura delle informazioni dei superblocchi e dell'accounting del filesystem: fatto
&nbsp;
Questo filesystem verrà automaticamente controllato ogni 30 mount, o
180 giorni, a seconda di quale venga prima. Usare tune2fs -c o -i per cambiare.</pre></div></div>

<p>Ed infine montare il nuovo filesystem nella directory /store (sempre e solo sul nodo master) :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ mount /dev/drbd0 /store</pre></div></div>

<p>Attraverso il comando “df”, è possibile osservare lo stato del Network RAID 1 :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ df -h
Filesystem         Dimens. Usati Disp. Uso% Montato su
/dev/hda2             9,2G 1001M  7,8G  12% /
tmpfs                 443M     0  443M   0% /dev/shm
/dev/drbd0            1,1T   33M  1,1T   1% /store</pre></div></div>

<p>Ma per ottenere quanto stabilito all&#8217;inizio del progetto è necessario spingersi oltre, configurando heartbeat in modo che controlli il filesystem DRBD e ne condivida il contenuto via NFS e SAMBA, in alta affidabilità.<br />
Su ciascuna delle due macchine andranno quindi configurati i due servizi insieme al demone heartbeat.</p>
<p><strong>Configurazione di NFS</strong></p>
<p>La configurazione di NFS va effettuata su entrambe le macchine, in quanto in caso di malfunzionamento di una di queste, l&#8217;altra attraverso heartbeat sarà in grado di continuare ad erogare il servizio.<br />
Per installare il pacchetto <em>nfs-kernel-server</em> è sufficiente lanciare il comando :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ apt-get install nfs-kernel-server</pre></div></div>

<p>l&#8217;installazione di NFS, implica l&#8217;avvio del servizio. Ma in funzione del fatto che tale servizio sarà controllato da heartbeat, il demone va fermato :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ /etc/init.d/nfs-kernel-server stop
Stopping NFS kernel daemon: mountd nfsd.
Unexporting directories for NFS kernel daemon...done.</pre></div></div>

<p>E rimosso dall&#8217;avvio automatico durante il boot del sistema :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ update-rc.d -f nfs-kernel-server remove
update-rc.d: /etc/init.d/nfs-kernel-server exists during rc.d purge (continuing)
 Removing any system startup links for /etc/init.d/nfs-kernel-server ...
   /etc/rc0.d/K80nfs-kernel-server
   /etc/rc1.d/K80nfs-kernel-server
   /etc/rc2.d/S20nfs-kernel-server
   /etc/rc3.d/S20nfs-kernel-server
   /etc/rc4.d/S20nfs-kernel-server
   /etc/rc5.d/S20nfs-kernel-server
   /etc/rc6.d/K80nfs-kernel-server</pre></div></div>

<p>Il servizio NFS tipicamente registra le informazioni di lock dei file nella directory <em>/var/lib/nfs</em>. Nel caso in esame però tale servizio, in caso di malfunzionamento, potrebbe cambiare da una macchina all&#8217;altra. E&#8217; facile capire come nel caso in cui un file venisse bloccato sulla macchina master (quindi con le informazioni di blocco scritte nella directory <em>/var/lib/nfs</em> della macchina master), se il servizio NFS effettuasse uno switch, tali informazioni non sarebbero più disponibili.<br />
Pertanto, è necessario configurare la cartella dei lock sul filesystem condiviso.<br />
Sulla macchina master quindi andrà copiata la cartella <em>/var/lib/nfs</em> in <em>/store</em> :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ mv /var/lib/nfs /store/</pre></div></div>

<p>Mentre sul nodo slave, tale directory andrà rimossa :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ rm -rf /var/lib/nfs</pre></div></div>

<p>Il vecchio path andrà infine collegato al nuovo su entrambi i sistemi :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ ln -s /store/nfs /var/lib/nfs</pre></div></div>

<p>Sul nodo slave NON esiste la cartella <em>/store/nfs</em>, ma esisterà nel momento in cui il servizio NFS (e quindi il filesystem DRBD) effettuerà lo switch.<br />
Infine, nel file <em>/etc/default/nfs-common</em>, il parametro STATDOPTS andrà modificato così :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">STATDOPTS=&quot;-n 3dv-ha&quot;</pre></div></div>

<p>Questa opzione è necessaria in quanto il demone che controlla gli stati del servizio NFS (STATD) associa gli stati che controlla al nome dell&#8217;host. Anche in questo caso, nel momento in cui la macchina effettuerà lo switch del servizio, il nome host cambierà. Con questa opzione STATD non farà confusione e assocerà gli stati sempre al nome host “virtuale” 3dv-ha.</p>
<p>L&#8217;ultima operazione riguarda la configurazione delle directory condivise nel file /etc/exports su entrambi i nodi :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">/store/Progetti 192.168.0.0/255.255.255.0(rw,async)</pre></div></div>

<p>In questo modo è garantito il permesso a qualsiasi host della rete 192.168.0 di montare in lettura e scrittura la cartella <em>/store/Progetti</em>.</p>
<p><strong>Configurazione di SAMBA</strong></p>
<p>Dopo aver aggiornato i repositories di apt come spiegato nel case study precedente, si può procedere con l&#8217;installazione degli ultimi pacchetti SAMBA disponibili :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ apt-get install samba smbfs smbclient</pre></div></div>

<p>La più semplice delle configurazioni (personalizzabile a seconda delle esigenze) del file <em>/etc/samba/smb.conf</em> potrebbe essere la seguente :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">[global]
   workgroup = 3DVISION
   server string = %h server (Samba %v)
   dns proxy = no
   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   encrypt passwords = true
   passdb backend = tdbsam guest
   obey pam restrictions = yes
   invalid users = root
   passwd program = /usr/bin/passwd %u
   passwd chat = *EntersnewsUNIXspassword:* %nn *RetypesnewsUNIXspassword:* %nn .
   load printers = no
   socket options = TCP_NODELAY
&nbsp;
[Progetti]
   comment = Progetti
   browsable = yes
   path = /store/Progetti
   guest ok = no
   writable = no
   share modes = no
   write list = @3dvision
   create mask = 0770
   directory mask = 0770</pre></div></div>

<p>Viene quindi garantito l&#8217;accesso in scrittura alla cartella “Progetti” (che è stata creata con maschera 770 ed appartiene all&#8217;utente “3dv_user”) a tutti gli utenti appartenenti al gruppo “3dvision” :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ mkdir /store/Progetti
$ chown 3dv_user:3dvision /store/Progetti
$ chmod 770 /store/Progetti
$ ll /store/
totale 28
drwx------  2 root     root     16384 2006-06-19 04:01 lost+found
drwxr-xr-x  4 root     root      4096 2006-06-20 17:47 nfs
drwxrwx---  2 3dv_user 3dvision  4096 2006-06-20 17:52 Progetti</pre></div></div>

<p>Anche per il servizio SAMBA, è necessario rimuovere l&#8217;avvio automatico al boot del sistema :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ update-rc.d -f samba remove
update-rc.d: /etc/init.d/samba exists during rc.d purge (continuing)
 Removing any system startup links for /etc/init.d/samba ...
   /etc/rc0.d/K19samba
   /etc/rc1.d/K19samba
   /etc/rc2.d/S20samba
   /etc/rc3.d/S20samba
   /etc/rc4.d/S20samba
   /etc/rc5.d/S20samba
   /etc/rc6.d/K19samba</pre></div></div>

<p>In questo modo anche il servizio SAMBA è configurato.</p>
<p><strong>Configurazione di Heartbeat</strong></p>
<p>L&#8217;ultima fase relativa al nostro progetto riguarda l&#8217;installazione di heartbeat :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ apt-get install heartbeat</pre></div></div>

<p>Per il quale sarà necessario aggiungere l&#8217;utente “cluster”, necessario per le interrogazioni sullo stato del cluster :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ adduser cluster
Adding user `cluster'...
Adding new group `cluster' (1002).
Adding new user `cluster' (1002) with group `cluster'.
Creating home directory `/home/cluster'.
Copying files from `/etc/skel'
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Modifica delle informazioni relative all'utente cluster
Inserire il nuovo valore o premere INVIO per quello predefinito
        Nome completo []:
        Stanza n° []:
        Numero telefonico di lavoro []:
        Numero telefonico di casa []:
        Altro []:
Is the information correct? [y/N] y</pre></div></div>

<p>Il file di configurazione di heartbeat è <em>/etc/ha.d/ha.cf</em> e per il nodo master sarà il seguente :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">logfacility daemon
keepalive 1
deadtime 14
warntime 7
initdead 120
udpport 694
baud 19200
serial /dev/ttyS0
ucast eth1 10.0.0.2
ucast eth0 192.168.0.9
auto_failback off
watchdog /dev/watchdog
node    3dv-ha-1
node    3dv-ha-2
ping 192.168.0.69
respawn cluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=cluster uid=cluster
deadping 30
logfile /var/log/ha.log</pre></div></div>

<p>Senza studiare a fondo ciascuna delle opzioni, ciò che interessa di più sono i parametri “ucast” che dovranno variare dal nodo master al nodo slave, in quanto rappresentano gli indirizzi IP attraverso i quali avverrà lo scambio delle informazioni per l&#8217;alta affidabilità (l&#8217;heartbeat appunto o “battito cardiaco”). Tali opzioni infatti sul nodo slave saranno esattamente l&#8217;opposto :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">ucast eth1 10.0.0.1
ucast eth0 192.168.0.8</pre></div></div>

<p>Heartbeat necessita per la sicurezza della creazione di una chiave di autenticazione :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ dd if=/dev/urandom count=4 2&gt;/dev/null | md5sum | cut -c1-32
e0fb55565622e3a893a808ee16f70538</pre></div></div>

<p>Questo comando, da eseguire sulla sola macchina master, produrrà un output il cui contenuto andrà immesso nel file <em>/etc/ha.d/authkeys</em> su entrambe le macchine, con questa struttura :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">auth 1
1 sha1 e0fb55565622e3a893a808ee16f70538</pre></div></div>

<p>Su questo file andranno settati i permessi e la proprietà all&#8217;utente cluster :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ chmod 600 /etc/ha.d/authkeys
$ chown cluster:cluster /etc/ha.d/authkeys</pre></div></div>

<p>Rimangono quindi da creare due file su entrambi i nodi : il primo nominato “/etc/heartbeat/resource.d/sleep” con questo contenuto :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">sleep $1</pre></div></div>

<p>La cui funzione sarà quella di immettere una pausa (della durata del parametro passato) durante lo switch del servizio. Tale pausa eviterà di incorrere nell&#8217;errore “Stale NFS file handle” (per il quale esiste ampia documentazione in internet) che potrebbe influenzare il regolare funzionamento del servizio.<br />
Il secondo file da creare è <em>/etc/heartbeat/resource.d/killnfsd</em> con questo contenuto :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">killall -9 nfsd</pre></div></div>

<p>Che permetterà ad heartbet durante lo switch del servizio di uccidere eventuali processi NFS residui non più controllati.<br />
A questi script appena creati vanno assegnati i permessi di esecuzione :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ chmod 755 /etc/heartbeat/resource.d/killnfsd
$ chmod 755 /etc/heartbeat/resource.d/sleep</pre></div></div>

<p>Come ultimo passo per la configurazione, va creato il file <em>/etc/ha.d/haresources</em>, all&#8217;interno del quale verranno dichiarate le risorse condivise da heartbeat :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">3dv-ha-1 IPaddr::192.168.0.10/24/eth0 drbddisk::drbd0 Filesystem::/dev/drbd0::/store::ext3 killnfsd nfs-common nfs-kernel-server samba sleep::3</pre></div></div>

<p>La struttura del file è molto semplice, viene indicato il nodo master, ossia 3dv-ha-1, l&#8217;indirizzo IP virtuale a cui i servizi risponderanno ed i servizi stessi, cioè DRBD, NFS e SAMBA insieme agli script di controllo.<br />
Heartbeat è quindi pronto ad essere avviato :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ /etc/init.d/heartbeat start</pre></div></div>

<p>E ne si può seguire l&#8217;evoluzione nel file <em>/var/log/ha.log</em> :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ tail -f /var/log/ha.log
heartbeat: 2006/06/20_18:34:07 info: Running /etc/ha.d/rc.d/ip-request-resp ip-request-resp
heartbeat: 2006/06/20_18:34:07 received ip-request-resp IPaddr::192.168.0.10/24/eth0 OK yes
heartbeat: 2006/06/20_18:34:07 info: Acquiring resource group: 3dv-ha-1 IPaddr::192.168.0.10/24/eth0 drbddisk::drbd0 Filesystem::/dev/drbd0::/store::ext3 killnfsd nfs-common nfs-kernel-server samba sleep::3
heartbeat: 2006/06/20_18:34:07 info: Running /etc/ha.d/resource.d/IPaddr 192.168.0.10/24/eth0 start
heartbeat: 2006/06/20_18:34:07 info: /sbin/ifconfig eth0:0 192.168.0.10 netmask 255.255.255.0   broadcast 192.168.0.255
heartbeat: 2006/06/20_18:34:07 info: Sending Gratuitous Arp for 192.168.0.10 on eth0:0 [eth0]
heartbeat: 2006/06/20_18:34:07 /usr/lib/heartbeat/send_arp -i 1010 -r 5 -p /var/lib/heartbeat/rsctmp/send_arp/send_arp-192.168.0.10 eth0 192.168.0.10 auto 192.168.0.10 ffffffffffff
heartbeat: 2006/06/20_18:34:07 info: Running /etc/ha.d/resource.d/drbddisk drbd0 start
heartbeat: 2006/06/20_18:34:07 info: Running /etc/ha.d/resource.d/Filesystem /dev/drbd0 /store ext3 start
heartbeat: 2006/06/20_18:34:08 info: Running /etc/ha.d/resource.d/killnfsd  start
heartbeat: 2006/06/20_18:34:08 ERROR: Return code 1 from /etc/ha.d/resource.d/killnfsd
heartbeat: 2006/06/20_18:34:08 info: Running /etc/init.d/nfs-common  start
heartbeat: 2006/06/20_18:34:08 info: Running /etc/init.d/nfs-kernel-server  start
heartbeat: 2006/06/20_18:34:08 info: Running /etc/init.d/samba  start
heartbeat: 2006/06/20_18:34:11 info: Running /etc/ha.d/resource.d/sleep 3 start</pre></div></div>

<p>L&#8217;unico errore rilevato (“ERROR: Return code 1 from /etc/ha.d/resource.d/killnfsd”) si può ignorare, in quanto non esistono processi residui per NFS e l&#8217;esito dell&#8217;operazione “killall” è comunque coerente.</p>
<p>Per effettuare un test, da una macchina remota, è possibile montare lo share in NFS :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ mount -t nfs 192.168.0.10:/store/Progetti /mnt/</pre></div></div>

<p>Se l&#8217;esito del comando mount sarà positivo, si potrà provare a creare un file all&#8217;interno dello share:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ ls -la /mnt/
$ touch /mnt/test-ha</pre></div></div>

<p>Per effettuare una prova di corretto failover basterà spegnere il nodo master e verificare che lo slave prenda il suo posto e sia quindi altamente affidabile.<br />
Mettendosi “in ascolto” sul file di log della macchina slave e spegnendo il nodo master si può controllare quanto succede :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ tail -f /var/log/ha.log
heartbeat: 2006/06/20_18:39:51 info: Received shutdown notice from '3dv-ha-1'.
heartbeat: 2006/06/20_18:39:51 info: Resources being acquired from 3dv-ha-1.
heartbeat: 2006/06/20_18:39:51 info: acquire local HA resources (standby).
heartbeat: 2006/06/20_18:39:51 info: local HA resource acquisition completed (standby).
heartbeat: 2006/06/20_18:39:51 info: Standby resource acquisition done [all].
heartbeat: 2006/06/20_18:39:51 info: No local resources [/usr/lib/heartbeat/ResourceManager listkeys 3dv-ha-2] to acquire.
heartbeat: 2006/06/20_18:39:51 info: Running /etc/ha.d/rc.d/status status
heartbeat: 2006/06/20_18:39:51 info: Taking over resource group IPaddr::192.168.0.10/24/eth0
heartbeat: 2006/06/20_18:39:51 info: Acquiring resource group: 3dv-ha-1 IPaddr::192.168.0.10/24/eth0 drbddisk::drbd0 Filesystem::/dev/drbd0::/store::ext3 killnfsd nfs-common nfs-kernel-server samba sleep::3
heartbeat: 2006/06/20_18:39:51 info: Running /etc/ha.d/resource.d/IPaddr 192.168.0.10/24/eth0 start
heartbeat: 2006/06/20_18:39:51 info: /sbin/ifconfig eth0:0 192.168.0.10 netmask 255.255.255.0   broadcast 192.168.0.255
heartbeat: 2006/06/20_18:39:51 info: Sending Gratuitous Arp for 192.168.0.10 on eth0:0 [eth0]
heartbeat: 2006/06/20_18:39:51 /usr/lib/heartbeat/send_arp -i 1010 -r 5 -p /var/lib/heartbeat/rsctmp/send_arp/send_arp-192.168.0.10 eth0 192.168.0.10 auto 192.168.0.10 ffffffffffff
heartbeat: 2006/06/20_18:39:51 info: Running /etc/ha.d/resource.d/drbddisk drbd0 start
heartbeat: 2006/06/20_18:39:51 info: Running /etc/ha.d/resource.d/Filesystem /dev/drbd0 /store ext3 start
heartbeat: 2006/06/20_18:39:51 info: Running /etc/ha.d/resource.d/killnfsd  start
heartbeat: 2006/06/20_18:39:51 ERROR: Return code 1 from /etc/ha.d/resource.d/killnfsd
heartbeat: 2006/06/20_18:39:52 info: Running /etc/init.d/nfs-common  start
heartbeat: 2006/06/20_18:39:52 info: Running /etc/init.d/nfs-kernel-server  start
heartbeat: 2006/06/20_18:39:52 info: Running /etc/init.d/samba  start
heartbeat: 2006/06/20_18:39:55 info: Running /etc/ha.d/resource.d/sleep 3 start
heartbeat: 2006/06/20_18:39:58 info: /usr/lib/heartbeat/mach_down: nice_failback: foreign resources acquired
heartbeat: 2006/06/20_18:39:58 info: mach_down takeover complete.
heartbeat: 2006/06/20_18:39:58 info: mach_down takeover complete for node 3dv-ha-1.
heartbeat: 2006/06/20_18:40:06 WARN: node 3dv-ha-1: is dead
heartbeat: 2006/06/20_18:40:06 info: Dead node 3dv-ha-1 gave up resources.
heartbeat: 2006/06/20_18:40:23 info: Link 3dv-ha-1:eth1 dead.
heartbeat: 2006/06/20_18:40:23 info: Link 3dv-ha-1:eth0 dead.</pre></div></div>

<p>Le due righe :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">heartbeat: 2006/06/20_18:39:58 info: mach_down takeover complete.
heartbeat: 2006/06/20_18:39:58 info: mach_down takeover complete for node 3dv-ha-1.</pre></div></div>

<p>confermano che il failover è stato eseguito con successo.<br />
Per il client che montava la cartella remota tutto si è svolto in maniera trasparente, ed il mount point risponde a dovere :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ ls /mnt/
test-ha</pre></div></div>

<p>Stessi test possono essere effettuati per SAMBA.<br />
E&#8217; da notare che nel momento in cui si accenderà nuovamente il nodo master, ad erogare il servizio sarà sempre il nodo slave che cederà le risorse solo in caso di  spegnimento o di rottura di componenti hardware.</p>
<p>Anche la descrizione di questo progetto viene conclusa con il giudizio della società : &#8220;<em>Questo tipo di sistema ci ha permesso di memorizzare la totalità dei dati che gestiamo e di avere la sicurezza nella ridondanza dei dati. A questo si aggiunge il risparmio sensibile dettato dall&#8217;hardware impiegato.</em>&#8221; &#8211; Dario Colombo, Amministratore Delegato di 3Dvision</p>
<p><strong>Conclusioni</strong></p>
<p>Le potenzialità offerte dalla gestione del RAID software da parte del kernel Linux sono notevoli e questa lunga panoramica lo ha dimostrato. Quello che rimane da fare è cercare di spingere il più possibile le aziende a sperimentare queste soluzioni, perché dopo la logica diffidenza iniziale, rimane solo la soddisfazione di aver fatto una scelta che ha portato un incremento della produttività, un risparmio ed un sistema al passo con i tempi.</p>
<p><strong>Bibliografia essenziale</strong></p>
<p>“The Software-RAID HOWTO” di Jakob Østergaard ed Emilio Bueso <a href="http://www.tldp.org/HOWTO/Software-RAID-HOWTO.html">http://www.tldp.org/HOWTO/Software-RAID-HOWTO.html</a></p>
<p>“$ man mdadm”</p>
<p>“DRBD”<br />
<a href="http://www.drbd.org/">http://www.drbd.org/</a></p>
<p>“DRBD : Linux HA”</p>
<p>http://linux-ha.org/DRBD</p>
<p>“$ man drbd.conf”</p>
<p><strong>Ringraziamenti</strong></p>
<p>Questo documento esiste grazie anche ad alcune persone che mi hanno aiutato nei momenti critici. Grazie quindi a Lorenzo Panarello per le revisioni, al Morby per i consigli sull&#8217;applicazione pratica dei RAID ed a mia moglie per la pazienza, in quanto credo che ormai in fatto di RAID ne sappia più di me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2009/04/raid-software-proteggere-i-dati-con-l%e2%80%99aiuto-del-kernel-5-di-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RAID Software : Proteggere i dati con l’aiuto del kernel (4 di 5)</title>
		<link>http://www.miamammausalinux.org/2009/03/raid-software-proteggere-i-dati-con-l%e2%80%99aiuto-del-kernel-4-di-5/</link>
		<comments>http://www.miamammausalinux.org/2009/03/raid-software-proteggere-i-dati-con-l%e2%80%99aiuto-del-kernel-4-di-5/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 08:19:29 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Clustering]]></category>
		<category><![CDATA[Linux HA]]></category>
		<category><![CDATA[Raid]]></category>
		<category><![CDATA[Samba]]></category>
		<category><![CDATA[Alta affidabilità]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[Condivisione dati]]></category>
		<category><![CDATA[Protezione dati]]></category>
		<category><![CDATA[Sistema]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=575</guid>
		<description><![CDATA[Nel precedente articolo è stato affrontato l&#8217;argomento della messa in RAID della partizione di root, partendo da un&#8217;installazione standard o da un sistema già esistente. In questa penultima parte della serie viene affrontato un case study relativo all&#8217;impiego di mdadm per la creazione di un sistema RAID 1 con disco estraibile. Case Study 1 &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/linux.png" alt="linux" title="linux" width="85" height="100" class="alignnone size-full wp-image-292" /></p>
<p>Nel precedente articolo è stato affrontato l&#8217;argomento della messa in RAID della partizione di root, partendo da un&#8217;installazione standard o da un sistema già esistente.<br />
In questa penultima parte della serie viene affrontato un case study relativo all&#8217;impiego di <em>mdadm</em> per la creazione di un sistema RAID 1 con disco estraibile.</p>
<p><strong>Case Study 1 &#8211; RAID 1 con HD ide “a cassetto”</strong></p>
<p>Il seguente Case study descrive il progetto realizzato per la società &#8220;Immagine &#038; Dettaglio&#8221; che si occupa di architettura d&#8217;interni, progettazione architettonica e di grafica.<br />
L&#8217;esigenza primaria della società era di ottenere la gestione centralizzata dei dati e rimpiazzare il vetusto impianto per i backup, rappresentato da un DAT (Digital Audio Tape) a cassette, con un progetto che offrisse maggiore sicurezza nella registrazione dei dati, minori costi e la possibilità di trasportare tali backup in luoghi diversi dall&#8217;ufficio in cui risiedeva il sistema, per ridurre al minimo la possibilità di perdita totale di tutti i dati.<br />
Il progetto ha quindi previsto il riutilizzo di una vecchia macchina (denominata “ied-storage” con processore Intel Celeron 1000 MegaHertz, 256 MegaByte di RAM ed un disco da 20 GigaByte), l&#8217;acquisto di tre dischi IDE da 300 GigaByte e due kit per hard disk estraibili.<br />
Questi kit, visibili nella Foto 1 risultano facilmente installabili in qualsiasi slot da 5 pollici e ¼ (ossia lo slot dei lettori cd/dvd) e consentono di collegare un cassetto ad uno dei canali IDE della scheda madre e di rendere il disco che viene inserito all&#8217;interno di questo, estraibile.</p>
<div id="attachment_576" class="wp-caption alignnone" style="width: 160px"><a href="http://www.miamammausalinux.org/wp-content/uploads/2009/03/raid-software_articolo_1-10-foto1.jpg"><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/03/raid-software_articolo_1-10-foto1-150x150.jpg" alt="Foto 1" title="raid-software_articolo_1-10-foto1" width="150" height="150" class="size-thumbnail wp-image-576" /></a><p class="wp-caption-text">Foto 1</p></div>
<p>Sul canale IDE primario della scheda madre sono stati quindi collegati il disco del sistema operativo da 20 GigaByte (come Master) ed il lettore DVD (come Slave) mentre sul canale IDE secondario è stato collegato uno dei dischi da 300 GigaByte (come Master) ed il cassetto IDE (come Slave).<br />
Utilizzando la tecnologia RAID software offerta dal kernel Linux per realizzare un mirror (RAID 1) sui dischi collegati al secondo canale IDE oltre ad avere 300 GigaByte di spazio disponibile in rete, ne si garantisce il completo backup.<br />
Inoltre, attraverso delle sostituzioni schedulate del disco (ad esempio una volta la settimana), si garantisce la possibilità di trasportare il contenuto del disco lontano dall&#8217;ufficio, avere tre copie dello stesso dato ad ogni sostituzione e nella peggiore delle ipotesi, ossia quella in cui entrambi i dischi collegati alla macchina si rompano, una sola settimana di ritardo nei backup (presenti sul disco estratto la settimana precedente).<br />
Sul disco primario da 20 GigaByte è stato installato come sistema operativo Debian Sarge 3.1, mentre i due dischi hdc e hdd non sono stati configurati.</p>
<p><strong>Sviluppo del progetto</strong></p>
<p>Lo stato del sistema al primo boot è il seguente:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ df -h
Filesystem         Dimens. Usati Disp. Uso% Montato su
/dev/hda2            19,2G 1001M 17,8G  12% /
tmpfs                 443M     0  443M   0% /dev/shm</pre></div></div>

<p>Una partizione root da 19 GigaByte, una swap da 500 MegaByte.<br />
Su ciascuno dei due dischi <em>hdc</em> e <em>hdd</em> vanno quindi create due partizioni <em>hdc1</em> ed <em>hdd1</em> (ad esempio attraverso il programma fdisk) della massima grandezza disponibile (quindi 300 GigaByte) ed il RAID 1 ad esse associato:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/hdc1 /dev/hdd1
mdadm: array /dev/md0 started.</pre></div></div>

<p>Al termine della sincronizzazione lo stato del RAID è il seguente:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hdd1[1] hdc1[0]
      2993440 blocks [2/2] [UU]
&nbsp;
unused devices: &lt;none&gt;</pre></div></div>

<p>La fase successiva prevede la creazione del filesystem sulla device <em>md0</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ mke2fs -j /dev/md0</pre></div></div>

<p>Ed il suo montaggio nella directory <em>/mnt</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ mount /dev/md0 /mnt</pre></div></div>

<p>In questo modo è possibile muovere l&#8217;attuale contenuto della cartella <em>/home</em> all&#8217;interno del nuovo filesystem, questo perché l&#8217;obiettivo finale vuole essere quello di rendere lo spazio offerto dal RAID 1 condiviso attraverso SAMBA, che nella configurazione standard condivide le directory home di ciascun utente:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ mv /home/* /mnt/</pre></div></div>

<p>Una volta smontata la cartella <em>/mnt</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ umount /mnt/</pre></div></div>

<p>E&#8217; possibile associare all&#8217;interno del file <em>/etc/fstab</em> la device <em>/dev/md0</em> al mount point <em>/home</em>, aggiungendo nel file <em>/etc/fstab</em> la seguente riga:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">/dev/md0        /home           ext3    defaults        0       0</pre></div></div>

<p>E forzarne il mount con il comando <em>mount -a</em>, verificando che sia poi correttamente montata:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ mount -a
$ mount
...
...
/dev/md0 on /home type ext3 (rw)</pre></div></div>

<p><strong>Configurazione di SAMBA</strong></p>
<p>Nell&#8217;installare SAMBA come prima cosa, all&#8217;interno del file <em>/etc/apt/sources.list</em> di entrambe le macchine, vanno aggiunti i repositories SAMBA per le ultime versioni:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">deb http://it.samba.org/samba/ftp/Binary_Packages/Debian sarge samba</pre></div></div>

<p>In questo modo pur utilizzando una distribuzione stabile (Sarge) i cui pacchetti relativi a SAMBA sarebbero aggiornati a versioni precedenti alle ultime disponibili, si potrà disporre dei pacchetti allo stato dell&#8217;arte.<br />
Effettuata la modifica, è necessario lanciare l&#8217;aggiornamento dei repositories:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ apt-get update</pre></div></div>

<p>Quindi installare SAMBA lasciando il file di configurazione così com&#8217;è, in modo che condivida le cartelle homes di tutti gli utenti (configurazione di default):</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ apt-get install samba smbfs smbclient</pre></div></div>

<p>Una volta creato un utente locale nel sistema ed in SAMBA:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ adduser ied-user1
$ passwd ied-user1
$ smbpasswd -a ied-user1</pre></div></div>

<p>Lo spazio presente nel RAID 1 è accessibile dai client Microsoft Windows della rete che effettuino il login con l&#8217;utenza “ied-user1”.</p>
<p><strong>Sostituire il disco estraibile</strong></p>
<p>A completamento del progetto, rimane da schedulare uno spegnimento forzato della macchina necessario alla sostituzione del disco. Inutile dire che il disco non può essere estratto a caldo, pertanto si è stato scelto di spegnere la macchina ogni venerdì, manualmente o attraverso la schedulazione del crontab sostituendo il disco prima di riaccenderla. L&#8217;unico accorgimento che va preso in questo senso riguarda la forzatura dell&#8217;aggiunta del nuovo disco esterno all&#8217;interno del RAID. La motivazione è che controller software del kernel, trovandosi un persistent superblock differente sul disco che è stato sostituito, giudica il RAID in stato inconsistente.<br />
Per ovviare, è sufficiente fare in modo che ad ogni avvio di sistema venga lanciato il seguente comando:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ mdadm -a /dev/md0 /dev/hdd1</pre></div></div>

<p>Tale comando nel caso che il disco non cambi non effettuerà alcuna operazione, giudicando il disco “already added”, nel caso che il disco ed il <em>persistent superblock</em> siano differenti, lo aggiungerà avviandone in contemporanea la re sincronizzazione, operazione che impiegherà per una capacità di 300 Giga circa 100 minuti.<br />
Il comando lanciato può essere incluso in uno script denominato ad esempio /etc/init.d/mdadm-raid-recovery, dal seguente contenuto:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Script per il recovery del secondo disco di RAID.</span>
&nbsp;
mdadm <span style="color: #660033;">-a</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md0 <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>hdd1</pre></div></div>

<p>Ed incluso fra gli script di avvio in questo modo:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ update-rc.d mdadm-raid-recovery start 20 2 3 4 5 .
 Adding system startup for /etc/init.d/mdadm-raid-recovery ...
   /etc/rc2.d/S20mdadm-raid-recovery -&gt; ../init.d/mdadm-raid-recovery
   /etc/rc3.d/S20mdadm-raid-recovery -&gt; ../init.d/mdadm-raid-recovery
   /etc/rc4.d/S20mdadm-raid-recovery -&gt; ../init.d/mdadm-raid-recovery
   /etc/rc5.d/S20mdadm-raid-recovery -&gt; ../init.d/mdadm-raid-recovery</pre></div></div>

<p>ad ogni avvio del sistema verrà effettuato questo controllo e l&#8217;eventuale aggiunta del disco inserito.<br />
In caso sia presente un nuovo disco, verrà sincronizzato e messo in linea, di modo da garantire, al momento della sostituzione e prima di qualsiasi altra nuova scrittura, tre copie identiche dello stesso dato.</p>
<p>Ecco il giudizio sul progetto espresso dalla società : “<em>L&#8217;utilizzo di un backup come questo ci ha permesso di avere la totale sicurezza per i dati e la possibilità di conservare una copia di essi lontano dalla sede. A tutto questo si aggiunge il risparmio dovuto al fatto di aver usato una macchina dismessa insieme all&#8217;acquisto dei tre dischi e dei relativi kit.</em>” &#8211; Luciana Ferrari, Amministratore unico di “Immagine &#038; Dettaglio”</p>
<p><strong>Conclusioni</strong></p>
<p>Nel prossimo ed ultimo articolo verrà illustrato il secondo <em>case study</em>: un network RAID 1 attraverso DRBD.</p>
<p><strong>Note</strong></p>
<p>Questa serie di articoli è apparsa in origine nel libro edito da Duke Italia <a href="http://www.hitechshop.it/detail.asp?idT=&#038;idC=&#038;idP=1&#038;Pid=34483&#038;testo=clustering%20e%20raid%20software">Clustering e raid software</a> allegato all&#8217;edizione italiana di <em>Linux Journal</em> dell&#8217;Ottobre 2006.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2009/03/raid-software-proteggere-i-dati-con-l%e2%80%99aiuto-del-kernel-4-di-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools (6 di 6)</title>
		<link>http://www.miamammausalinux.org/2008/02/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-6-di-6/</link>
		<comments>http://www.miamammausalinux.org/2008/02/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-6-di-6/#comments</comments>
		<pubDate>Mon, 04 Feb 2008 00:04:18 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Samba]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Integrazione con Windows]]></category>
		<category><![CDATA[Primary Domain Controller]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=210</guid>
		<description><![CDATA[Terminata la fase delle configurazioni è tempo di concludere la trattazione dell&#8217;argomento PDC su Linux con la creazione della prima utenza ed il primo accesso da un client Microsoft Windows. Creazione utenze e primo login Prima di effettuare il login da una macchina Windows è necessario creare sul PDC Linux la prima utenza attraverso il [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/samba.png" alt="samba" title="samba" width="100" class="alignnone size-full wp-image-196" /></p>
<p>Terminata la fase delle configurazioni è tempo di concludere la trattazione dell&#8217;argomento PDC su Linux con la creazione della prima utenza ed il primo accesso da un client Microsoft Windows.</p>
<p><strong>Creazione utenze e primo login</strong></p>
<p>Prima di effettuare il login da una macchina Windows è necessario creare sul PDC Linux la prima utenza attraverso il comando <em>smbldap-useradd</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ smbldap-useradd -P -a -m -c &quot;SMBLDAP Test user&quot; smbldaptest
Changing UNIX and samba passwords for smbldaptest
New password:
Retype new password:</pre></div></div>

<p>I parametri passati al comando servono a richiedere una password per l&#8217;utenza (-P), a specificare che l&#8217;utenza è di tipo Windows (-a), a far creare la home directory dell&#8217;utente ed infine a definire la descrizione (-c).</p>
<p>L&#8217;utenza è creata e non rimane altro da fare che provare ad effettuare il login da Windows. La prima cosa da fare è aggiungere la macchina al dominio. Per fare questo è necessario accedere alle proprietà del computer e nella sezione “Nome computer” cliccare sul tasto “Cambia&#8230;”:</p>
<div id="attachment_212" class="wp-caption alignnone" style="width: 265px"><a href="http://www.miamammausalinux.org/wp-content/uploads/2008/02/samba-pdc_parte6_figura1.png"><img src="http://www.miamammausalinux.org/wp-content/uploads/2008/02/samba-pdc_parte6_figura1-255x300.png" alt="Figura 1" title="samba-pdc_parte6_figura1" width="255" height="300" class="size-medium wp-image-212" /></a><p class="wp-caption-text">Figura 1</p></div>
<p>Verrà quindi contattato il PDC Linux e dopo aver indicato le credenziali dell&#8217;utente Administrator:</p>
<div id="attachment_213" class="wp-caption alignnone" style="width: 310px"><a href="http://www.miamammausalinux.org/wp-content/uploads/2008/02/samba-pdc_parte6_figura2.png"><img src="http://www.miamammausalinux.org/wp-content/uploads/2008/02/samba-pdc_parte6_figura2-300x245.png" alt="Figura 2" title="samba-pdc_parte6_figura2" width="300" height="245" class="size-medium wp-image-213" /></a><p class="wp-caption-text">Figura 2</p></div>
<p>l&#8217;aggiunta della macchina al dominio verrà confermata dal messaggio:</p>
<div id="attachment_214" class="wp-caption alignnone" style="width: 220px"><a href="http://www.miamammausalinux.org/wp-content/uploads/2008/02/samba-pdc_parte6_figura3.png"><img src="http://www.miamammausalinux.org/wp-content/uploads/2008/02/samba-pdc_parte6_figura3.png" alt="Figura 3" title="samba-pdc_parte6_figura3" width="210" height="119" class="size-full wp-image-214" /></a><p class="wp-caption-text">Figura 3</p></div>
<p>Una volta effettuato il reboot, sarà possibile selezionare in fase di login il dominio a cui fare riferimento:</p>
<div id="attachment_215" class="wp-caption alignnone" style="width: 310px"><a href="http://www.miamammausalinux.org/wp-content/uploads/2008/02/samba-pdc_parte6_figura4.png"><img src="http://www.miamammausalinux.org/wp-content/uploads/2008/02/samba-pdc_parte6_figura4-300x212.png" alt="Figura 4" title="samba-pdc_parte6_figura4" width="300" height="212" class="size-medium wp-image-215" /></a><p class="wp-caption-text">Figura 4</p></div>
<p>Per verificare che le informazioni relative all&#8217;ambiente vengono registrate sul PDC Linux è possibile ad esempio creare una directory sul desktop e sullo stesso copiare un file immagine, impostandolo come sfondo:</p>
<div id="attachment_216" class="wp-caption alignnone" style="width: 310px"><a href="http://www.miamammausalinux.org/wp-content/uploads/2008/02/samba-pdc_parte6_figura5.png"><img src="http://www.miamammausalinux.org/wp-content/uploads/2008/02/samba-pdc_parte6_figura5-300x225.png" alt="Figura 5" title="samba-pdc_parte6_figura5" width="300" height="225" class="size-medium wp-image-216" /></a><p class="wp-caption-text">Figura 5</p></div>
<p>Dopo aver effettuato il logout che salverà i dati del client sul PDC:</p>
<div id="attachment_217" class="wp-caption alignnone" style="width: 310px"><a href="http://www.miamammausalinux.org/wp-content/uploads/2008/02/samba-pdc_parte6_figura6.png"><img src="http://www.miamammausalinux.org/wp-content/uploads/2008/02/samba-pdc_parte6_figura6-300x103.png" alt="Figura 6" title="samba-pdc_parte6_figura6" width="300" height="103" class="size-medium wp-image-217" /></a><p class="wp-caption-text">Figura 6</p></div>
<p>Sarà possibile controllare sul server l&#8217;effettiva creazione dell&#8217;ambiente e dell&#8217;immagine specifica nel path:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ ls -la /home/samba/profiles/smbldaptest/Desktop
totale 352
drwx------  3 smbldaptest Domain Users   4096 2007-11-21 13:13 .
drwx------ 13 smbldaptest Domain Users   4096 2008-01-09 10:11 ..
drwx------  2 smbldaptest Domain Users   4096 2007-05-14 17:52 Cartella remota
-rw-------  1 smbldaptest Domain Users 343073 2007-11-21 13:13 Moz_ffx_openStandards_1024x768.jpg</pre></div></div>

<p>Da ogni client aggiunto al dominio sarà possibile collegarsi con l&#8217;utenza smbldaptest ritrovando ogni volta le stesse impostazioni e gli stessi dati. Il progetto può dirsi quindi completo.</p>
<p><strong>Siti ufficiali</strong></p>
<p>SAMBA: <a href="http://www.samba.org">http://www.samba.org</a><br />
OpenLDAP: <a href="http://www.openldap.org/">http://www.openldap.org/</a><br />
SMBLDAP Tools: <a href="https://gna.org/projects/smbldap-tools/">https://gna.org/projects/smbldap-tools/</a></p>
<p><strong>Bibliografia</strong></p>
<p><a href="http://www.pluto.it/files/journal/pj0605/samba3pdc.html">http://www.pluto.it/files/journal/pj0605/samba3pdc.html</a><br />
<a href="http://openskills.info/infobox.php?ID=552">http://openskills.info/infobox.php?ID=552</a></p>
<p><strong>La serie comprende questi articoli :</strong></p>
<p>Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-1-di-6/">1 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-2-di-6/">2 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-3-di-6/">3 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-4-di-6/">4 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-5-di-6/">5 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/02/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-6-di-6/">6 di 6</a>)</p>
<p><strong>Nota :</strong></p>
<p><em>Questo articolo è originariamente apparso su <a href="http://www.tuxjournal.net">Tux Journal</a> nel Febbraio 2008.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2008/02/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-6-di-6/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools (5 di 6)</title>
		<link>http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-5-di-6/</link>
		<comments>http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-5-di-6/#comments</comments>
		<pubDate>Mon, 28 Jan 2008 00:05:17 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Samba]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Integrazione con Windows]]></category>
		<category><![CDATA[Primary Domain Controller]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=208</guid>
		<description><![CDATA[Per terminare la configurazione del sistema non rimane che impostare SAMBA in modo che possa comunicare con il direttorio LDAP. Configurazione di SAMBA Il file di configurazione è /etc/samba/smb.conf e le parti da modificare sono essenzialmente quelle riguardanti il nome ed il tipo di accesso al dominio. Partendo dalla sezione global andranno indicate le informazioni [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/samba.png" alt="samba" title="samba" width="100" class="alignnone size-full wp-image-196" /></p>
<p>Per terminare la configurazione del sistema non rimane che impostare SAMBA in modo che possa comunicare con il direttorio LDAP.</p>
<p><strong>Configurazione di SAMBA</strong></p>
<p>Il file di configurazione è <em>/etc/samba/smb.conf</em> e le parti da modificare sono essenzialmente quelle riguardanti il nome ed il tipo di accesso al dominio. Partendo dalla sezione <em>global</em> andranno indicate le informazioni per l&#8217;identificazione del server SAMBA:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">workgroup = TESTLAN.LOCAL
netbios name = PDC
server string = %h server
wins support = yes
dns proxy = no</pre></div></div>

<p>La tipologia ed il backend per l&#8217;accesso alle informazioni:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">security = user
encrypt passwords = true
passdb backend = ldapsam:ldap://127.0.0.1
obey pam restrictions = yes
invalid users = root
unix password sync = no</pre></div></div>

<p>Relativamente alle informazioni di dominio, andrà indicato a SAMBA di supportare il login da parte dei client e quali condivisioni dovranno montare localmente questi per ricreare l&#8217;ambiente che risiede sul server:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">domain logons = yes
logon path = \%Nprofiles%U
logon drive = H:
logon home = \%N%U
logon script = logon.cmd</pre></div></div>

<p>Ed a completare la configurazione delle autenticazioni, andranno inserite tutte le informazioni relative al direttorio LDAP, partendo dalla configurazione del backend, sino all&#8217;abilitazione dei client Windows alla modifica delle informazioni del database tramite i comandi della suite smbldap:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">socket options = TCP_NODELAY
domain master = yes
&nbsp;
ldap admin dn = cn=admin,dc=testlan,dc=local
ldap suffix = dc=testlan,dc=local
ldap group suffix = ou=Groups
ldap user suffix = ou=Users
ldap machine suffix = ou=Computers
ldap idmap suffix = ou=Idmap
&nbsp;
ldap passwd sync = Yes
passwd program = /usr/sbin/smbldap-passwd %upasswd chat = *New*password* %nn *Retype*new*password* %nn *all*authentication*tokens*updated*
add user script = /usr/sbin/smbldap-useradd -m &quot;%u&quot;
ldap delete dn = Yes
delete user script = /usr/sbin/smbldap-userdel &quot;%u&quot;
add machine script = /usr/sbin/smbldap-useradd -w &quot;%u&quot;
add group script = /usr/sbin/smbldap-groupadd -p &quot;%g&quot;
delete group script = /usr/sbin/smbldap-groupdel &quot;%g&quot;
add user to group script = /usr/sbin/smbldap-groupmod -m &quot;%u&quot; &quot;%g&quot;
delete user from group script = /usr/sbin/smbldap-groupmod -x &quot;%u&quot; &quot;%g&quot;
set primary group script = /usr/sbin/smbldap-usermod -g &quot;%g&quot; &quot;%u&quot;</pre></div></div>

<p>Infine nella definizione delle condivisioni andranno abilitate le home di ciascun utente, la directory contenente gli (eventuali) script che verranno eseguiti al login ed infine la directory contenente i file relativi al profilo:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">[homes]
comment = Home Directories
browseable = no
writable = yes
create mask = 0700
directory mask = 0700
&nbsp;
[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
guest ok = yes
writable = no
share modes = no
&nbsp;
[profiles]
comment = Users profiles
path = /home/samba/profiles
read only = no
create mask = 0600
directory mask = 0700</pre></div></div>

<p>A questo punto va impostata la password con la quale il server SAMBA accede al direttorio LDAP:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ smbpasswd -w &lt;passwordsegreta&gt;
Setting stored password for &quot;cn=admin,dc=testlan,dc=local&quot; in secrets.tdb</pre></div></div>

<p>E prima del fatidico avvio del servizio SAMBA, andranno create le directory alle quali il file di configurazione fa riferimento (con i relativi permessi):</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ mkdir -p /home/samba/netlogon
$ mkdir /home/samba/profiles
$ chmod 1757 /home/samba/profiles</pre></div></div>

<p>Tutto è pronto per l&#8217;avvio del servizio attraverso lo script presente nella directory <em>/etc/init.d</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ /etc/init.d/samba start
Starting Samba daemons: nmbd smbd.</pre></div></div>

<p>Il sistema è pronto ad accogliere le richieste dei client Windows.</p>
<p>Nel prossimo (ed ultimo) articolo verrà descritta la procedura per creare delle utenze nel PDC e l&#8217;aggiunta di client Microsoft Windows al dominio.</p>
<p><strong>La serie comprende questi articoli :</strong></p>
<p>Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-1-di-6/">1 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-2-di-6/">2 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-3-di-6/">3 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-4-di-6/">4 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-5-di-6/">5 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/02/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-6-di-6/">6 di 6</a>)</p>
<p><strong>Nota :</strong></p>
<p><em>Questo articolo è originariamente apparso su <a href="http://www.tuxjournal.net">Tux Journal</a> nel Gennaio 2008.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-5-di-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools (4 di 6)</title>
		<link>http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-4-di-6/</link>
		<comments>http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-4-di-6/#comments</comments>
		<pubDate>Thu, 24 Jan 2008 00:05:10 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Samba]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Integrazione con Windows]]></category>
		<category><![CDATA[Primary Domain Controller]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=206</guid>
		<description><![CDATA[La struttura logica dell&#8217;alberatura OpenLDAP per il PDC è stata creata e va configurato il metodo di accesso del sistema alle informazioni registrate nel direttorio tramite libnssl-dap. Configurazione di libnsss-ldap Prima di concludere il progetto con la configurazione di SAMBA ed effettuare i test di aggiunta al dominio di client Microsoft Windows esiste un ultimo [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/samba.png" alt="samba" title="samba" width="100" class="alignnone size-full wp-image-196" /></p>
<p>La struttura logica dell&#8217;alberatura OpenLDAP per il PDC è stata creata e va configurato il metodo di accesso del sistema alle informazioni registrate nel direttorio tramite libnssl-dap.</p>
<p><strong>Configurazione di libnsss-ldap</strong></p>
<p>Prima di concludere il progetto con la configurazione di SAMBA ed effettuare i test di aggiunta al dominio di client Microsoft Windows esiste un ultimo pacchetto da configurare: il modulo NSS (Name Service Switch) relativo a LDAP. Tale modulo consentirà al sistema di reperire dal server LDAP le informazioni degli account, dei gruppi, degli host e tutto quanto è generalmente ottenibile dalle interrogazioni dei file presenti nella directory /etc.<br />
Per installare il modulo è sufficiente digitare il comando:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ apt-get install libnss-ldap</pre></div></div>

<p>durante l&#8217;installazione verranno richiesti i dati relativi al server LDAP che verrà utilizzato per le interrogazioni, quindi l&#8217;indirizzo (<em>ldap://127.0.0.1/</em>), il suffisso di partenza per le ricerche (<em>dc=testlan,dc=local</em>), la versione del protocollo LDAP da usare (3) ed infine il nome dell&#8217;account con cui verranno effettuate le interrogazioni al directory server (<em>cn=admin,dc=testlan,dc=local</em>). Una volta indicata la password relativa all&#8217;account admin, l&#8217;installazione sarà terminata. Andrà quindi indicato al sistema che le informazioni relative agli account andranno ricercate oltre che localmente anche nel direttorio LDAP. Questo si ottiene modificando nel file <em>/etc/nsswitch.conf</em> le righe relative a passwd, group e shadow in questo modo:</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap</pre></div></div>

<p>La verifica di quanto fatto è ottenibile attraverso il comando <em>getent,</em> un comando che riceve informazioni dai database di sistema :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">getent passwd
...
...
...
Administrator:x:0:0:Netbios Domain Administrator:/home/root:/bin/false
nobody:x:999:514:nobody:/dev/null:/bin/false</pre></div></div>

<p>L&#8217;output del comando mostra come oltre alle utenze contenute nel file di sistema <em>/etc/passwd</em> vengano elencate anche le due utenze create dal popolamento del database LDAP attraverso il comando <em>smbldap-populate</em>.</p>
<p><em>Nel prossimo articolo verrà descritta nel dettaglio la configurazione di SAMBA e la conseguente integrazione del pacchetto nell&#8217;ambiente che è stato creato.</em></p>
<p><strong>La serie comprende questi articoli :</strong></p>
<p>Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-1-di-6/">1 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-2-di-6/">2 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-3-di-6/">3 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-4-di-6/">4 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-5-di-6/">5 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/02/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-6-di-6/">6 di 6</a>)</p>
<p><strong>Nota :</strong></p>
<p><em>Questo articolo è originariamente apparso su <a href="http://www.tuxjournal.net">Tux Journal</a> nel Gennaio 2008.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-4-di-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools (3 di 6)</title>
		<link>http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-3-di-6/</link>
		<comments>http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-3-di-6/#comments</comments>
		<pubDate>Mon, 21 Jan 2008 00:05:24 +0000</pubDate>
		<dc:creator>Raoul Scarazzini</dc:creator>
				<category><![CDATA[Samba]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Integrazione con Windows]]></category>
		<category><![CDATA[Primary Domain Controller]]></category>

		<guid isPermaLink="false">http://www.miamammausalinux.org/?p=204</guid>
		<description><![CDATA[La configurazione di Openldap è completa ed è tempo di dedicare l&#8217;attenzione alla creazione della struttura logica del Primary Domain Controller attraverso le smbldap-tools. Configurazione di smbldap-tools Le utility presenti nel pacchetto smbldap-tools fanno riferimento ai parametri impostati in due file che andranno copiati nella directory /etc/smbldap-tools : $ cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/ $ zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.miamammausalinux.org/wp-content/uploads/2009/01/samba.png" alt="samba" title="samba" width="100" class="alignnone size-full wp-image-196" /></p>
<p>La configurazione di Openldap è completa ed  è tempo di dedicare l&#8217;attenzione alla creazione della struttura logica del Primary Domain Controller attraverso le smbldap-tools.</p>
<p><strong>Configurazione di smbldap-tools</strong></p>
<p>Le utility presenti nel pacchetto smbldap-tools fanno riferimento ai parametri impostati in due file che andranno copiati nella directory /etc/smbldap-tools :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/
$ zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz &gt; /etc/smbldap-tools/smbldap.conf</pre></div></div>

<p>Il primo file andrà compilato con le informazioni di accesso al direttorio LDAP :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">slaveDN=&quot;cn=admin,dc=testlan,dc=local&quot;
slavePw=&quot;passwordsegreta&quot;
masterDN=&quot;cn=admin,dc=testlan,dc=local&quot;
masterPw=&quot;passwordsegreta&quot;</pre></div></div>

<p>Essendo le password digitate in chiaro, il file andrà protetto, proibendo l&#8217;accesso in lettura e scrittura da chiunque non sia root :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ chmod 600 /etc/smbldap-tools/smbldap_bind.conf</pre></div></div>

<p>All&#8217;interno del secondo file andranno indicate le informazioni relative al dominio che le utility andranno ad amministrare.<br />
Essenziale nella compilazione del file è il reperimento del SID, acronimo che significa <em>Security ID</em> (Identificativo di sicurezza), ossia una chiave che identifica univocamente i<br />
l dominio amministrato da SAMBA :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">$ net getlocalsid
SID for domain PDC is: S-1-5-21-3200784789-215075224-1452583727</pre></div></div>

<p>Questo dato andrà inserito nel file di configurazione alla voce relativa insieme al nome del dominio che sceglieremo, nel nostro caso come per il suffisso sarà <em>TESTLAN.LOCAL</em> :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">SID=&quot;S-1-5-21-3200784789-215075224-1452583727&quot;
sambaDomain=&quot;TESTLAN.LOCAL&quot;</pre></div></div>

<p>lasciando il default per quanto indicato negli IP in ascolto e nelle relative porte, andrà modificato il parametro relativo ai certificati di sicurezza, che non utilizzeremo :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">ldapTLS=&quot;0&quot;</pre></div></div>

<p>andranno poi indicati il suffisso del dominio LDAP ed il nome del dominio SAMBA nei parametri <em>suffix</em> e <em>sambaUnixIdPooldn</em> :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">suffix=&quot;dc=testlan,dc=local&quot;
sambaUnixIdPooldn=&quot;sambaDomainName=TESTLAN.LOCAL,${suffix}&quot;</pre></div></div>

<p>Ed infine i dati relativi ai <em>Roaming Profiles</em>. Il <em>Roaming Profile</em> (letteralmente <em>Profilo Vagante</em>) è utilizzato per preservare la configurazione dell&#8217;utente (le impostazioni del desktop, lo sfondo, etc) e permette a quest&#8217;ultimo di avere il medesimo ambiente in qualsiasi computer effettuerà un login.<br />
Ad occuparsi della memorizzazione lato server di questi dati ci sarà SAMBA, attraverso la configurazione che vedremo più avanti. I dati che interessano i roaming profile nel file di configurazione sono i seguenti :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">userSmbHome=&quot;\PDC%U&quot;
userProfile=&quot;\PDCprofiles%U&quot;
userHomeDrive=&quot;H:&quot;
userScript=&quot;logon.bat&quot;</pre></div></div>

<p>come si può notare vengono indicati la cartella home utente, la cartella relativa al nome del profilo, il nome dell&#8217;unità con cui la cartella verrà mappata in locale sui client Microsoft Windows ed il nome dello script che verrà eseguito ad ogni login (che salvo esigenze particolari, può essere vuoto).</p>
<p>Terminata la modifica del file si può procedere con il popolamento dell&#8217;alberatura LDAP secondo lo schema proprio dei PDC Microsoft attraverso lo script smbldap-populate, al quale verrà passato il parametro <em>-k</em> che indicherà l&#8217;ID da associare all&#8217;amministratore del direttorio, cioè 0, l&#8217;id di root nei sistemi Linux ed il parametro <em>-a</em> che specificherà il nome dell&#8217;utenza amministratrice che verrà settata seguendo lo standard dei PDC Microsoft Windows ad <em>Administrator</em> :</p>

<div class="wp_syntax"><div class="code"><pre class="console" style="font-family:monospace;">smbldap-populate -a Administrator -k 0
Populating LDAP directory for domain TESTLAN.LOCAL (S-1-5-21-3200784789-215075224-1452583727)
(using builtin directory structure)
&nbsp;
entry dc=testlan,dc=local already exist.
adding new entry: ou=Users,dc=testlan,dc=local
adding new entry: ou=Groups,dc=testlan,dc=local
adding new entry: ou=Computers,dc=testlan,dc=local
adding new entry: ou=Idmap,dc=testlan,dc=local
adding new entry: uid=Administrator,ou=Users,dc=testlan,dc=local
adding new entry: uid=nobody,ou=Users,dc=testlan,dc=local
adding new entry: cn=Domain Admins,ou=Groups,dc=testlan,dc=local
adding new entry: cn=Domain Users,ou=Groups,dc=testlan,dc=local
adding new entry: cn=Domain Guests,ou=Groups,dc=testlan,dc=local
adding new entry: cn=Domain Computers,ou=Groups,dc=testlan,dc=local
adding new entry: cn=Administrators,ou=Groups,dc=testlan,dc=local
adding new entry: cn=Account Operators,ou=Groups,dc=testlan,dc=local
adding new entry: cn=Print Operators,ou=Groups,dc=testlan,dc=local
adding new entry: cn=Backup Operators,ou=Groups,dc=testlan,dc=local
adding new entry: cn=Replicators,ou=Groups,dc=testlan,dc=local
adding new entry: sambaDomainName=TESTLAN.LOCAL,dc=testlan,dc=local
&nbsp;
Please provide a password for the domain Administrator:
Changing UNIX and samba passwords for Administrator
New password:
Retype new password:</pre></div></div>

<p>Una volta digitata la password richiesta per l&#8217;utente <em>Administrator</em>, che come vedremo in seguito risulterà essenziale per aggiungere client Microsoft Windows al dominio, la creazione dell&#8217;alberatura sarà completa.</p>
<p><em>Nel prossimo articolo verrà descritta l&#8217;installazione del pacchetto libnss-ldap che interfaccerà il sistema con il direttorio Openldap appena creato.</em></p>
<p><strong>La serie comprende questi articoli :</strong></p>
<p>Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-1-di-6/">1 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-2-di-6/">2 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-3-di-6/">3 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-4-di-6/">4 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-5-di-6/">5 di 6</a>)<br />
Realizzare un Primary Domain Controller con SAMBA, Openldap e smbldap-tools : (<a href="http://www.miamammausalinux.org/2008/02/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-6-di-6/">6 di 6</a>)</p>
<p><strong>Nota :</strong></p>
<p><em>Questo articolo è originariamente apparso su <a href="http://www.tuxjournal.net">Tux Journal</a> nel Febbraio 2008.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.miamammausalinux.org/2008/01/realizzare-un-primary-domain-controller-con-samba-openldap-e-smbldap-tools-3-di-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

