Abbiamo già visto nel post “simple” precedente come ottenere una configurazione di base di condivisione di una singola cartella in una minirete LAN avente come server il nostro sistema GNU/Linux in condivisione con il Pc Windows. In questo post, invece, vedremo come differenziare le cartelle condivise su di un server ospitante Samba.
Il vecchio config /etc/samba/smb.conf, risultava essere:
[global] workgroup = WORKGROUP netbios name = SLACKWARE server string = SLACKWARE SERVER security = USER smb passwd file = /etc/samba/smbpasswd encrypt passwords = YES log file = /var/log/samba/%m.log max log size = 100 log level = 1
[public] comment = cartella condivisa path = /home/utente/cartella-condivisa public = YES writable = YES
NB: I parametri (per chi non li conosca già) sono spiegati nel post “simple” precedente.
Questa configurazione di base ci permetteva appunto di dare le direttive fondamentali a Samba partendo dalla condivisione di una cartella singola su di un singolo utente. E se avessimo più utenti sul server Linux? E se volessimo dire a samba quali sono le cartelle relative ad un utente anzichè un altro ? E se volessimo specificare l’accesso e le restrizioni delle stesse ?
Facciamo un esempio creando due utenti di prova (__pippo, pluto):
~# adduser pippo ~# adduser pluto
Addati gli utenti e settate le password di shell login per gli stessi al sistema dobbiamo logicamente dire a samba quali sono gli utenti addati ad accedere alle sue risorse e quindi provvederemo a settare la password per entrambi gli utenti creati,così come avveniva per il primo utente:
~# smbpasswd -a pippo ~# smbpasswd -a pluto
NB: Se si creano gli stessi utenti con relative password anche sul Pc Windows si evita la richiesta di nome utente e password ogni volta che si tenta di accedere alle risorse di un utente nella condivisione. In specifico se l’user pippo loggato nel pc Windows, cerchera di accedere al server Linux mediante Samba non avrà alcun bisogno di specificare nome utente e password, ed avrà acceso libero alle cartelle ad egli assegnate.
Per prima cosa abilitiamo samba alla visualizzazione di una cartella accessibile solo agli utenti proprietari.
NB: Questa direttiva fa in modo che l’utente pippo condivida la sua home utente se sul pc Windows ci loggeremo con lo stesso user.
Per questo samba dispone della direttiva: homes
[homes] comment = cartella utente writable = YES browsable = NO valid users = %S
Dove i parametri risultano essere:
[homes] indica la configurazione delle directory utente (/home/utente_loggato).
comment = cartella utente è solo un commento.
writable = YES indica che la cartella è accessibile in scrittura.
browsable = NO indica che la cartella è visibile solo dagli utenti propietari.
valid users = %S indica che la cartella è accesibile solo dagli utenti propietari.Questa variabile permette di settare per ogni singola home utente i permessi giusti evitandone il setting manuale.
Adesso passiamo alla creazione delle cartelle dedite alla condivisione, esempio:
~# mkdir /home/public
~# mkdir /home/private
~# mkdir /home/pluto_private
Diamo i permessi relativi alle cartelle di esempio create seguendo criteri di differenziazione:
~# chmod 777 /home/public
NB: In questo modo la cartella public sarà accessibile in lettura,scrittura ed esecuzione da tutti gli utenti avente accesso a samba. Mentre sulla cartella private non verranno effettuate modifiche.
~# chown pluto /home/pluto_private/ ~# chgrp pluto /home/pluto_private/
NB: Abbiamo deciso che la cartella pluto_private sia accessibile in lettura,scrittura ed esecuzione solo dall’utente “pluto”.
Definiti i parametri passiamo le direttive a samba:
[public] comment = cartella pubblica path = /home/public public = YES writable = YES
Dove i parametri sono:
[public] indica il nome con cui sarà visualizzata la cartella nel Workgroup.
comment = cartella pubblica indica un commento.
path = /home/public indica il percorso su Linux della cartella.
public = YES indica che l’ accesso alla cartella è libero.
writable = YES indica che la cartella è accessibile in scrittura.
[private] comment = cartella ristretta in scrittura path = /home/private public = YES writable = NO
Dove i parametri sono:
[software] indica il nome con cui sarà visualizzata la cartella nel Workgroup.
comment = cartella ristretta in scrittura indica un commento.
path = /home/private indica il percorso su Linux della cartella.
public = YES indica che l’ accesso alla cartella è libero.
writable = NO indica che la cartella non è accessibile in scrittura, ma solo in lettura.
[pluto]
comment = cartella pluto
path = /home/pluto_private
valid users = pluto
writable = YES
Dove i parametri sono:
[pluto] indica il nome con cui sarà visualizzata la cartella nel Workgroup.
comment = cartella pluto indica un commento.
path = /home/pluto_private indica il percorso su Linux della cartella.
valid users = pluto indica che l’ utente autorizzato ad accedere alla cartella è l’ utente pluto.
writable = YES indica che la cartella è accessibile in scrittura.
NB: E’ solo un esempio di differenziazione delle cartelle, poteva essere necessario magari, abilitare anche l’utente pippo ad essere proprietario di una cartella etc…Spazio alla fantasia in base alle esigenze.
Definiti i vari parametri il file config di samba /etc/samba/smb.conf diventerà ricapitolando il tutto:
[global]
workgroup = WORKGROUP
netbios name = SLACKWARE
server string = SLACKWARE SERVER
security = USER
smb passwd file = /etc/samba/smbpasswd
encrypt passwords = YES
log file = /var/log/samba/%m.log
max log size = 100
log level = 1
[homes]
comment = cartella generica
writable = YES
browsable = NO
valid users = %S
[public]
comment = cartella pubblica
path = /home/public
public = YES
writable = YES
[private]
comment = cartella ristretta in scrittura
path = /home/private
public = YES
writable = NO
[pluto]
comment = cartella pluto
path = /home/pluto_private
valid users = pluto
writable = YES
Cosa abbiamo fatto con queste direttive?
Se proviamo ad accedere da Windows alle risorse di rete “loggandoci con uno degli utenti creati in ugual modo sulla box linux (pippo,pluto)”, noteremo che:
- L’utente Pippo (loggato sulla macchina Win) vede le cartelle: public, pippo, private e pluto_private. Su di esse avrà accesso libero alle prime tre, di cui su cartella private solo in lettura. In più gli sarà negato l’accesso su pluto_private (garantito solo in caso di immissione di utente e password).
Se usciamo e ci rilogghiamo da Windows con utente pluto noteremo che:
- La cartelle visibili adesso sono: public,pluto,private e pluto_private. In specifico la cartella dell’utente pippo di prima è diventata la cartella pluto proprietaria del nuovo utente. I permessi per le altre cartelle restano gli stessi, con la differenza che se cerchiamo di accedere a pluto_private, samba riconoscerà l’utente pluto come proprietario evitandoci di immettere la password, e dandoci su di essa i pieni diritti in scrittura,lettura ed esecuzione.
Definito il nuovo config, avviamo l’utility di test per verificare che tutto sia apposto:
~# testparm Load smb config files from /etc/samba/smb.conf Processing section "[public]" Processing section "[brother]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions
Quindi restartiamo Samba:
~# /etc/rc.d/rc.samba restart Starting Samba: /usr/sbin/smbd -D /usr/sbin/nmbd -D
# End