Samba: guida estesa: differenze tra le versioni

Riga 109: Riga 109:
** <code>printing</code>
** <code>printing</code>
** <code>load printers</code>
** <code>load printers</code>
* ''PARTICOLARI'', ovvero che possono essere inseriti nelle sole sezioni dedicate alle singole risorse
** <code>comment</code>
** <code>path</code>
** <code>printable</code>
** <code>preexec</code>
** <code>postexec</code>
* ''GENERICI'', ovvero che possono essere dichiarati in entrambi i tipi di sezioni; in linea generale se un parametro viene definito sia nella sezione <code>global</code> che in una specifica allora per quanto riguarda la suddetta risorsa sarà utilizzato come valore quanto dichiarato localmente.
* ''GENERICI'', ovvero che possono essere dichiarati in entrambi i tipi di sezioni; in linea generale se un parametro viene definito sia nella sezione <code>global</code> che in una specifica allora per quanto riguarda la suddetta risorsa sarà utilizzato come valore quanto dichiarato localmente.
** <code>allow hosts</code>/<code>hosts allow</code>
** <code>allow hosts</code>/<code>hosts allow</code>
Riga 124: Riga 118:
** <code>read only</code>
** <code>read only</code>
** <code>writeable</code>/<code>writable</code>
** <code>writeable</code>/<code>writable</code>
* ''SPECIFICI'', ovvero che possono essere inseriti nelle sole sezioni dedicate alle singole risorse
** <code>comment</code>
** <code>path</code>
** <code>printable</code>
** <code>preexec</code>
** <code>postexec</code>


==== Sezione global ====
==== Parametri globali ====
Il minimo numero di parametri da definire in questa sezione è uno/due:
<pre>   
<pre>   
[global]
[global]
     allow hosts = 192.168.1.0/24     
     allow hosts = 192.168.1.0/24     
     workgroup = debianizzati
     workgroup = debianizzati
    server string = server@debianizzati.org
    security = user
    guest account = ospite
    map to guest = Bad User
    username map = /etc/samba/utenti.map
    netbios name = debianizzati
    netbios aliases = alias1 ... aliasN
    include = /etc/samba/smb.conf.%L
