Difference between revisions of "Samba (Italiano)"

From ArchWiki
Jump to: navigation, search
m (Mount automatico)
m (SWAT: Samba web administration tool)
Line 113: Line 113:
 
         disable                = no
 
         disable                = no
 
  }
 
  }
 
+
In alternativa è possibile aggiungere il servizio swat e la relativa porta al file {{Filename|/etc/services}} ed omettere le prime 3 righe della configurazione.
 
Nel caso in cui xinetd sia stato compilato con il flag tcpwrapper abilitato, sarà necessario modificare il file {{Filename|/etc/hosts.allow}} ed aggiungere la seguente linea:
 
Nel caso in cui xinetd sia stato compilato con il flag tcpwrapper abilitato, sarà necessario modificare il file {{Filename|/etc/hosts.allow}} ed aggiungere la seguente linea:
  

Revision as of 22:20, 7 October 2010

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Samba è una reimplementazione del protocollo di rete SMB/CIFS, serve per facilitare la condivisione di file e stampanti tra sitemi Linux e Windows, come alternativa ad NFS. Samba è facilmente configurabile e le opzioni sono molto chiare.

Installazione

L'installazione del solo client è sufficente per quei computer che non dovranno condividere file, ma solo accedervi.

# pacman -S smbclient

Per poter condividere delle cartelle, installare il server Samba:

# pacman -S samba

Verrà installato un demone insieme al server che dovrà essere avviato per far sì che Samba funzioni. Samba normalmente utilizza FAM per monitorare il file-system in cerca di cambiamenti, in alternativa può essere utilizzato Gamin che ultimamente, stà rimpiazzando FAM, il quale non è più sviluppato, quindi obsoleto.

Warning: FAM non è più sviluppato, è quindi consigliato, se possibile, di installare Gamin.

Per installare Gamin:

# pacman -S gamin

Configurazione

Il file Template:Filename deve essere creato prima di avviare il demone. Una volta creato, gli uteni possono optare per una interfaccia di configurazione avanzata come SWAT, invece di editare il file manualmente.

smb.conf

Da root, copiare il file di configurazione di default in Template:Filename:

# cp /etc/samba/smb.conf.default /etc/samba/smb.conf

Aprire il file Template:Filename e modificarlo secondo le necessità. La configurazione di default prevede la condivisione della cartella Template:Filename di ogni utente. Crea inoltre una condivisione per le stampanti.

Global Parameters

La prima sezione del file Template:Filename serve a configurare i parametri globali, la gran parte delle modifiche sarà effettuta qua. Segue un esempio di sezione Global Parameters:

#Global Parameters
workgroup = HOME
netbios name = nome-della-macchina
encrypt passwords = yes

Il parametro "workgroup" imposta il nome del gruppo di lavoro al quale volete che la macchina appartenga. Il parametro "encrypt passwords" deve essere mantenuto a "yes" a meno che in rete non siano presenti macchine Windows 95 o Windows 98, questi due sistemi infatti non supportano le password criptate. Infine il parametro "netbios name" è il nome che desiderate asseganre alla macchina su cui state lavorando all'interno della rete.

Condivisioni

A seguito si trova la configurazione delle condivisioni. La condivisione più semplice possibile sarà quella in cui un utente può accedere e scrivere nella propria home direcotry. Per fare ciò nel file smb.conf saranno presnti le righe:

[homes]
browseable = no
read only = no

Se si vuole che tutti possano vedere i file, ma solo gli utenti appartenenti ad alcuni gruppi abbiano diritto di scrittura, allora sarà necessario cambiare le righe precedenti in:

[homes]
public = yes
writable = yes
write list = @nome-gruppo

Se vogliamo che gli utenti windows una volta loggati vedano una direcotry home "pulita" (ovvero non i file nascosti, es: ~/.bashrc), allora la sezione homes potrebbe essre:

[homes]
path = /home/%u/smb
browseable = no
read only = no

