Samba: guida estesa

Da Guide@Debianizzati.Org.

Debian-swirl.png Versioni Compatibili
Tutte le versioni supportate di Debian

Indice

Introduzione

Samba è un diffusissimo software open-source, ideato nel 1991 da Andrew Tridgell e rilasciato sotto licenza GPL, che permette la condivisione di risorse come directory e stampanti fra gli host di una rete. Si avvale sostanzialmente del protocollo SMB (server message block) originario Microsoft, basato a sua volta sul protocollo NetBios (network basic input output system) sviluppato da IBM nel 1984. È un software semplicemente straordinario, la sua anima, il file /etc/samba/smb.conf è in perfetto stile Linux; cioè, lo stesso file, può divenire enorme e strutturatissimo oppure snello e semplicissimo, a seconda (e questo è il vero stile Linux) di quello che un utente vuole.

Si sceglie solitamente l'uso di Samba per poter condividere file e stampanti in una rete mista (macchine GNU/Linux, MS-Windows, Mac OS..), in modo da sfruttare un unico protocollo e un unico sistema di autenticazione.

La suite

Analizziamo i programmi che otteniamo dall'installazione della suite Samba per Debian GNU/Linux:

# apt-get update && apt-get install samba smbfs cifs-utils

In breve:

Per i client si veda la sezione loro dedicata.

Configurazione del server

Si compone di due fasi principali:

Il file smb.conf

E' sostanzialmente un elenco di sezioni sotto ognuna delle quali si definiscono uno o più parametri. Ci sono due tipi principali di sezioni:

In ogni file di configurazione andrà definita una sola sezione globale, mentre dovranno essere scritte tante sezioni risorse quante sono le risorse da condividere e/o funzionalità avanzate da abilitare. Il file smb.conf avrà dunque un aspetto di questo tipo (al netto degli eventuali commenti):

[global]
    parametro1 = valore
    ...
    parametroN = valore

[Condivisione1]
    parametro1 = valore
    ...
    parametroN = valore

...

[CondivisioneM]
    parametro1 = valore
    ...
    parametroN = valore

[Periferica1]
    parametro1 = valore
    ...
    parametroN = valore

...

[PerifericaM]
    parametro1 = valore
    ...
    parametroN = valore

[printers]
    parametro1 = valore
    ...
    parametroN = valore

[Stampante1]
    parametro1 = valore
    ...
    parametroN = valore

...

[StampanteM]
    parametro1 = valore
    ...
    parametroN = valore

ecc.

Info.png 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 Samba.


Warning.png ATTENZIONE
Esistono parametri che devono essere dichiarati nella sola sezione global, 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.


In relazione ai parametri utilizzati in questa guida (spiegati nelle successive sezioni):

Parametri globali

  
[global]
    allow hosts = 127.0.0.1 192.168.1.0/24    
    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

    passwd program = /bin/passwd %u
    pam password change = yes
    obey pam restrictions = yes
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
    unix password sync = Yes

Parametri generici

guest ok = no
guest only = yes
browseable = yes 
public = yes
valid users = utente1, utente2, utenteN
read only = yes
create mask = 0750
directory mask = 0750
Info.png IMPORTANTE
I successivi due parametri NON devono essere dichiarati nelle sezioni dedicate alle stampanti.

Parametri specifici

Essendo difficile una discussione unitaria si adotta un approccio caso per caso. Si noti dunque che inevitabilmente nei seguenti esempi potranno essere utilizzati anche parametri generici e non solo specifici.

Condivisione di una directory

Adesso sempre dentro il nostro /etc/samba/smb.conf, creiamo la sezione specifica per la risorsa che vogliamo condividere. In questo esempio condivideremo una directory.

 [shared]
     comment = Directory Shared
     path = /dir/da/condividere
Condivisione di una stampante

Adesso analizziamo i parametri da aggiungere al file /etc/samba/smb.conf per poter condividere una stampante. Aggiungiamo alla sezione global:

 
 [global]
     printing = [sistema di stampa utilizzato, es: cups, lprng..]
     load printers = yes

Creiamo inoltre la sezione printers che fornirà i parametri di accesso alle nostre stampanti:

[printers]
    path = /var/spool/samba
    guest ok = yes
    printable = yes
Warning.png ATTENZIONE
Debian non crea in automatico la directory /var/spool/samba.


Questa directory è adibita solo allo spool di stampa, volendo molti la sostituiscono con /tmp. Se decidete di crearla voi, per un corretto funzionamento impostatele i permessi: nobody:nobody con:

 # chown nobody.nobody /var/spool/samba
 # chmod -R 755 /var/spool/samba

