In questo articolo parleremo della condivisione di risorse tra host Linux tramite NFS ( Network File Systsem ). NFS è un protocollo per la condivisione di file tra host Linux.
Procediamo alla sua installazione:
yum install nfs-utils
Il file di configurazione è /etc/exports
Ogni condivisione deve essere dichiarata in questo file con la seguente struttura:
( )
- Directory_da_Condividere: Come dice la parola essa rappresenta la Directory con dentro i file che vogliamo condividere con gli altri host linux
- host: Indica quali host possono usufruire della risorsa condivisa
- permessi/opzioni: Indica con quali permessi o opzioni vogliamo mettere a disposizione la risorsa e le dobbiamo dichiarare tra 2 parentesi tonde.
Le varie opzioni sono le seguenti: - rw: Indica la condivisione della risorsa sia in lettura che in scrittura
- ro: Indica la condivisione della risorsa in sola lettura
- sync: Rende disponibile i dati condivisi solo quando sono fisicamente scritti ( consigliato insieme all’opzione rw )
- root_squash: Indica che i file creati dall’utente root del pc client all’interno della condivisione NFS non mantengono i privilegi dell’utente root ma vengono identificati come utente e come gruppo nfsnobody.
Questo cosa significa?? - Che se all’interno di una condivisione NFS sul pc client l’utente pippo crea un file, successivamente l’utente root sempre della macchina client NON PUO modificarlo perchè decadono i privilegi di root all’interno della condivisione. Questa opzione su NFS è abilitata di default.
- subtree_check: Viene verificato che i file condivisi si trovino correttamente nella Directory condivisa
- no_subtree_check: Non viene verificato ciò che abbiamo appena detto e si guadagna in velocità di trasferimento
Facciamo un esempio di come creare una condivisione.
Vogliamo condividere la risorsa /media/dati
La risorsa deve essere accessibile a tutti gli host del dominio talla.it in sola lettura
Innanzitutto andiamo a creare la condivisione sul file /etc/exports:
Riavviamo il servizio nfs e ci potremmo trovare davanti a questi errori:
service nfs restart
Questo perchè non abbiamo avviato il servizio rpcbind.
Avviamo il servizio rpcbind, lo rendiamo avviabile al boot e vedremo che al riavvio di nfs non avremo nessun errore:
/etc/init.d/rpcbind start
service nfs restart
chkconfig rpcbind on
Sulla condivisione della risorsa abbiamo messo *.talla.it ossia qualunque host che faccia parte del dominio talla.it.
Per far si che un host venga riconosciuto come membro del dominio dobbiamo dichiararlo nel file /etc/hosts.
A questo punto se proviamo a fare un ping verso il client pc2.talla.it riceveremo la sua risposta.
Prima di questa operazione dovevamo inserire obbligatoriamente il suo indirizzo IP perchè non sarebbe stato riconosciuto tramite il suo FQDN.
Lato Client invece dobbiamo ripetere l’installazione di nfs come visto all’inizio dopo di che dobbiamo creare la Directory dove andremo a montare la risorsa condivisa.
Nel nostro caso sarà la Directory /dati:
cd /
mkdir dati
Fatto ciò possiamo procedere al montaggio della risorsa tramite la seguente struttura:
mount -t nfs IP_host_condivisione_nfs:/percorso_condivisione /punto_di_montaggio_locale
Nel nostro esempio l’ip del host dove si trova la risorsa è: 192.168.0.34, quindi daremo il seguente comando:
mount -t nfs 192.168.0.34:/media/dati /dati
Per termianre la condivisione:
umount /dati
Vediamo come poter accedere anche in scrittura alla Directory /dati:
Innanzitutto nel file /etc/export inseriamo il permesso di scrittura ( rw ):
Successivamente impostiamo i permessi 757 implementando lo StickBit:
cd /media
chmod 1757 dati/
E riavviamo nfs:
service nfs restart
Lato client montiamo la risorsa nel percorso /dati come abbiamo fatto precedentemente:
mount -t nfs 192.168.0.34:/media/dati /dati
Possiamo scrivere sulla condivisione:
Come vediamo i file creati hanno come utente e gruppo nfsnobody e l’utente root da Client non ha i permessi di root sulla condivisione.
Infatti possiamo eliminare solamente i file che abbiamo in precedenza creato ( abbiamo eliminato file4 ):
Se nella condivisione tra le opzioni inseriamo no_root_squash:
Lato Client come possiamo vedere l’utente root ha pieni privilegi sulla condivisione e può fare quello che vuole.
In figura viene mostrato che l’utente root ha eliminato un file di proprietà dell’utente michele.
La condivisione in questo caso è consentita a tutti gli host del dominio ma possiamo inserire anche singoli host specifici tramite indirizzo ip:
E in questo caso solamente l’hsot 192.168.0.100 può usufruire della condivisione in sola lettura.
Per concludere vediamo quali sono le regole da inserire sul firewall iptables per NFS:
Nel nostro caso nella catena di INPUT abbiamo una Policy di DROP e se non inseriamo le seguenti regole vedremo che anche un semplice riavvio del servizio non andrà completamente a buon fine.
iptables -A INPUT -p tcp –dport 2049 -j ACCEPT
iptables -A INPUT -p tcp –dport 111 -j ACCEPT
iptables -A INPUT -p udp –dport 111 -j ACCEPT
In questo articolo parleremo della condivisione di risorse tra host Linux tramite NFS ( Network File Systsem ). NFS è un protocollo per la condivisione di file tra host Linux.
Procediamo alla sua installazione:
yum install nfs-utils
Il file di configurazione è /etc/exports
Ogni condivisione deve essere dichiarata in questo file con la seguente struttura:
<Directory_da_Condividere> (<permessi/opzioni>)
- Directory_da_Condividere: Come dice la parola essa rappresenta la Directory con dentro i file che vogliamo condividere con gli altri host linux
- host: Indica quali host possono usufruire della risorsa condivisa
- permessi/opzioni: Indica con quali permessi o opzioni vogliamo mettere a disposizione la risorsa e le dobbiamo dichiarare tra 2 parentesi tonde.
Le varie opzioni sono le seguenti: - rw: Indica la condivisione della risorsa sia in lettura che in scrittura
- ro: Indica la condivisione della risorsa in sola lettura
- sync: Rende disponibile i dati condivisi solo quando sono fisicamente scritti ( consigliato insieme all’opzione rw )
- root_squash: Indica che i file creati dall’utente root del pc client all’interno della condivisione NFS non mantengono i privilegi dell’utente root ma vengono identificati come utente e come gruppo nfsnobody.
Questo cosa significa?? - Che se all’interno di una condivisione NFS sul pc client l’utente pippo crea un file, successivamente l’utente root sempre della macchina client NON PUO modificarlo perchè decadono i privilegi di root all’interno della condivisione. Questa opzione su NFS è abilitata di default.
- subtree_check: Viene verificato che i file condivisi si trovino correttamente nella Directory condivisa
- no_subtree_check: Non viene verificato ciò che abbiamo appena detto e si guadagna in velocità di trasferimento
Facciamo un esempio di come creare una condivisione.
Vogliamo condividere la risorsa /media/dati
La risorsa deve essere accessibile a tutti gli host del dominio talla.it in sola lettura
Innanzitutto andiamo a creare la condivisione sul file /etc/exports:
Riavviamo il servizio nfs e ci potremmo trovare davanti a questi errori:
service nfs restart
Questo perchè non abbiamo avviato il servizio rpcbind.
Avviamo il servizio rpcbind, lo rendiamo avviabile al boot e vedremo che al riavvio di nfs non avremo nessun errore:
/etc/init.d/rpcbind start
service nfs restart
chkconfig rpcbind on
Sulla condivisione della risorsa abbiamo messo *.talla.it ossia qualunque host che faccia parte del dominio talla.it.
Per far si che un host venga riconosciuto come membro del dominio dobbiamo dichiararlo nel file /etc/hosts.
A questo punto se proviamo a fare un ping verso il client pc2.talla.it riceveremo la sua risposta.
Prima di questa operazione dovevamo inserire obbligatoriamente il suo indirizzo IP perchè non sarebbe stato riconosciuto tramite il suo FQDN.
Lato Client invece dobbiamo ripetere l’installazione di nfs come visto all’inizio dopo di che dobbiamo creare la Directory dove andremo a montare la risorsa condivisa.
Nel nostro caso sarà la Directory /dati:
cd /
mkdir dati
Fatto ciò possiamo procedere al montaggio della risorsa tramite la seguente struttura:
mount -t nfs IP_host_condivisione_nfs:/percorso_condivisione /punto_di_montaggio_locale
Nel nostro esempio l’ip del host dove si trova la risorsa è: 192.168.0.34, quindi daremo il seguente comando:
mount -t nfs 192.168.0.34:/media/dati /dati
Per termianre la condivisione:
umount /dati
Vediamo come poter accedere anche in scrittura alla Directory /dati:
Innanzitutto nel file /etc/export inseriamo il permesso di scrittura ( rw ):
Successivamente impostiamo i permessi 757 implementando lo StickBit:
cd /media
chmod 1757 dati/
E riavviamo nfs:
service nfs restart
Lato client montiamo la risorsa nel percorso /dati come abbiamo fatto precedentemente:
mount -t nfs 192.168.0.34:/media/dati /dati
Possiamo scrivere sulla condivisione:
Come vediamo i file creati hanno come utente e gruppo nfsnobody e l’utente root da Client non ha i permessi di root sulla condivisione.
Infatti possiamo eliminare solamente i file che abbiamo in precedenza creato ( abbiamo eliminato file4 ):
Se nella condivisione tra le opzioni inseriamo no_root_squash:
Lato Client come possiamo vedere l’utente root ha pieni privilegi sulla condivisione e può fare quello che vuole.
In figura viene mostrato che l’utente root ha eliminato un file di proprietà dell’utente michele.
La condivisione in questo caso è consentita a tutti gli host del dominio ma possiamo inserire anche singoli host specifici tramite indirizzo ip:
E in questo caso solamente l’hsot 192.168.0.100 può usufruire della condivisione in sola lettura.
Per concludere vediamo quali sono le regole da inserire sul firewall iptables per NFS:
Nel nostro caso nella catena di INPUT abbiamo una Policy di DROP e se non inseriamo le seguenti regole vedremo che anche un semplice riavvio del servizio non andrà completamente a buon fine.
iptables -A INPUT -p tcp –dport 2049 -j ACCEPT
iptables -A INPUT -p tcp –dport 111 -j ACCEPT
iptables -A INPUT -p udp –dport 111 -j ACCEPT