In questo caso però assicurasi di aggiungere la cartella 'smb' alle home directory degli utenti. Inoltre aggiungere 'smb' alla direcotry Template:Filename, in modo che tutti i nuovi utenti abbiano 'smb' aggiunto in automatico alla creazione:

 # mkdir /etc/skel/smb

Aggiungere altre condivisioni differenti dalle direcotry home non è più difficile, anzi. Per aggiungere un'ulteriore condivisione:

[music]
path = /mnt/windows/Music/
browseable = yes
read only = yes
valid users = Bryan, Michael, David, Jane

Il parametro Template:Codeline indica la posizione della direcotry che si vuole condividere. Il parametro Template:Codeline comunica a samba quali utenti hanno diritto di accedere a questa condivisione. Una volta aggiunte tutte le condivisioni necessarie, salvare il file ed uscire dall'editor.

Note: I nomi utente inseriti nel file di configurazione devono coincidere con gli utenti di sistema della macchina Linux ed è consigliato che coincidano anche con quelli presenti sulle macchine Windows.

Avviare il servizio automaticamente

Se si usa FAM, avviare il demone Template:Codeline prima di Template:Codeline. Gamin non ha bisogno di essere avviato come demone dato che sarà avviato automaticamente se necessario.

Senza effettuare un riavvio, FAM e Samba possono essere avviati con i comandi:

# /etc/rc.d/fam start
# /etc/rc.d/samba start

Aggiungere Template:Codeline e Template:Codeline all'array DAEMONS nel file Template:Filename per l'avvio automatico del servizio.

SWAT: Samba web administration tool

SWAT è una comodità per Samba. Il programma principale si chiama swat e viene avviato attraverso il demone xinetd (ovvero eXtended InterNET Daemon).

Ci sono diverse opinioni riguardo l'effettiva utilità di SWAT. Non importa quanto impegno si metta per produrre un tool di configurazione perfetto, rimarrà sempre una questione soggettiva ritenerlo utile. SWAT è un tool che attraverso un interfaccia Web, permette di configurare Samba. Sarà possibile effettuare una configurazione guidata per velocizzare e semplificare la configurazione, dispone dell'aiuto contestuale per ogni parametro del file Template:Filename, permette inoltre di monitorare il corrente stato delle connessioni, ed anche di gestire le password di rete MS Windows [1].

