Opción fsid de NFSv4 y el propósito de las raíces de exportación

Opción fsid de NFSv4 y el propósito de las raíces de exportación

Mi servidor de archivos solo tiene una partición grande que comparte cosas en /exportaciones. Entonces, usando las exportaciones NFSv3 de estilo antiguo, tenía:

/exports/home     192.168.1.0/24(rw,sync,no_subtree_check)
/exports/root     192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)

Entonces decidí cambiar al estilo NFSv4 y lo cambié a:

/exports          192.168.1.0/24(ro,fsid=0,no_subtree_check)
/exports/home     192.168.1.0/24(rw,sync,no_subtree_check)
/exports/root     192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
#/etc              192.168.1.0/24(ro,no_subtree_check) # Test entry to check export root is working.

Luego cambié los comandos de montaje para excluir /exports. Efectivamente /etcera desmontable (aunque no produjo ningún error, simplemente se bloqueó hasta que se interrumpió). Sin embargo, como esperaba, /exportslas ACL de todavía se heredaban hacia abajo, todos los recursos compartidos eran de solo lectura y la raíz estaba aplastada en todas partes.

También intenté cambiar la ACL /exports/roota una sola máquina, pero no hizo ninguna diferencia.

Entonces, más allá de poder proporcionar un identificador único para aquellos sistemas de archivos donde dicho identificador no se puede determinar, ¿cuál es el punto de definir una raíz de exportación con fsid=0:

  • Hacerlo reduce la flexibilidad en términos de cómo se configuran los recursos compartidos (es decir, el problema de la herencia, a menos que esté en diferentes sistemas de archivos y use nocrossmount?).
  • Suponiendo que se utiliza la configuración NFSv3 de estilo antiguo, todavía no se puede montar /etc, entonces, ¿qué seguridad adicional proporciona?

¿Solo tiene fsid=0sentido cuando /exportshay solo un área de montaje para sistemas de archivos separados que se montan allí y se exportan con diferentes ACL?

Me parece que se ha cambiado la configuración de los servidores NFS. En el pasado, en Solaris, todo el material compartido se montaba /exporty se compartía directamente. El servidor se habría /home/uservinculado montado en /export/home/user. Pero ahora /homees la ubicación de montaje real del sistema de archivos y está montado en enlace /exports.

¿Es esto correcto?

Tenga en cuenta: Los ejemplos anteriores son solo para fines ilustrativos, así que no haga comentarios sobre la conveniencia de no usarlos no_squash_root, lo sé.

Muchas gracias.

Respuesta1

Es un cambio arquitectónico en cómo funciona el protocolo de "montaje" NFS.

En NFSv2/v3 había un protocolo RPC 'MOUNT' completamente separado que permitía al cliente obtener un identificador de archivo de cualquier sistema de archivos exportado por su ruta. Pero en el WebNFS posterior, y más tarde en NFSv4, el montaje se cambió a una operación NFS dentro de banda y, al mismo tiempo, la operación se cambió para devolver un único identificador de archivo "raíz" desde el cual descienden todas las búsquedas de rutas. (En realidad, WebNFS tenía dos de esas raíces, otra era una raíz "pública" para las URL nfs://, que no llegó a NFSv4).

Entonces, para que la operación 'PUTROOTFH' funcione, debe haberserun sistema de archivos raíz de algún tipo, ya que ya no es posible omitir los pasos: todos los recorridos de ruta son una serie de operaciones compuestas [PUTROOTFH, LOOKUP, LOOKUP, ..., LOOKUP, OPEN]. Esto refleja el 9p de Plan9 y el SMBv2/3.

(Todo esto implica que en este estilo, las rutas del sistema de archivos exportados se vuelven relativas a la raíz, por ejemplo, su /exports/home está montado como "foo:/home",nocomo "foo:/exports/home".)

La falta de una operación MOUNT(path) es también lo que hace que "crossmnt" esté implícito ya que hayno esYa no queda nada por montar, todo es simplemente 'BUSCAR' desde la raíz.

En la práctica, NFSv4 puede usar cualquiera de los estilos: si no se define una exportación "fsid=0", el kernel de Linux (2.6.33 o posterior)generará automáticamente un virtual/ raíz virtual para ustedque no contiene nada excepto montajes para sus ubicaciones exportadas habituales. (Esto también tiene la ventaja de conservar rutas de montaje idénticas entre NFSv3 y NFSv4). En otras palabras, realmente puede continuar usando su configuración original de estilo v3.

información relacionada