====== NFSv4 (Soluzioni) ======
===== Preparazione =====
* Due macchine virtuali a disposizione
* Configurazione Keberos5
* Creare utenti pippo pluto paperino con UID diversi sui due nodi
* Creare relativi principal sul KDC
Su server:
useradd -KUID_MIN=2001 -KGID_MIN=2001 pippo
useradd -KUID_MIN=2001 -KGID_MIN=2001 pluto
useradd -KUID_MIN=2001 -KGID_MIN=2001 paperino
Su client:
useradd -KUID_MIN=3001 -KGID_MIN=3001 pippo
useradd -KUID_MIN=3001 -KGID_MIN=3001 pluto
useradd -KUID_MIN=3001 -KGID_MIN=3001 paperino
===== 1. Export NFS4 =====
* Su VM1: configurare un server che esporti la directory /exp01 con NFS4 con sicurezza classica unix
* Su VM1: Impostare un firewall che permetta solo l'uso di NFS4
* Su VM2: fare il mount dalla macchina client
* Verificare che non ci sia mapping tra gli utenti
Sul server:
mkdir /exp01
touch /exp01/file-di-pippo
chown pippo /exp01/file-di-pippo
yum -y install nfs-utils
echo '/exp01 *(rw,sync,no_root_squash)' >> /etc/exports
systemctl start nfs-server
Sul client:
yum -y install nfs-utils
mount vboxvm01:/exp01 /mnt
ls -l /mnt/file-di-pippo
# -rw-r--r-- 1 2001 root 0 Nov 28 2018 file-di-pippo
===== 2. Export KRB5 =====
* Su VM1: Configurare l'export /exp01 con autenticazione e cifratura Kerberos5
* Su VM1 e VM2: Verificare il mapping tra gli utenti
===== 3. Locking =====
* Verificare il funzionamento del locking facendo partire quasi simultaneamente il seguente script sulle VM:
#!/usr/bin/python
import fcntl
import time
f = open('tolock','w')
print( 'Acquisizione lock...' )
fcntl.lockf(f,fcntl.LOCK_EX)
print( 'Lock acquisito' )
print( 'Sleep 10 sec...' )
time.sleep(10)
print( 'Rilascio il lock...' )
fcntl.lockf(f,fcntl.LOCK_UN)
print( 'Lock rilasciato' )
===== 4. ACL =====
* Su VM1: Impostare ACL per fare in modo che l'utente pippo possa scrivere su /exp01
* Su VM2: Come utente pippo, impostare ACL per fare in modo che pluto possa scrivere nella sottodirectory di-pluto/ del FS montato
* Verificare che pluto possa scrivere in di-pluto/ e paperino invece no
Sul client
yum install nfs4-acl-tools
===== 5. Referrals =====
* Creare nuova VM
* Impostare export /subexp su VM3
* Impostare VM1 in modo che /exp01/subexp sia un referral a VM3:/subexp
* Verificare su VM2 che entrando in /exp01/subexp si vada effettivamente su VM3:/subexp