Note: In caso di problemi con SWAT, si può usare il più ampio tool di configurazione Webmin (Italiano), e semplicemente caricare il relativo modulo SWAT.
Warning: Prima di usare SWAT. SWAT sostituirà se esiste il file Template:Filename con un file più ottimizzato contenente i soli valori non di default e privo di commenti(anche di quelli inseriti dall'utente) .

Per usare SWAT, si dovrà prima installare xinetd:

# pacman -S xinetd

Modificare con un editor di testo il file Template:Filename. Per abilitare SWAT, cambiare la linea Template:Codeline in Template:Codeline.

service swat
{
        port                    = 901
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/sbin/swat
        log_on_success  += HOST DURATION
        log_on_failure  += HOST
        disable                 = no
}

In alternativa è possibile aggiungere il servizio swat e la relativa porta al file Template:Filename ed omettere le prime 3 righe della configurazione. Nel caso in cui xinetd sia stato compilato con il flag tcpwrapper abilitato, sarà necessario modificare il file Template:Filename ed aggiungere la seguente linea:

swat:127.0.0.1

Successivamente avviare il demone xinetd:

# /etc/rc.d/xinetd start

L'interfaccia web è raggiungibile dalla porta di default, 901,

http://localhost:901/

Aggiungere gli utenti

Per accedre ad una condivisione Samba, sarà necessario aggiungere un utente samba:

# smbpasswd -a <user>

L'utente dovrà avere già un account di sistema sul server. Se l'utente non esiste si otterrà un errore:

Failed to modify password entry for user "<user>"

Per aggiungere un nuovo utente di sistema Linux si può usare adduser. Questo articolo non spiega come aggiungere utenti su sistemi Windows.

Accedere alle condivisioni Samba

KDE consente di accedere alle condivisioni Samba. Non sarà quindi necessario installare nessun pacchetto se si utilizza KDE. Se invece si intende accedere alle condivisioni da Gnome o dalla shell, sarà necessario installare un pacchetto addizionale.

Accedere ad una condivisione Samba da Gnome o KDE

Per poter accedere alle condivisioni samba da Nautilus sarà necessario installare il pacchetto gvfs-smb

# pacman -S gvfs-smb

Dalla finestra di Nautilus/Dolphin/Konqueror, premere Template:Keypress+Template:Keypress oppure andare sul menù "Vai" e selezionare "Posizione..." -- entrambe le azioni porteranno il cursore nella barra del percorso. Digitare:

smb://nome_server/condivisione
Note: Se non è stato inserito il nome server nel file Template:Filename, si dovrà inserire l'indirizzo IP del server invece del nome.

In KDE per avere una interfaccia per la configurazione all'interno della schermata "Impostazioni di Sistema" sarà necessario installare il pacchetto kdenetwork-filesharing dal repository [extra].

Accedere ad una condivisione Samba tramite shell

Si può accedere alle condivisioni montandole automaticamente oppure manualmente.

Mount automatico

Ci sono diverse alternative per un accesso semplice alle condivisioni.

smbnetfs

1. Installare Template:Package Official:

# pacman -S smbnetfs

2. Aggiungere la seguente linea al file Template:Filename:

user_allow_other

3. Caricare il modulo Template:Codeline:

# modprobe fuse

4. Avviare il demone Template:Codeline:

# /etc/rc.d/smbnetfs start

Tutte le condivisioni nella rete saranno montate automaticamente in Template:Filename.

Apportare infine le seguenti modifiche al file Template:Filename per montare le condivisioni durante l'avvio del sistema:

MODULES=(... fuse ...)
DAEMONS=(... smbnetfs ...)

Se le condivisioni necessitano di un utente ed una password per l'accesso, sarà necessario modificare il file Template:Filename decommentando la linea che inizia con "auth", e modificandola secondo le esigenze:

auth			"WORKGROUP/username" "password"

Può essere necessaria la modifica dei permessi sul file Template:Filename per far sì che il sevizio funzioni correttamente:

# chmod 600 /etc/smbnetfs/.smb/smbnetfs.conf

fusesmb

Note: Dato che Template:Codeline non funziona correttamente con Template:Codeline, è preferibile effettuare il downgrade se necessario. Consultare il topic sul forum per maggiori informazioni.

1. Installare Template:Package AUR da AUR usando yaourt oppure uno degli altri AUR Helpers:

$ yaourt -S fusesmb

2. Creare il punto di mount:

# mkdir /mnt/fusesmb

3. caricare il modulo Template:Codeline:

# modprobe fuse

4. Montare la condivisione:

# fusesmb -o allow_other /mnt/fusesmb

Per montare automaticamente all'avvio, aggiungere il comando sopra nel file Template:Filename ed aggiungere il modulo Template:Codeline in Template:Filename:

MODULES=(... fuse ...)

Autofs

Consultare la pagina relativa ad Autofs per maggiori informazioni riguardo al mount automatico implementato nel kernel Linux.

Montare manualmente una condivisione

1. Usare smbclient per esplorare le condivisioni dalla shell. Per ottenere l'elenco delle condivisioni pubbliche da un server:

$ smbclient -L <hostname> -U%

2. Creare il punto di mount per la condivisione:

# mkdir /mnt/PUNTODIMOUNT

3. Montare la condivisione usando Template:Codeline. Ricordare che non tutte le opzioni sono sempre necessarie o consigliate, ad esempio l'opzione Template:Codeline:

# mount -t cifs //SERVER/CONDIVISIONE PUNTODIMOUNT -o user=NOMEUTENTE,password=PASSWORD,workgroup=WORKGROUP,ip=IPSERVER
Template:Codeline
Il nome macchina Windows
Template:Codeline
Nome della condivisione
Template:Codeline
La cartella locale dove sarà montata la condivisione
Template:Codeline
Specifica la presenza di opzioni al comando Template:Codeline
Template:Codeline
Il nome utente necessario per l'accesso alla condivisione
Template:Codeline
La password di accesso alla condivisione
Template:Codeline
Serve per specificare il gruppo di lavoro Windows
Template:Codeline
L'indirizzo IP del server --Se il sistema non può identificare il server tramite il nome(DNS, WINS, il file hosts, etc.)
Note: Evitare di usare i delimitatori delle cartelle (/) alla fine del percorso. Usando Template:Filename non funzionerà.

4. Per smontare la condivisione usare il comando:

# umount /mnt/PUNTODIMOUNT

Aggiungere una condivisione in Template:Filename

Aggiungere la seguente linea al file Template:Filename per un mount rapido:

//SERVER/CONDIVISIONE /mnt/PUNTODIMOUNT cifs noauto,noatime,username=NOMEUTENTE,password=PASSWORD,workgroup=WORKGROUP 0 0

L'opzione Template:Codeline impedisce il mount automatico all'avvio mentre Template:Codeline aumenta le prestazioni non aggiornando i tempi di accesso ai file.

Dopo aver aggiunto la precedente linea, la sintassi del comando Template:Codeline diventa più semplice:

# mount /mnt/PUNTODIMOUNT

Se si aggiunge una condivisione nel file Template:Filename, il demone Template:Codeline dovrà essere aggiunto nell'array DAEMONS in rc.conf, dopo network. Il demone Template:Codeline si occuperà di montare le condivisioni durante la fase di avvio e, cosa più importante, di smontarle durante la fase di arresto del sistema. Anche se viene utilizzata l'opzione Template:Codeline in Template:Filename, il demone Template:Codeline dovrebbe essere usato. Senza di esso se una condivisione fosse montata, durante la fase di spengimento porterebbe il demone Template:Codeline ad attendere il time out della connessione, aumentado quindi la durata di arresto del sistema.

Permettere agli utenti di montare le condivisioni

Prima abilitare l'accesso al comando mount, il file Template:Filename dovrà essere modificato. Aggiungere l'opzione Template:Codeline nella voce in Template:Filename:

//SERVER/CONDIVISIONE /percorso/del/PUNTODIMOUNT cifs users,noauto,noatime,username=NOMEUTENTE,password=PASSWORD,workgroup=WORKGROUP 0 0
Note: Questa è l'opzione Template:Codeline(al plurale). Per altri tipi di filesystem, questa opzione è user, senza la "s".

Questo permetterà agli utenti di montatre la condivisione se il suo punto di mount si trova in una cartella controllabile dall'utente; ad esempio la propria cartella home. Per montare le condivisioni Samba in punti di mount che non si posseggono, utilizzare #smbnetfs oppure elevare i privilegi tramite sudo.

Tips and tricks

Condividre file sulla propria rete senza la richiesta di utente e password

Modificare il file Template:Filename cambiando la seguente linea:

security = user

in

security = share

Se si vuole restringere la condivisione ad una specifica interfaccia di rete, sostituire:

;   interfaces = 192.168.12.2/24 192.168.13.2/24

con:

interfaces = lo eth0
bind interfaces only = true

(cambiando eth0 con il nome dell'interfaccia connessa alla rete con la quale si vuole effettuare la condivisione)

Se si vuole è possibile modificare l'account che accede alle condivisioni, cambiando la seguetne linea:

;   guest account = nobody

L'ultimo passo consiste nel creare le condivisioni(per garantire il permesso in scrittura usare l'opzione writable = yes):

[Public Share]
path = /percorso/alla/condivisione_pubblica
available = yes
browsable = yes
public = yes
writable = no

Esempio di configurazione

Questo è un esempio di configurazione funzionante:

[global]
workgroup = WORKGROUP
server string = Samba Server
netbios name = PC_NAME
security = share
; la seguente linea è importatne! In caso di problemi di permessi
; assicurarsi che l'utente di seguito sia il solito che possiede
; la cartella che si condivide
guest account = mark
username map = /etc/samba/smbusers
name resolve order = hosts wins bcast
wins support = no
[public] comment = Public Share path = /path/to/public/share available = yes browsable = yes public = yes writable = no

Aggiungere condivisioni usando l'interfaccia di KDE4

Come configurare le condivisioni in KDE4. La configurazione più semplice usa le condivisioni delle singole home degli uteni con accesso in sola lettura. Configurazioni più avanzate permettono svariate possibilità senza limitazioni alle condivisioni, ma richiedono Template:Codeline oppure Template:Codeline per ottenere i privilegi di root.

Individuare le condivisioni di rete

Se non si conosce la struttura della rete locale, e gli strumenti di automazione come #smbnetfs non sono disponibili, i seguenti metodi permetteranno di individiuare le condivisioni Samba.

1. Primo, installare Template:Package Official e Template:Package Official usando pacman:

# pacman -S nmap smbclient

2. Template:Codeline controlla quali porte sono aperte:

# nmap -sT 192.168.1.*

In questo esempio verrà scansionata l'intera classe di indirizzi 192.168.1.*. Ecco il risultato: Template:Command

Il primo indirizzo(192.168.1.1) è un altro pc, mentre il secondo è il computer da cui è stata lanciata la scansione.

3. Adesso verso il sistema che risulta avere la porta 139 aperta, sarà usato Template:Codeline per ottenere i nomi delle condivisioni(NetBIOS names): Template:Command

Senza preoccuparsi dei vari risultati, cercare il valore <20>, che indica la macchina con la condivisione file attiva.

4. Usare Template:Codeline per elencare quali servizi sono condivisi da PUTER. Nel caso fosse richiesta una password, premendo invio verrà comunque mostrata la lista: Template:Command

Questo mostra quali cartelle sono condivise, e quindi possono essere montate localmente. Vedi #Accedere alle condivisioni Samba

Risoluzione dei problemi

Problemi con gli accessi da Windows a condivisioni protette da password

In caso di problemi di accesso da Windows alle condivisioni protette da password, provare ad aggiungere queste righe al file Template:Filename:[2]

Notare che si dovrà modificare il file smb.conf locale non quello del server

[global]
# lanman fix
client lanman auth = yes
client ntlmv2 auth = no

Lentezza nell'apparsa della finestra per l'accesso

Si sono verificati ritardi anche di circa 30 secondi, dalla richiesta di connessione all'apparsa della finestra di accesso, sia utilizzando Windows XP che Windows 7. E analizzando il log Template:Filename compare:

[2009/11/11 06:20:12,  0] printing/print_cups.c:cups_connect(103)
Unable to connect to CUPS server localhost:631 - Interrupted system call

Dato che il problema si verificava anche se sul server non erano connesse stampanti, la soluzione consiste nell'aggiungere queste righe nella sezione global del file Template:Filename

load printers = no
printing = bsd
disable spoolss = yes
printcap name = /dev/null
Non c'è la certezza che tutte queste righe siano effettivamente necessarie, ma in questo modo fuziona.

Cambiamenti in Samba versione 3.4.0

Tra le maggiori innovazioni in Samba 3.4.0:

Il programma di gestione delle password di default è stato cambiato in favore di 'tdbsam'! Di conseguenza tutte le configurazioni esistenti, che invece utilizzano 'smbpasswd', senza una dichiarazione esplicita risultano non funzionanti.

Se si vuole utilizzare 'smbpasswd' modificare il file Template:Filename:

passdb backend = smbpasswd

oppure convertire a Template:Codeline gli accessi:

sudo pdbedit -i smbpasswd -e tdbsam

Error: Value too large for defined data type

Con alcune applicazioni si può ottenere questo errore provando ad aprire un file da una condivisione smbfs/cifs:

 Value too large for defined data type

La soluzione[3], è aggiungere questa opzione al mount delle condivisioni smbfs/cifs(all'interno del file Template:Filename ad esempio):

 ,nounix,noserverino

Testato su Arch Linux aggiornata al 02/12/2009

Risorse