SAMBA: configurazione lato client

Da Guide@Debianizzati.Org.

Guida estesa

Sommario

  1. Lato server
  2. Lato client
  3. Esempi
  4. Troubleshooting
  5. Approfondimenti

Indice

Linux

Montare le risorse remote nel filesystem locale

Utilizzando il versatilissimo mount è possibile montare le risorse remote in un punto qualsiasi del proprio filesystem in modo da farle apparire come normalissime cartelle, indistinguibili in tutto e per tutto da quelle locali. Questo risultato può essere ottenuto tramite due diversi suite di eseguibili.

CIFS, Mount e Umount

Ipotesi Preliminari

Caricare manualmente le risorse remote

Premesso tutto ciò da terminale è sufficiente digitare un comando del tipo:

# mount -t cifs "//mioserver/miacartella" -o user=utente_samba,pass=password_utente_samba,uid=1000,gid=1000,file_mode=0777,dir_mode=0775 "/mnt/samba"

A questo punto, se non sono comparsi messaggi d'errore, in /mnt/samba dovrebbe essere presente il contenuto di "miacartella".
Il significato del precedente comando è il seguente:

- user, definisce l'utente samba;
- pass, definisce la password dell'utente samba;
- uid e gid definiscono chi saranno il proprietario e il gruppo proprietario (attraverso i rispettivi ID numerici) delle risorse montate. Evitando di specificare tali parametri è quasi certo cheguest,nosetuids,noperm,rw le risorse risulteranno accessibili in sola lettura a tutti gli utenti normali, poiché per comportamento predefinito il possesso viene attribuito all'utente root e al gruppo root.
- file_mode e dir_mode permettono di definire schemi di permessi differenti da quello standard, ovvero 0755, rispettivamente per file e cartelle.
Warning.png ATTENZIONE
Date certe credenziali non è possibile attribuire permessi meno restrittivi di quelli definiti sulla macchina che mette a disposizione le risorse, per esempio è possibile montare in sola lettura delle risorse che in orgine permettevano sia lettura chee scrittura, ma non il contrario.


Nel caso di utente guest è sufficiente un comando del tipo:

mount -t cifs "//mioserver/miacartella" -o guest,nosetuids,noperm,rw "/mnt/samba"

dove guest permette di non inserire alcuna password (ovviamente deve essere già stata abilitata un utenza guest sul server).

Caricamento automatico all'avvio

È possibile evitare di dover caricare manualmente ad ogni avvio le risorse remote editando oppurtunamento il file /etc/fstab, ovvero inserendo un'opportuna riga per ogni risorsa (attenzione che la riga è molto lunga e potrebbe non essere interamente visibile nella finiestra del browser):

//mioserver/miacartella    /mnt/samba   cifs    _netdev,credentials=/percorso_file/credenziali,uid=1000,gid=1000,file_mode=0777,dir_mode=0775    0   0

credentials, definisce il percorso di un file testuale contenente tre righe e necessario per autenticarsi presso il server samba:

username=utente_samba
password=password_utente_samba
domain=nome_dominio_o_gruppo_samba

_netdev dovrebbe imporre che la risorsa remota venga montata solo dopo aver configurato attivato correttamente l'interfaccia (le interfacce?) di rete, poiché se per caso l'operazione di mount avviene prima che questa sia pronta non verrà montato alcunché (ma sarà poi comunque possibile montare manualmente la risorsa).
Per un utenza di tipo guest è sufficiente una riga simile a questa:

//mioserver/miacartella        /mnt/samba      cifs    _netdev,guest,nosetuids,noperm,rw       0       0
Warning.png ATTENZIONE
/etc/fstab mal tollera i nomi e i percorsi non standard, pertanto ove possibile evitare di scegliere nomi delle condivisioni contenenti spazi o altri caratteri speciali.


Qualora proprio non se ne potesse fare a meno è possibile indicare i caratteri speciali in forma ottale (se tutti o solo alcuni non è dato saperlo); ad esempio una cartella di nome prova &del % dovrebbe essere indicata come prova\040\046del\040%; si noti che mentre la "e commerciale" e lo spazio devono essere indicati in forma ottale, il simbolo "percento" può essere indicato normalmente. A quest'indirizzo è disponibile una tabella di conversione per i primi 256 caratteri ASCII.

Smontare le risorse remote

Per terminare l'accesso alle risorse remote dalla macchina in uso è sufficiente digitare sempre come root:

# umount /mnt/samba

SMBFS, Smbmount e Smbumount

Se per un qualche motivo non si può o non si vuole usare il filesystem CIFS è sempre possibile adottare il il più vecchio SMBFS; in tal caso dovrebbe essere sufficiente installare il pacchetto smbfs perché sia possibile continuare ad usare mount/umount per connettere e disconnettere le condivisioni windows. La sintassi dei comandi mount e umount non cambia, bisogna solo avere l'accortezza di specificare -t smbfs invece di -t cifs, nonché consultare il manuale per vedere quali opzioni sono supportate da SMBFS e quali no.
Alternativamente è possibile usare i comandi smbmount e smbumount, dalla sintassi molto simile a mount e umount. Per montare ad esempio una risorsa di nome shared:

