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:

Se usciamo e ci rilogghiamo da Windows con utente pluto noteremo che:

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