Sono stato un po 'infastidito da NFS4 su Linux. Alcune informazioni "là fuori" sembrano essere in conflitto con altre informazioni e altre informazioni sembrano difficili da trovare. Quindi ecco un paio di cose che hanno attirato la mia attenzione, si spera che qualcuno là fuori possa far luce su questo.
Questa domanda si concentra esclusivamente su NFS4 senza Kerberos ecc.
1. Esportazioni
Ci sono informazioni ambigue nella exports
manpage sulla struttura di / etc / exports.
Per citare da exports(5)
:
Inoltre, ogni riga può avere una o più specifiche per le opzioni predefinite dopo il nome del percorso, sotto forma di un trattino ("-") seguito da un elenco di opzioni.
L'elenco delle opzioni viene utilizzato per tutte le esportazioni successive solo su quella riga.
Che cosa significa "successive esportazioni solo su quella linea"?
1.2 fsid=0
non è più richiesto?
Stavo cercando fsid quando ho trovato un commento nell'elenco linux-nfs che afferma che fsid = 0 non è più necessario. Ora sono solo confuso, ne ho bisogno con nfs4 o no ?!
2. Directory non esportata ancora montabile
Di 'che ho il seguente albero:
/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian
E ho le seguenti voci in questa voce fstab:
/dev/disk/by-label/users /mnt/users ext4 defaults 0 0
/dev/disk/by-label/distr /mnt/distr ext4 defaults 0 0
/mnt/users /exp/users none bind 0 0
/mnt/distr /exp/distr none bind 0 0
E le mie esportazioni sono esattamente queste:
/exp 192.168.1.0/24(fsid=0,rw,async,no_subtree_check,no_root_squash)
/exp/distr 192.168.1.0/24(rw,async,no_subtree_check,no_root_squash)
E exportfs -arv
mostra:
exporting 192.168.1.0/24:/exp/distr
exporting 192.168.1.0/24:/exp
Quindi perché sono in grado di farlo e non ottenere alcun errore su un client:
mount -t nfs4 server:/exp/users /tmp/test
Anche se /exp/users
non viene esportato? Non ho esportato questa directory e anche se non vedo il contenuto, a /dev/disk/by-label/users
meno che non lo specifichi crossmnt
, sono ancora in grado di scrivere nella directory. Tutto ciò a cui scrivo va nella directory sottostante di /exp/users
cui si può vedere quando umount /exp/users; ls /exp/users
..
3. Il caso strano di showmount -d server
Come indicato da rpc.mountd(8)
, questo comando dovrebbe visualizzare le directory che sono attualmente montate dai client o voci non aggiornate in /var/lib/nfs/rmtab
, come si può leggere:
Il demone rpc.mountd registra ogni richiesta MNT corretta aggiungendo una voce al file / var / lib / nfs / rmtab. Quando si riceve una richiesta UMNT da un client NFS, rpc.mountd rimuove semplicemente la voce corrispondente da / var / lib / nfs / rmtab, purché l'elenco di controllo di accesso per quell'esportazione consenta a quel mittente di accedere all'esportazione.
(...)
Si noti, tuttavia, che c'è poco da garantire che i contenuti di / var / lib / nfs / rmtab siano accurati. Un client può continuare ad accedere a un'esportazione anche dopo aver richiamato UMNT. Se il client si riavvia senza inviare una richiesta UMNT, le voci non aggiornate rimarranno per quel client in / var / lib / nfs / rmtab.
Dopo aver letto questo mi chiedo sicuramente:
- Non è terribilmente insicuro esporre questo tipo di informazioni sul cliente;
- Gli amministratori del server non sono consapevoli di avere un rmtab con molti client non aggiornati;
- È questo il motivo per cui i client che montano le directory nfs4
mount -v
possono vedere un output come "nulla è stato montato" anche se è stato montato qualcosa ?
Ho molte altre domande su nfs4, ma lo terrò per il momento .. :)