$ smbmount //SERVER/shared  /path/del/mountpoint

(come password digitiamo quella dell'user creato con smbpasswd o solo invio)

Così facendo potremmo accedere alla risorsa condivisa, raggiungendo il mountpoint:

$ cd /path/del/mountpoint
$ ls
   directory  free_kevin.png  pokemon.png dorothy_la_may.gif 

In alternativa:

mount -t smbfs -o username=username_valida,password=password_valida //SERVER/shared /mnt/punto_di_mount

Per fare in modo che la nostra Debian monti automaticamente all'avvio la risorsa condivisa Windows, dobbiamo modificare il file /etc/fstab, il file che contiene tutte le informazioni sui filesystem montati:

# nano /etc/fstab

Alla fine del file aggiungiamo la riga:

//SERVER/shared /mnt/punto_di_mount smbfs username=username_valida,password=password_valida 0 0

Navigatori

Sono semplicemente applicativi che permettono essenzialmente di copiare da o su una risorsa remota file e cartelle. Mentre in windows esplora risorse permette di norma di rendere disponibile le varie risorse remote a qualsiasi programma in esecuzione come se si trovassero fisicamente sul computer, su linux purtroppo questo non è sempre vero. In quest'ultimo caso perché le risorse remote siano accessibili come quelle locali è necessario "montarle" nel proprio filesystem attraverso appositi applicativi e procedure descritte nella prossima sezione di questa guida Montare le risorse remote nel filesystem locale.

Nautilus

Per accedere alle condivisioni windows esistono tre strade:

Smbclient

Info.png NOTE
  • Installare quest'applicativo anche sulle macchine dedicate esclusivamente a fornire risorse per la rete, come nel caso di file server.
  • Se si prova ad accedere alle risorse condivise da una macchina cui corrisponde un indirizzo IP non compreso nell'intervallo di indirizzi ammessi (hosts allow) si riceverà come errore protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE.
  • Se si usa smbclient per accedere alle condivisioni ospitate su una macchina windows con nome dominio verrà mostrato l'hostname della macchina e non il nome del gruppo/dominio di appartenza.


Installazione:
# apt-get install smbfs cifs-utils smbclient

Come detto in precedenza, smbclient è un programma client ftp-like, utilizzato per l'accesso a un server Samba. Si osservino i suoi principali flags e, una volta effettuato il login sul server, le sue principali funzioni.

Principali parametri (flags)

(Usare smbclient --help per l'elenco completo' dei parametri'):

$ smbclient -L SERVER 
Password: ****

Domain=[debianizzati] OS=[Unix] Server=[Samba 3.0.14a-Debian]

        Sharename       Type      Comment
        ---------       ----      -------
        shared          Disk      Directory Shared
        canon           Disk      Canon Printer
        dvd             Disk      Lettore DVD-R
        IPC$            IPC       IPC Service (server@debianizzati.org)
        ADMIN$          IPC       IPC Service (server@debianizzati.org)

Domain=[debianizzati] OS=[Unix] Server=[Samba 3.0.14a-Debian]

        Server               Comment
        ---------            -------
        SERVER               server@debianizzati.org
        CLIENT               server@debianizzati.org

        Workgroup            Master
        ---------            -------
        debianizzati         SERVER

Come si vede, nella colonna Sharename sono elencati i nomi delle risorse definite in /etc/samba/smb.conf, quindi la directory shared,la stampante e il lettore DVD (le sezioni [global] e [printers] non sono visibili poiché sono sezioni di parametri usate dal programma).
Nella colonna Server sono invece elencati gli host facenti parte del medesimo gruppo di lavoro (workgroup).
C'è poi la colonna Workgroup che visualizza l'host con ruolo di domain master browser nella subnet.

Accesso al server

Per accedere effettivamente alle risorse condivise è necessario digitare:

$ smbclient servizio password -U nome_utente

In caso di connessione riuscita la videata dovrebbe apparire simile a quanto segue:

$ smbclient //SERVER/shared
Password: ****
Domain=[SERVER] OS=[Unix] Server=[Samba 3.0.14a-Debian]
smb: \>

Qualora si ricevesse il seguente messaggio d'errore:

Domain=[vostro_dominio] OS=[Unix] Server=[Samba 3.5.11]
tree connect failed: NT_STATUS_ACCESS_DENIED

si veda l'ultima pagina di questa guida, ovvero quella dedicata alla risoluzione dei problemi.

Il prompt smb: \> indica che l'utente si trova nella risorsa condivisa richiesta al server Samba (il cui hostname d'esempio è SERVER). Sostanzialmente il funzionamento di smbclient è analogo a quello di un client ftp, ma con in più degli utilissimi tools per il down/uploading dei file. Alcuni input uguali a quelli di una shell di bash sono: ls, cd, rm, rmdir, exit, coi quali l'utente dovrebbe avere già confidenza. È comunque possibile ottenere una lista di comandi utili digitando help.

Download di un file con get.
Poniamo come esempio che il contenuto della directory condivisa sia un insieme di file immagine con diverse estensioni e una directory con dentro qualsiasi cosa:

smb: \> ls
  .                       D             0  Tue Aug 23 23:57:51 2005
  ..                      D             0  Wed Aug 17 03:05:20 2005
  directory               D             0  Wed Aug 24 12:21:43 2005
  free_kevin.png                    42604  Mon Aug 22 12:19:34 2005
  pokemon.png                       43404  Mon Aug 22 15:15:11 2005
  dorothy_la_may.gif                46134  Mon Aug 21 21:16:00 2005

Scarichiamo il file free_kevin.png dalla macchina SERVER alla nostra macchina CLIENT, rinominandolo in kevin.png:

smb: \> get free_kevin.png  kevin.png
getting file \ free_kevin.png of size 42604 as  kevin.png(1386.8 kb/s) (average 1386.8 kb/s)

Il file sarà salvato nella directory dalla quale ci siamo connessi al server. Qualora il file non venisse rinominato manterrebbe il proprio nome.

Alcune funzioni

es. di abilitazione dei parametri:
smb: \> lowercase on
smb: \> prompt on
smb: \> showconnect
//SERVER/shared
smb: \> stat  free_kevin.png
File: \free_kevin.png
Size: 101               Blocks: 8       regular file
Inode: 810      Links: 1
Access: (0644/-rw-r--r--)       Uid: 1000       Gid: 1000
Access: 2005-08-24 00:10:39 +0200
Modify: 2005-08-24 00:10:51 +0200
Change: 2005-08-24 00:10:51 +0200

Mask, mget e recurse

Con il comando mget abilitiamo il download di tutti i file e directory in maniera ricorsiva. Tuttavia possiamo dare a tale comando un parametro (maschera) utilizzando mask . Es. nella nostra directory mettiamo di voler scaricare tutti i file con estensione .png:

smb: \> mask *png
smb: \> mget

In questo modo mget intenderà scaricare tutti i files con tale estensione presenti nella directory corrente. Tuttavia con mget è possibile modificare la maschera on-fly digitando semplicemente:

 
smb: \> mget *png

In questo modo la funzione mask, manterrà il suo valore di default che è '*' (cioè tutto). La funzione recurse on attiva lo scanning & downloading (nel caso di una maschera) o il downloading, accedendo anche a tutte le directory presenti nella directory da cui parte il comando.

Web

Se sulla macchina ospitante le risorse è stato installato anche 'smb2www allora è possibile accedere alle condivisioni sfruttando un qualsiasi browser; è sufficiente aprirlo e nella barra degli indirizzi digitare:

http://ip-del-vostro-server/cgi-bin/samba/smb2www.pl

Una cosa comoda è il fatto che cliccando sul link Download this Directory è possibile scaricare l'intero contenuto in formato .tar della cartella condivisa in cui si sta navigando.

Altri client

Quelli appena descritti non sono gli unici esistenti, a titolo d'esempio si citano:

apt-get install pyneighborhood

Windows

Non c'è nulla da configurare, in Windows è già tutto automatizzato. L'utente non deve far altro che cliccare sulla voce rete per visualizzare le risorse disponibili; al più viene richiesto di inserire manualmente l'indirizzo del server, per esempio digitando nella barra degli indirizzi \\nome_server o direttamente l'IP dello stesso.
Si ricorda che non è possibile accedere durante la stessa sessione utente a cartelle per cui sono richieste credenziali differenti, ovvero una volta fatto l'accesso ad una certa cartella sarà possibile accedere solo a cartelle per cui valgano le stesse credenziali, anche se si conoscono le credenziali per accedere ad altre cartelle.

Esiste pero' un trucco per accedere con credenziali differenti senza terminare la sessione utente: riavviando il servizio Workgroup le vecchie credenziali vengono perse ed e' dunque possibile accedere con nuove credenziali. E' possibile riavviare il servizio Workgroup tramite l'interfaccia grafica di gestione dei servizi di Windows oppure tramite il comando "net stop Workstation" e successivamente "net start Workstation" (NOTA: l'interfaccia grafica gestisce automaticamente le dipendenze tra servizi, per cui arresta prima i servizi dipendenti da Workgroup, come ad es. SessionEnv e Browser, e poi li riavvia dopo aver riavviato il servizio stesso. Nel caso di utilizzo della riga di comando questo va fatto a mano).

Da Linux a Windows

L'intera guida presuppone che client di vario tipo debbano accedere a file e cartelle presenti su un server Linux, e non il contrario. Ciò nonostante si ritiene utile precisare alcuni elementi per quegli utenti che si trovino anche a dover accedere da client linux a windows:

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Risorse
Strumenti