2 894
contributi
Wtf (discussione | contributi) (Creata pagina con '{{SAMBA}} = Modulo principale = == Installazione == Analizziamo i programmi che otteniamo dall'installazione della suite Samba per Debian GNU/Linux: <pre># apt-get update && ...') |
Wtf (discussione | contributi) |
||
(16 versioni intermedie di 3 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{ | {{SAMBA1}} | ||
= Modulo principale = | = Modulo principale = | ||
Riga 83: | Riga 82: | ||
</pre> | </pre> | ||
{{Box|Nota|Data la moltitudine di parametri configurabili in questa guida ci si limiterà a trattarne solo una piccola parte. Per una panoramica completa si invita il lettore a fare riferimento alla pagina (man5) di [ | {{Box|Nota|Data la moltitudine di parametri configurabili in questa guida ci si limiterà a trattarne solo una piccola parte. Per una panoramica completa si invita il lettore a fare riferimento alla pagina (man5) di [https://www.samba.org/samba/docs/man/manpages/smb.conf.5.html Samba]. }} | ||
{{ Warningbox | Esistono parametri che devono essere dichiarati nella sola sezione <code>global</code>, parametri che devono essere dichiarati solo nelle sezioni dedicate alle singole risorse e infine parametri che possono essere definiti in entrambi i tipi di sezione. }} | {{ Warningbox | Esistono parametri che devono essere dichiarati nella sola sezione <code>global</code>, parametri che devono essere dichiarati solo nelle sezioni dedicate alle singole risorse e infine parametri che possono essere definiti in entrambi i tipi di sezione. }} | ||
Riga 120: | Riga 119: | ||
<pre> | <pre> | ||
[global] | [global] | ||
allow | hosts deny = ALL | ||
hosts allow = 127.0.0.1 192.168.1.0/24 | |||
workgroup = debianizzati | workgroup = debianizzati | ||
server string = server@debianizzati.org | server string = server@debianizzati.org | ||
Riga 137: | Riga 137: | ||
unix password sync = Yes | unix password sync = Yes | ||
</pre> | </pre> | ||
* <code>'''allow | * <code>'''host deny''' e '''hosts allow'''</code>: combinazione di istruzione per definire un range di IP ai quali è permesso l'accesso a tutte le risorse specificate nel seguito del file di configurazione; in questo caso vengono accettati tutti gli indirizzi compresi tra 192.168.1.1 e 192.168.1.254. Si noti che è possibile specificare più indirizzi e/o gruppi di indirizzi semplicemente separandoli con uno spazio, ad esempio <code>allow hosts = 127.0.0.1 192.168.1.0/24</code>. Qualora l'utente non volesse rendere disponibile tutte le risorse agli stessi range di indirizzi allora il parametro <code>allow hosts</code> non dovrebbe essere definito qui, ma in ciascuna delle sezioni dedicate alle singole risorse condivise. Il parametro è sostanzialmente additivo, ovvero il gruppo di indirizzi ammissibile per ogni risorsa è dato dalla somma di quelli specificati in questa sezione e da quelli definiti per la singola risorsa. Questo parametro è del tutto equivalente a <code>hosts allow</code>. | ||
* <code>'''workgroup'''</code>: nome del gruppo di lavoro; non è un parametro critico, nel senso che anche se viene definito un nome differente da quello cui appartengono tutte le altre macchine della rete il risultato è che in windows il nome del server comparirà sotto un differente gruppo di lavoro. | * <code>'''workgroup'''</code>: nome del gruppo di lavoro; non è un parametro critico, nel senso che anche se viene definito un nome differente da quello cui appartengono tutte le altre macchine della rete il risultato è che in windows il nome del server comparirà sotto un differente gruppo di lavoro. | ||
* <code>'''server string'''</code>: stringa che identifica il server. | * <code>'''server string'''</code>: stringa che identifica il server. | ||
* <code>'''security'''</code>: definisce il "modo" con cui samba gestisce l'autenticazione degli utenti. | * <code>'''security'''</code>: definisce il "modo" con cui samba gestisce l'autenticazione degli utenti. | ||
** ''user'': è il valore predefinito, implica che sia il nome delle risorse sia il loro contenuto risultano indisponibili all'utente fintanto che questi non si è autenticato con successo; deroga a questo principio il caso in cui l'utente venga automaticamente autenticato come ospite (si veda ''map to guest''). | ** ''user'': è il valore predefinito, implica che sia il nome delle risorse sia il loro contenuto risultano indisponibili all'utente fintanto che questi non si è autenticato con successo; deroga a questo principio il caso in cui l'utente venga automaticamente autenticato come ospite (si veda ''map to guest''). | ||
** ''share'': è il valore storico, usato come predefinito nelle versioni di samba precedenti la terza; semplificando si può dire che gli utenti possono vedere le risorse, ma non accedervi, anche senza essersi autenticati con successo (quindi chiunque è in grado di vedere l'elenco delle risorse). | ** <strike>''share'': è il valore storico, usato come predefinito nelle versioni di samba precedenti la terza; semplificando si può dire che gli utenti possono vedere le risorse, ma non accedervi, anche senza essersi autenticati con successo (quindi chiunque è in grado di vedere l'elenco delle risorse)</strike>. ''share'' È UN VALORE DEPRECATO. | ||
** ''domain'' e ''server'': sono modalità specifiche per reti dove è configurato un dominio e non semplicemente un gruppo di lavoro. | ** ''domain'' <strike>e ''server''</strike>: sono modalità specifiche per reti dove è configurato un dominio e non semplicemente un gruppo di lavoro. | ||
* <code>'''guest account'''</code>: permette di definire l'utente da usare come utenza guest (il valore predefinito è ''nobody''), in questo esempio l'utente ''ospite'' (che come ogni altro utente deve esistere sia in linux che in samba). | * <code>'''guest account'''</code>: permette di definire l'utente da usare come utenza guest (il valore predefinito è ''nobody''), in questo esempio l'utente ''ospite'' (che come ogni altro utente deve esistere sia in linux che in samba). | ||
* <code>'''map to guest'''</code>: questo parametro torna principalmente utile se si vuol creare una condivisione accessibile a chiunque tramite l'utenza guest (ovvero se si vuole permettere l'accesso ad una o più risorse senza che vengano richieste username e password) quando sia stato impostato <code>security = user</code> o <code>security = domain</code>. Ci sono quattro valori possibili di questo parametro: | * <code>'''map to guest'''</code>: questo parametro torna principalmente utile se si vuol creare una condivisione accessibile a chiunque tramite l'utenza guest (ovvero se si vuole permettere l'accesso ad una o più risorse senza che vengano richieste username e password) quando sia stato impostato <code>security = user</code> o <code>security = domain</code>. Ci sono quattro valori possibili di questo parametro: | ||
Riga 154: | Riga 154: | ||
* <code>'''include'''</code>: permette di includere nel file di configurazione <code>smb.conf</code> un altro file di configurazione (e quindi le relative impostazioni). Nell'esempio riportato viene importato il file /etc/samba.smb.conf.alias, dove ''alias'' è uno degli alias definiti attraverso il parametro <code>netbios aliases</code> (il carattere %L serve proprio a leggere l'imput dell'utente). Questo artificio è utile in quei casi dove può essere necessario caricare impostazioni parzialmente differenti a seconda del gruppo di utenti che accede al server, basta cioè che ciascuno di questi gruppi acceda al server sfruttando un diverso alias, ad esempio ''commerciale'', ''amministrazione'', ''tecnico'', ecc. | * <code>'''include'''</code>: permette di includere nel file di configurazione <code>smb.conf</code> un altro file di configurazione (e quindi le relative impostazioni). Nell'esempio riportato viene importato il file /etc/samba.smb.conf.alias, dove ''alias'' è uno degli alias definiti attraverso il parametro <code>netbios aliases</code> (il carattere %L serve proprio a leggere l'imput dell'utente). Questo artificio è utile in quei casi dove può essere necessario caricare impostazioni parzialmente differenti a seconda del gruppo di utenti che accede al server, basta cioè che ciascuno di questi gruppi acceda al server sfruttando un diverso alias, ad esempio ''commerciale'', ''amministrazione'', ''tecnico'', ecc. | ||
* <code>'''passwd program'''</code>: questo parametro | * <code>'''passwd program'''</code>: definisce che programma deve usare samba per gestire le proprie password. Samba non ha un suo applicativo per fare questo, quindi deve appoggiarsi a quello che il sistema usa normalmente per gestire le sue password. Questo parametro da solo non permette la sincronizzazione delle password samba con quelle unix di sistema. Se il parametro ''pam password change'' è impostato su ''yes'' allora il presente parametro viene ignorato, ovvero è inutile specificare ''passwd program'' se si specifica contestualmente ''pam password change = yes''. | ||
* <code>'''pam password change'''</code>: se impostato su yes | * <code>'''pam password change'''</code>: se impostato su ''yes'' il sistema userà PAM invece dell'applicativo definito in <code>passwd program</code> per cambiare automaticamente le password samba (quindi è inutile definire contemporaneamente sia <code>passwd program</code> che <code>pam password change = yes</code>). Questo parametro da solo non permette la sincronizzazione delle password samba con quelle unix di sistema, inoltre viene ignorato se vale ''encrypt passwords = yes'' (che è il valore predefinito!). | ||
* <code>'''obey pam restrictions'''</code>: impostare su yes solo nel caso in cui sia | * <code>'''obey pam restrictions'''</code>: impostare su yes solo nel caso in cui sia anche <code>pam password change = yes</code>. | ||
* <code>'''passwd chat'''</code>: definisce la stringa che samba passerà a linux per cambiare una password unix. Non cambiare il valore indicato a meno di non sapere quel che si sta facendo. Questo | * <code>'''unix passwd sync'''</code>: impostare questo parametro su yes fa si che quando la password di un utente samba viene cambiata anche la password linux è modificata. | ||
* <code>'''passwd chat'''</code>: definisce la stringa che samba passerà a linux per cambiare una password unix. Non cambiare il valore indicato a meno di non sapere quel che si sta facendo. Questo parametro può essere omesso se non si è definito ''unix passwd sync = yes''. | |||
====Parametri generici==== | ====Parametri generici==== | ||
Riga 265: | Riga 265: | ||
{{Warningbox|Oltre a definire correttamente gli utenti in samba è sempre necessario definire correttamente i permessi UNIX sulle cartelle che si andranno a condividere, ovvero se si desidera che l'utente pinco pallino abbia accesso sia in lettura che scrittura ad una certa cartella non è sufficiente imporre ''read only = no'', ma bisogna che ad esempio l'utente in questione sia proprietario della cartella oppure che questa abbia schema ''777'', ecc.}} | {{Warningbox|Oltre a definire correttamente gli utenti in samba è sempre necessario definire correttamente i permessi UNIX sulle cartelle che si andranno a condividere, ovvero se si desidera che l'utente pinco pallino abbia accesso sia in lettura che scrittura ad una certa cartella non è sufficiente imporre ''read only = no'', ma bisogna che ad esempio l'utente in questione sia proprietario della cartella oppure che questa abbia schema ''777'', ecc.}} | ||
Per visualizzare l'elenco degli utenti samba registrati: | |||
<pre># pdbedit -L -v</pre> | |||
====L'utenza guest ovvero le condivisione pubbliche==== | ====L'utenza guest ovvero le condivisione pubbliche==== | ||
Il primo passo per rendere una risorsa pubblica, nel senso di accessibile a chiunque senza bisogno di credenziali, ma comunque sempre all'interno dell'intervallo di IP ammissibili definiti con <code>allow hosts</code>, è come già scritto definire <code>guest ok = yes</code>. Fatto ciò ci sono due strade per il secondo passo: la prima consiste nel definire <code>security = share</code>, l'altra prevede di mantenere <code>security = user</code> e imporre <code>map to guest = Bad User</code> (si veda quanto precedentemente scritto a proposito dei suddetti parametri). | Il primo passo per rendere una risorsa pubblica, nel senso di accessibile a chiunque senza bisogno di credenziali, ma comunque sempre all'interno dell'intervallo di IP ammissibili definiti con <code>allow hosts</code>, è come già scritto definire <code>guest ok = yes</code>. Fatto ciò ci sono due strade per il secondo passo: la prima consiste nel definire <code>security = share</code>, l'altra prevede di mantenere <code>security = user</code> e imporre <code>map to guest = Bad User</code> (si veda quanto precedentemente scritto a proposito dei suddetti parametri). | ||
{{Box| | {{Box|NOTE| | ||
* Quanto qui scritto non tiene conto per una questione di semplicità delle casistiche <code>security = domain</code> e <code>security = server</code>, trattandosi di parametri normalmente usati in configurazioni di rete ben più complesse della rete domestica e del piccolo ufficio. | |||
* Nel caso di <code>security - user</code> si sconsiglia di restringere l'accesso alle varie risorse inserendo il parametro ''valid users'' nella sezione globale, poiché in tal caso è possibile che l'utenza guest non riesca più ad accedere alle risorse ad essa dedicate. | |||
}} | |||
L'importante è che l'utente da usare come guest sia stato creato correttamente (che sia abilitato o meno è irrilevante); a tal proposito è possibile o usare l'utenza predefinita <code>nobody</code> oppure usarne un'altra a scelta definendo nella sezione <code>global</code> il parametro <code>guest account = mio_utente</code>, dove ''mio_utente'' deve essere un utenza già esistente in linux e in samba.<br> | L'importante è che l'utente da usare come guest sia stato creato correttamente (che sia abilitato o meno è irrilevante); a tal proposito è possibile o usare l'utenza predefinita <code>nobody</code> oppure usarne un'altra a scelta definendo nella sezione <code>global</code> il parametro <code>guest account = mio_utente</code>, dove ''mio_utente'' deve essere un utenza già esistente in linux e in samba.<br> | ||
A titolo informativo si ricorda che è possibile creare un utente in linux disabilitandone subito la possibilità di autenticarsi aggiungendo al comando <code>adduser</code> l'opzione <code>--disabled-login</code>; qualora invece l'utente sia già esistente è sufficiente usare l'opzione <code>-l</code> del comando <code>passwd</code> per disabilitarne la capacità di autenticarsi al sistema. | A titolo informativo si ricorda che è possibile creare un utente in linux disabilitandone subito la possibilità di autenticarsi aggiungendo al comando <code>adduser</code> l'opzione <code>--disabled-login</code>; qualora invece l'utente sia già esistente è sufficiente usare l'opzione <code>-l</code> del comando <code>passwd</code> per disabilitarne la capacità di autenticarsi al sistema. | ||
Vale la pena esplicitare cosa succede nel caso <code>security = | Vale la pena esplicitare cosa succede nel caso <code>security = user</code> e <code>map to guest = Bad User</code> quando l'utente windows clicca sull'icona del server: | ||
* '''Utenza windows non esistente o non mappata''': l'utente windows viene automaticamente autenticato come guest; si noti che in tal caso è sempre possibile autenticarsi nuovamente con una differente utenza quando si accede ad una risorsa non pubblica, tuttavia una volta fatto ciò l'utente sarà visto dal server samba sempre con il nome utente appena immesso, a meno di non disconnettersi e riconnettersi a windows. | * '''Utenza windows non esistente o non mappata''': l'utente windows viene automaticamente autenticato come guest; si noti che in tal caso è sempre possibile autenticarsi nuovamente con una differente utenza quando si accede ad una risorsa non pubblica, tuttavia una volta fatto ciò l'utente sarà visto dal server samba sempre con il nome utente appena immesso, a meno di non disconnettersi e riconnettersi a windows. | ||
* '''Utenza windows esistente o mappata''' | * '''Utenza windows esistente o mappata''' | ||
** ''Password windows coincidente'': l'utente windows viene automaticamente autenticato con il suo nome utente o con quello definito dalla mappa utenti, parametro <code>username map</code>. | ** ''Password windows coincidente'': l'utente windows viene automaticamente autenticato con il suo nome utente o con quello definito dalla mappa utenti, parametro <code>username map</code>. | ||
** ''Password windows non coincidente'': quando allo stesso utente sono associate due password differenti in windows e samba-linux viene proposta la finestra di login; in caso di immissione errata della password all'utente viene negato qualsiasi accesso alle risorse remote (compreso il semplice elenco delle risorse condivise). Si noti che un utente con nome windows coincidente con uno di quelli linux non può usare l'utenza guest, pertanto se l'utenza omonima sul server linux non è di sua proprietà egli non potrà autenticarsi presso il server con il suo nome utente windows. In tal caso l'unico modo per garantirgli l'accesso è creare un apposita utenza in linux e comunicargli le relative credenziali (attenzione a non rimappare l'utenza poiché in tal caso verrebbe bloccato l'accesso all'altro utente). | ** ''Password windows non coincidente'': quando allo stesso utente sono associate due password differenti in windows e samba-linux viene proposta la finestra di login; in caso di immissione errata della password all'utente viene negato qualsiasi accesso alle risorse remote (compreso il semplice elenco delle risorse condivise). Si noti che un utente con nome windows coincidente con uno di quelli linux non può usare l'utenza guest, pertanto se l'utenza omonima sul server linux non è di sua proprietà egli non potrà autenticarsi presso il server con il suo nome utente windows. In tal caso l'unico modo per garantirgli l'accesso è creare un apposita utenza in linux e comunicargli le relative credenziali (attenzione a non rimappare l'utenza poiché in tal caso verrebbe bloccato l'accesso all'altro utente). | ||
===== Note su <code>security = user</code> ===== | |||
Perché l'utenza guest funzioni correttamente attenersi a quanto segue oltre a quanto già detto: | |||
* Evitare accuratamente di dichiarare il parametro <code>valid users</code> sia nella sezione <code>[global]</code> che in quella della risorsa che deve essere accessibile all'utenza "guest". | |||
* Dichiarare nel file di mappatura utenti l'associazione ''account_guest_linux = guest'', che nel caso predefinito equivale a scrivere <code>nobody = guest</code> | |||
====Sincronizzazione delle password samba e linux==== | ====Sincronizzazione delle password samba e linux==== | ||
Qualora si desiderasse mantenere sincronizzate le password linux (<code>passwd</code>) con quelle definite attraverso <code>smbpasswd</code> è possibile ricorrere ad appositi parametri, come già scritto. | Qualora si desiderasse mantenere sincronizzate le password linux (<code>passwd</code>) con quelle definite attraverso <code>smbpasswd</code> è possibile ricorrere ad appositi parametri, come già scritto. | ||
{{Box|NOTA|con questo metodo la sincronizzazione è unidirezionale, ovvero qualsiasi modifica alla password samba verrà automaticamente propagata a quella linux, ma non | {{Box|NOTA|con questo metodo la sincronizzazione è unidirezionale, ovvero qualsiasi modifica alla password samba verrà automaticamente propagata a quella linux, ma non viceversa.}} | ||
Oltre ad utilizzare <code>passwd</code> per impostare le password è anche possibile usare PAM, badando bene che i due metodi sono mutualmente esclusivi. In particolare impostare <code>pam password change = yes</code> comporta l'automatica esclusione della prima modalità.<br> | Oltre ad utilizzare <code>passwd</code> per impostare le password è anche possibile usare PAM, badando bene che i due metodi sono mutualmente esclusivi. In particolare impostare <code>pam password change = yes</code> comporta l'automatica esclusione della prima modalità.<br> | ||
In entrambi i casi devono essere sempre definiti i parametri <code>passwd chat</code> (anche il testo da passare può essere il medesimo) e <code>unix passwd sync = yes</code>.<br> | In entrambi i casi devono essere sempre definiti i parametri <code>passwd chat</code> (anche il testo da passare può essere il medesimo) e <code>unix passwd sync = yes</code>.<br> | ||
Riga 298: | Riga 311: | ||
</pre> | </pre> | ||
===Riavvio e test del server=== | === Riavvio e test del server === | ||
Creato/modificato il file <code>smb.conf</code> e creati gli utenti è il momento di riavviare il server: | Creato/modificato il file <code>smb.conf</code> e creati gli utenti è il momento di riavviare il server: | ||
Riga 320: | Riga 333: | ||
Press enter to see a dump of your service definitions | Press enter to see a dump of your service definitions | ||
</pre> | </pre> | ||
Premendo enter vedremo il resoconto del nostro file. | Premendo enter vedremo il resoconto del nostro file.<br/> | ||
Se non ci sono errori il passo successivo, prima di configurare/usare i client, è verificare che almeno dal server stesso tutte le condivisioni siano visibili e accessibili. Digitare: | |||
<pre>smbclient -L localhost</pre> | |||
Si noti che può o meno essere richiesto di autenticarsi a seconda del livello di sicurezza impostato, in ogni caso dovrebbe comparire a video qualcosa di simile a: | |||
<pre> | |||
Domain=[vostro_dominio] OS=[Unix] Server=[Samba 3.6.6] | |||
Sharename Type Comment | |||
--------- ---- ------- | |||
IPC$ IPC IPC Service (nome_server server (Samba, Debian)) | |||
condivis1 Disk | |||
condivis2 Disk | |||
... | |||
Domain=[vostro_dominio] OS=[Unix] Server=[Samba 3.6.6] | |||
Server Comment | |||
--------- ------- | |||
NOME_SERVER nome_server server (Samba, Debian) | |||
Workgroup Master | |||
--------- ------- | |||
WORKGROUP NOME_SERVER | |||
... | |||
</pre> | |||
Verificato che tutte le condivisioni che si sono impostate in ''smb.conf'' siano presenti si può provare a connettersi alle suddette usando un utente abilitato al servizio samba, digitando: | |||
<pre>smbclient //localhost/nome_condivisione -U nome_utente</pre> | |||
dove ''nome_condivisione'' è il nome di una delle condivisioni cui l'utente può accedere (NON il nome della cartella, ma lo "Sharename" definito in smb.conf e visibile tra l'altro attraverso il precedente comando). Si veda la pagina dedicata ai [[SAMBA: configurazione lato client#Accesso al server client]] per una breve descrizione di ''smbclient''.<br/> | |||
'''NOTA''': in caso di problemi prima di scrivere sul forum provare a dare un occhio alla pagina di [[SAMBA: possibili problemi | diagnostica]]. | |||
= Moduli Aggiuntivi = | = Moduli Aggiuntivi = | ||
Riga 344: | Riga 385: | ||
# dpkg-reconfigure smb2www | # dpkg-reconfigure smb2www | ||
</pre> | </pre> | ||
* Aprire il file < | * Aprire il file <code>'''/etc/smb2www/smb2www.conf'''</code> e modificare la voce <code>'''enabled=no'''</code> in <code>'''enabled=yes'''</code> | ||
=== Sicurezza === | === Sicurezza === | ||
Riga 363: | Riga 404: | ||
</pre> | </pre> | ||
Alcune note: | Alcune note: | ||
* Se intendete (come credo) permettere l'accesso al servizio anche da altre macchine dovete cambiare la direttiva < | * Se intendete (come credo) permettere l'accesso al servizio anche da altre macchine dovete cambiare la direttiva <code>'''allow from 127.0.0.1'''</code> con <code>'''Allow from All'''</code> o <code>'''Allow from 192.168.1.0/24'''</code> (o simili, a seconda della classe della vostra rete LAN) | ||
* Se intendete utilizzare la gestione utenti di Linux aggiungete la direttiva < | * Se intendete utilizzare la gestione utenti di Linux aggiungete la direttiva <code>'''AllowUserFile /etc/passwd'''</code> | ||
* Ulteriori informazioni si trovano in < | * Ulteriori informazioni si trovano in <code>/usr/share/doc/smb2www/index.html</code> | ||
[[Categoria:Reti con Windows]] | |||
[[Categoria:Samba]] |
contributi