Dopodiché scriviamo la sezione specifica per la nostra stampante (es. una canon).

 [canon]
    comment = Canon Printer
    path = /var/spool/samba
 
Condivisione di dispositivi di lettura (CD-ROM, DVD..)

Poniamo come esempio di avere due pc e che solo uno dei due monti un lettore DVD. Bene, guardiamo come poter accedere ad un file, che risiedesse su un supporto DVD, dalla macchina sprovvista di lettore:

 [dvd]
    comment = Lettore DVD-R
    preexec = mount /media/cdrom
    postexec = umount /media/cdrom
    path = /media/cdrom
    writable = no

Parametri supplementari al nostro /etc/samba/smb.conf:

Nel momento in cui dal client monteremo la risorsa condivisa (con smbmount o smbclient) sul server sentiremo montare il DVD, il cui contenuto sarà a nostra disposizione per trasferire file o, in caso di file audio/video, anche di streaming.

Bene, a questo punto il file può considerarsi sufficientemente configurato per i nostri scopi.

Creazione utenti e Autenticazione

Info.png IMPORTANTE
Perché un utente possa accedere alle risorse appena definite in /etc/samba/smb.conf devono essere soddisfatte due condizioni:
  • Tutti gli utenti samba che si vuol creare devono esistere anche in linux, il che tipicamente significa essere presenti nel file /etc/passwd.
  • Ciascun utente samba deve essere esplicitamente creato attraverso il comando smbpasswd.


Per aggiungere o modificare la password di un utente:

# smbpasswd -a utente

Verrà richiesto di immettere due volte la password da attribuire al suddetto utente; fatto ciò in caso di nuovo utente comparirà il messaggio Added user utente. Per eliminare la password di un utente

# smbpasswd -n utente

Digitando invece # smbpasswd -an utente si aggiunge un utente senza attribuirgli alcuna password. Si noti che se il parametro security è impostato sul valore user allora il suddetto utente non potrà autenticarsi presso samba e quindi non avrà alcun accesso alle risorse. Nonrmalmente non si attribuisce password all'utenza da usare come guest, poiché per definizione viene usata per garantire l'accesso ad utenti anonimi. Per eliminare un utente dall'elenco utenti di samba (con questo comando non si vanno a toccare gli utenti linux):

# smbpasswd -x utente
Info.png Nota
Il file con l'elenco utenti e password di samba è di norma memorizzato in /var/lib/samba/passdb.tdb in forma criptata

