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 /etc
era desmontable (aunque no produjo ningún error, simplemente se bloqueó hasta que se interrumpió). Sin embargo, como esperaba, /exports
las 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/root
a 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=0
sentido cuando /exports
hay 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 /export
y se compartía directamente. El servidor se habría /home/user
vinculado montado en /export/home/user
. Pero ahora /home
es 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.