</pre>
</pre>
* <code>'''allow hosts'''</code>: 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>'''allow hosts'''</code>: 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.
<br>
Nel seguito vengono proposti altri parametri che potrebbero risultare interessanti:
<pre>
server string = server@debianizzati.org
netbios name = debianizzati
netbios aliases = alias1 ... aliasN
include = /etc/samba/smb.conf.%L
security = user
guest ok = no
guest account = ospite
map to guest = Bad User
guest only = yes
username map = /etc/samba/utenti.map
create mask = 0750
directory mask = 0750
</pre>
* <code>'''server string'''</code>: stringa che identifica il server.
* <code>'''server string'''</code>: stringa che identifica il server.
* <code>'''netbios name'''</code>: stringa che sostituisce nella maggior parte dei casi (si veda il manuale) l'hostname della macchina (solo per quantoriguarda la visualizzazione da parte dei client).
* <code>'''netbios aliases'''</code>: permette di identificare un server samba attraverso più nomi. Quest'opzione risulta particolarmente utile in congiunzione con il parametro <code>include</code>.
* <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>'''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).
** ''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).
** ''domain'' e ''server'': sono modalità specifiche per reti dove è configurato un dominio e non semplicemente un gruppo di lavoro.
** ''domain'' e ''server'': sono modalità specifiche per reti dove è configurato un dominio e non semplicemente un gruppo di lavoro.
* <code>'''guest ok'''</code>: equivalente al parametro <code>public</code> definisce se una condivisione è accessibile o meno all'utenza guest, posto che questa sia abilitata (si veda la sezione dedicata alla creazione degli utenti). Attribuire ''no'' come valore a questo parametro nella sezione global è di norma inutile, visto che tale è proprio il suo valore predefinito, tuttavia ciò non è vero nel caso in cui il parametro <code>map to guest</code> sia impostato su un valore diverso da ''never'', come in questo esempio. Omettere di specificare ''no'' in questo caso comporterebbe l'impossibiiltà di accedere con utente diverso da guest a tutte quelle risorse per cui non è stato esplicitamente definito <code>guest ok = no</code>.
* <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 167: Riga 152:
** ''Bad Password'' e ''Bad Uid'', si veda il manuale.
** ''Bad Password'' e ''Bad Uid'', si veda il manuale.
* <code>'''username map'''</code>: indica un file testuale contenente la mappatura di uno più utenti, ovvero permette di ''trasformare'' un nome utente in un altro. Ogni riga di tale file (''utenti.map'' nell'esempio) deve contenere il nome linux dell'utente seguito da un uguale e poi dal (o dai) nome windows dello stesso, ad esempio le righe <code>root = admin administrator</code> e <code>mario = "Mario Rossi"</code> mappano i nomi ''admin'' e ''administrator'' a root, mentre "Mario Rossi" a mario. La mappatura dei nomi può tornare ad esempio utile per impedire che uno o più utenti dotati di nome linux differente da quello windows possano accedere inizialmente come guest al server.
* <code>'''username map'''</code>: indica un file testuale contenente la mappatura di uno più utenti, ovvero permette di ''trasformare'' un nome utente in un altro. Ogni riga di tale file (''utenti.map'' nell'esempio) deve contenere il nome linux dell'utente seguito da un uguale e poi dal (o dai) nome windows dello stesso, ad esempio le righe <code>root = admin administrator</code> e <code>mario = "Mario Rossi"</code> mappano i nomi ''admin'' e ''administrator'' a root, mentre "Mario Rossi" a mario. La mappatura dei nomi può tornare ad esempio utile per impedire che uno o più utenti dotati di nome linux differente da quello windows possano accedere inizialmente come guest al server.
* <code>'''netbios name'''</code>: stringa che sostituisce nella maggior parte dei casi (si veda il manuale) l'hostname della macchina (solo per quantoriguarda la visualizzazione da parte dei client).
* <code>'''netbios aliases'''</code>: permette di identificare un server samba attraverso più nomi. Quest'opzione risulta particolarmente utile in congiunzione con il parametro <code>include</code>.
* <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.
===Parametri generici===
<pre>
guest ok = no
guest only = yes
browseable = yes
public = yes
read only = yes
create mask = 0750
directory mask = 0750
</pre>
* <code>'''guest ok'''</code>: equivalente al parametro <code>public</code> definisce se una condivisione è accessibile o meno all'utenza guest, posto che questa sia abilitata (si veda la sezione dedicata alla creazione degli utenti). Attribuire ''no'' come valore a questo parametro nella sezione global è di norma inutile, visto che tale è proprio il suo valore predefinito, tuttavia ciò non è vero nel caso in cui il parametro <code>map to guest</code> sia impostato su un valore diverso da ''never'', come in questo esempio. Omettere di specificare ''no'' in questo caso comporterebbe l'impossibiiltà di accedere con utente diverso da guest a tutte quelle risorse per cui non è stato esplicitamente definito <code>guest ok = no</code>.
* <code>'''guest only'''</code>: se impostato su ''yes'' restringe l'accesso alla risorsa alla sola utenza guest;
* <code>'''browseable'''</code>, se impostato su ''yes'' rende visibile la condivisione nell'elenco delle risorse disponibili; dichiarare esplicitamente questo parametro con valore ''yes'' è utile solo qualora nella sezione global sia stato dichiatato esplicitamente <code>browseable = no </code>, essendo ''yes'' il valore predefinito;
* <code>'''public'''</code>, se impostato su ''yes'' rende la directory di libero accesso; è del tutto equivalente all'opzione <code>'''guest ok'''</code>;
* <code>'''read only'''</code>, setta i file della directory condivisa in sola lettura, è l'esatto opposto dell'opzione <code>'''writeable'''</code>, ovvero porre <code>read only = yes</code> equivale a <code>writeable = no</code> e viceversa; dichiarare esplicitamente questo parametro con valore ''yes'' è utile solo qualora nella sezione global sia stato dichiatato esplicitamente <code>read only = no </code>, essendo ''yes'' il valore predefinito.
* <code>'''create mask'''</code>: definisce lo schema di permessi in stile UNIX che i file (e non delle cartelle) creati dai client windows avranno. Si noti che questo parametro non altera in alcun modo i permessi dei file eventualmente già presenti in una cartella condivisa oppure creati al di fuori di samba, per esempio da un utente che si è collegato tramite SSH;
* <code>'''create mask'''</code>: definisce lo schema di permessi in stile UNIX che i file (e non delle cartelle) creati dai client windows avranno. Si noti che questo parametro non altera in alcun modo i permessi dei file eventualmente già presenti in una cartella condivisa oppure creati al di fuori di samba, per esempio da un utente che si è collegato tramite SSH;
* <code>'''directory mask'''</code>: parametro identico a <code>create mask</code>, ma riguarda le cartelle invece dei file;
* <code>'''directory mask'''</code>: parametro identico a <code>create mask</code>, ma riguarda le cartelle invece dei file.


==== Condivisione di una directory ====
==== Condivisione di una directory ====
Riga 176: Riga 182:
     comment = Directory Shared
     comment = Directory Shared
     path = /dir/da/condividere
     path = /dir/da/condividere
    browseable = yes
    read only = yes
    public = yes
    create mask = 0755
    guest only = yes
</pre>
</pre>
Si noti la presenza di alcuni parametri già presentati nella sezione ''global''; in linea generale quando in una sezione specifica viene ridichiarato un certo parametro allora per la suddetta sezione verrà usato il valore del parametro lì dichiarato e non quello definito precedentemente in ''global'' (si ricordi che ''allow users'' costituisce un'eccezione).
Si noti la presenza di alcuni parametri già presentati nella sezione ''global''; in linea generale quando in una sezione specifica viene ridichiarato un certo parametro allora per la suddetta sezione verrà usato il valore del parametro lì dichiarato e non quello definito precedentemente in ''global'' (si ricordi che ''allow users'' costituisce un'eccezione).
* <code>'''comment''' </code>= commento per la directory;
* <code>'''comment''' </code>= commento per la directory;
* <code>'''path'''</code> = percorso della directory condivisa;
* <code>'''path'''</code> = percorso della directory condivisa;
* <code>'''browseable'''</code> = se impostato su ''yes'' rende visibile la condivisione nell'elenco delle risorse disponibili; dichiarare esplicitamente questo parametro con valore ''yes'' è utile solo qualora nella sezione global sia stato dichiatato esplicitamente <code>browseable = no </code>, essendo ''yes'' il valore predefinito.
* <code>'''public'''</code> = se impostato su ''yes'' rende la directory di libero accesso; è del tutto equivalente all'opzione <code>'''guest ok'''</code>;
* <code>'''read only'''</code> = setta i file della directory condivisa in sola lettura, è l'esatto opposto dell'opzione <code>'''writeable'''</code>, ovvero porre <code>read only = yes</code> equivale a <code>writeable = no</code> e viceversa; dichiarare esplicitamente questo parametro con valore ''yes'' è utile solo qualora nella sezione global sia stato dichiatato esplicitamente <code>read only = no </code>, essendo ''yes'' il valore predefinito.
* <code>'''guest only'''</code>: se impostato su ''yes'' restringe l'accesso alla risorsa alla sola utenza guest.


==== Condivisione di una stampante ====
==== Condivisione di una stampante ====
2 894

contributi