Me ha molestado un poco NFS4 en Linux. Cierta información 'allá afuera' parece estar en conflicto con otra información, y otra información parece difícil de encontrar. Así que aquí hay un par de cosas que me llamaron la atención, espero que alguien pueda arrojar algo de luz sobre esto.
Esta pregunta se centra exclusivamente en NFS4 sin Kerberos, etc.
1. Exportaciones
Hay información ambigua en la página de exports
manual sobre la estructura de / etc / exportaciones.
Para citar de exports(5)
:
Además, cada línea puede tener una o más especificaciones para las opciones predeterminadas después del nombre de la ruta, en forma de guión ("-") seguido de una lista de opciones.
La lista de opciones se usa para todas las exportaciones posteriores solo en esa línea.
¿Qué significa "exportaciones posteriores solo en esa línea"?
1.2 ya fsid=0
no es necesario?
Estaba buscando fsid cuando encontré un comentario en la lista linux-nfs que decía que fsid = 0 ya no es necesario. Ahora estoy confundido, ¿lo necesito con nfs4 o no?
2. Directorio no exportado aún montable
Digamos que tengo el siguiente árbol:
/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian
Y tengo las siguientes entradas en esta entrada 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
Y mis exportaciones son exactamente esto:
/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)
Y exportfs -arv
muestra:
exporting 192.168.1.0/24:/exp/distr
exporting 192.168.1.0/24:/exp
Entonces, ¿por qué puedo hacer esto y no obtener ningún error en un cliente:
mount -t nfs4 server:/exp/users /tmp/test
¿Aunque /exp/users
no se exporta? No exporté este directorio, y aunque no veo el contenido de, a /dev/disk/by-label/users
menos que especifique crossmnt
, todavía puedo escribir en el directorio. Todo lo que escribo allí va al directorio subyacente del /exp/users
cual se puede ver cuando yo umount /exp/users; ls /exp/users
...
3. El extraño caso de showmount -d server
Según lo indicado por rpc.mountd(8)
, este comando debe mostrar directorios que están actualmente montados por clientes o entradas obsoletas /var/lib/nfs/rmtab
, como se puede leer:
El demonio rpc.mountd registra cada solicitud MNT exitosa agregando una entrada al archivo / var / lib / nfs / rmtab. Al recibir una solicitud UMNT de un cliente NFS, rpc.mountd simplemente elimina la entrada correspondiente de / var / lib / nfs / rmtab, siempre que la lista de control de acceso para esa exportación permita que el remitente acceda a la exportación.
(...)
Sin embargo, tenga en cuenta que hay poco para garantizar que los contenidos de / var / lib / nfs / rmtab sean precisos. Un cliente puede continuar accediendo a una exportación incluso después de invocar UMNT. Si el cliente se reinicia sin enviar una solicitud UMNT, las entradas obsoletas permanecen para ese cliente en / var / lib / nfs / rmtab.
Después de leer esto, seguramente me pregunto:
- ¿No es terriblemente inseguro exponer este tipo de información del cliente?
- ¿No desconocen los administradores del servidor que tienen un rmtab con muchos clientes obsoletos?
- ¿Es esta la razón por la que los clientes que montan directorios nfs4
mount -v
pueden ver resultados como "no se montó nada" aunque se montó algo ?
Tengo muchas otras preguntas sobre nfs4, pero lo mantendré en este momento por el momento .. :)
Respuestas:
Grandes preguntas, destaca un punto más grande con la documentación IMO. Aquí hay un intento de una respuesta completa:
¿Qué significa "exportaciones posteriores solo en esa línea"?
Un ejemplo es probablemente el más fácil aquí:
es equivalente a:
¿
fsid=0
Ya no se requiere?Esto depende de su caso de uso. Parece que está exportando sistemas de archivos basados en discos normales desde el resto de su consulta, en ese caso es mejor que deje caer
fsid=0
(que en nfsv4 cambia el comportamiento para hacer referencia al sistema de archivos raíz de la exportación).Para cambiar este comportamiento, elimine la opción no_subtree_check
rmtab
cosas relacionadasrmtab
un riesgo de seguridad?Supongo que depende de su caso de uso para responder eso, en mi red no presenta una fuga de información creíble, pero puedo ver casos en los que podría potencialmente.
rmtab
estará lleno de entradas obsoletas?Potencialmente sí, nuevamente dependiendo de su escenario de implementación / caso de uso.
mount -v
erróneamente ven "no se montó nada"?Todavía no me he encontrado con esto
fuente