Ogni utente ha infine la possibilità di modificare la propria password (a meno che naturalmente non sia stato disabilitato l'accesso tramite bash) digitando:

$ smbpasswd

Si noti che qualora nel range degli IP ammessi non sia stato specificato anche 127.0.0.1 al termine della procedura di modifica password si riceverà il seguente errore: machine 127.0.0.1 rejected the negotiate protocol. Error was : NT_STATUS_INVALID_NETWORK_RESPONSE.

Il nome utente è la password definite con il precedente comando costituiscono le credenziali necessarie ad un utente per autenticarsi con successo presso il server samba nel momento in cui si connetteranno le risorse condivise (smbmount, smbclient in linux, finestrella di login in windows). Si sottolinea che ciò è strettamente vero nel solo caso in cui sia impostato security = user e map to guest = never, poiché negli altri casi ciò potrebbe non essere vero; per esempio se è security = share è possibile vedere tutte le risorse disponibili (e per cui non si sia definito browseable = no) senza alcun bisogno di immettere alcun tipo di credenziali (queste vengono al limite richieste solo quando si richiede di accedere ad una specifica risorsa).

Warning.png ATTENZIONE
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.


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 allow hosts, è come già scritto definire guest ok = yes. Fatto ciò ci sono due strade per il secondo passo: la prima consiste nel definire security = share, l'altra prevede di mantenere security = user e imporre map to guest = Bad User (si veda quanto precedentemente scritto a proposito dei suddetti parametri).

Info.png NOTA
Quanto qui scritto non tiene conto per una questione di semplicità delle casistiche security = domain e security = server, trattandosi di parametri normalmente usati in configurazioni di rete ben più complesse della rete domestica e del piccolo ufficio.

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 nobody oppure usarne un'altra a scelta definendo nella sezione global il parametro guest account = mio_utente, dove mio_utente deve essere un utenza già esistente in linux e in samba.
A titolo informativo si ricorda che è possibile creare un utente in linux disabilitandone subito la possibilità di autenticarsi aggiungendo al comando adduser l'opzione --disabled-login; qualora invece l'utente sia già esistente è sufficiente usare l'opzione -l del comando passwd per disabilitarne la capacità di autenticarsi al sistema.

Vale la pena esplicitare cosa succede nel caso security = user e map to guest = Bad User quando l'utente windows clicca sull'icona del server:

Sincronizzazione delle password samba e linux

Qualora si desiderasse mantenere sincronizzate le password linux (passwd) con quelle definite attraverso smbpasswd è possibile ricorrere ad appositi parametri, come già scritto.

Info.png 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 passwd per impostare le password è anche possibile usare PAM, badando bene che i due metodi sono mutualmente esclusivi. In particolare impostare pam password change = yes comporta l'automatica esclusione della prima modalità.
In entrambi i casi devono essere sempre definiti i parametri passwd chat (anche il testo da passare può essere il medesimo) e unix passwd sync = yes.
Nel caso di passwd è necessario specificare oltre ai precedenti due anche il parametro passwd program, mentre nel secondo devono essere specificati sia il succitato pam password change = yes che obey pam restrictions = yes (quest'ultimo potrebbe forse essere opzionale).
Esplicitando, nel primo caso andrà aggiunta alla sezione [global] quanto segue:

passwd program = /bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes

Mentre nel secondo:

pam password change = yes
obey pam restrictions = yes
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes

Riavvio e test del server

Creato/modificato il file smb.conf e creati gli utenti è il momento di riavviare il server:

# /etc/init.d/samba restart
Stopping Samba daemons: nmbd smbd.
Starting Samba daemons: nmbd smbd.
#

Terminato il riavvio dei vari demoni si procede a testare la validità del file /etc/samba/smb.conf digitando:

# testparm /etc/samba/smb.conf
Load smb config files from /etc/samba/smb.conf
Processing section "[shared]"
Processing section "[canon]"
Processing section "[dvd]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

Premendo enter vedremo il resoconto del nostro file.

Client Samba

Premessa

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.

Esplora risorse

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.

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

Qualora si tentasse di accedere ad una risorsa per la quale lo username usato è privo dei necessari permessi si riceverà il seguente messaggio d'errore:

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

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: \>

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.

Altri client

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

apt-get install pyneighborhood
.

Montare le risorse remote nel filesystem locale

Invece di usare un client come quelli precedentemente elencati è 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 applicativi.

CIFS, Mount e Umount

Ipotesi Preliminari

Caricare 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 che 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.


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).

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 

Esempi applicativi

Account guest con <security = user>

File smb.conf

[global]
    hosts allow = 127.0.0.1 192.168.1.0/24
    workgroup = mio_gruppo_lavoro
    writeable = yes
    guest ok = no
    map to guest = Bad User
    guest account = ospite

[mio_utente]
    path = /home/mio_utente
    valid users = mio_utente
    create mask = 0750
    directory mask = 0750

[Pubblica]
    path = /home/ospite
    guest ok = yes
    guest only = yes
    create mask = 0777
    directory mask = 0777

Sostituire mio_gruppo_lavoro e mio_utente con i propri valori (anche nei successivi comandi). Il suddetto file di configurazione restringe l'accesso al localhost ed al range di indirizzi 192.168.1.1 - 192.168.1.254, utilizza come account guest l'utenza ospite e mappa i nomi utente inesistenti come guest; la cartella mio_utente è privata, mentre l'altra è potenzialmente accessibile a chiunque. La home di ospite funziona da cartella pubblica. È richiesta quindi la creazione dell'utenza ospite sia in linux che samba, mentre di mio_utente solo in samba:

# smbpasswd -a mio_utente
# adduser ospite --disabled-login
# smbpasswd -an ospite

Se già non lo sono vanno impostati correttamente i permessi su file e cartelle da condividere, ad es. per quella pubblica:

# chmod -R 777 /home/ospite/

Riavvio del server

# /etc/init.d/samba restart

Possibili prolemi

Collegamenti simbolici

Se si hanno dei collegamenti simbolici che puntano a risorse non comprese in quelle dichiarate in samba e si riceve un errore simile al seguente:

smbd[7407]: check_reduced_name: Bad access attempt: cartella_condivisa is a symlink outside the share path

provare ad aggiungere quanto segue nella sezione globale di smb.conf:


follow symlinks = yes
unix extensions = no
wide links = yes

Note su Windows

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

Riferimenti Esterni

Documentazione sito ufficiale samba.

Info.png NOTE
Autore: zmo
Esteso da --Wtf 20:48, 9 nov 2011 (CET)
Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Risorse
Strumenti