¿Por qué la raíz en una máquina no puede cambiar el contenido montado en nfs desde otra máquina?


14

En mi servidor NFS, tengo la siguiente exportación definida:

#NFS exports Database
/shared -alldirs -network=192.168.1 -mask=255.255.255.0

En mi cliente NFS:

192.168.1.7:/shared /shared nfs rw 0 0

Obviamente, como root en el servidor, puedo hacer lo que quiera. Sin embargo, en el cliente, mi usuario habitual 'gabe' puede hacer cambios en el montaje nfs (suponiendo que tenga permisos), pero la raíz no puede.

Como mi usuario habitual:

gabe@client$ cd /shared
gabe@client$ ls -l
total 8
drwxrwxrwx  4 gabe  wheel   512 Mar 20 19:20 tmp
gabe@client$ cd tmp
gabe@client$ touch test.txt
gabe@client$ rm test.txt

Como root:

# cd /shared/tmp
# touch test.txt
touch: test.txt: Permission denied

Una vez más, todo esto está en el lado del cliente NFS , y sospecho que tal vez tenga algo que ver con la opción -maproot. Esta es la primera vez que configuro NFS y acabo de notar esta peculiaridad. Voy a leer un poco ahora, para ver si puedo resolver esto, pero si alguien tiene alguna idea, lo agradecería.

Respuestas:


18

NFS se diseñó con la idea de que los identificadores de usuario y grupo serían los mismos en todas las máquinas de la red. Para usuarios comunes, eso funciona bien. Pero el UID de root siempre es 0, y solo porque tenga root en un cuadro, no significa que deba tener acceso de root a todas las máquinas de la red.

Por lo tanto, NFS trata la raíz especialmente. De forma predeterminada, la raíz se asigna al nobodyusuario, que normalmente no tiene acceso de escritura. La -maprootopción le permite cambiar cómo se maneja la raíz. BSD -maproot=rootcorresponde a la no_root_squashopción de Linux .


Si, de hecho. Esto solucionó mi problema. La página del manual que estaba leyendo era un poco críptica (o lo entendí) con respecto a lo que hizo exactamente maproot. ¡Gracias!
Gabe.

Otro novato aquí. Me preguntaba si ustedes podrían saber una manera de saber si una unidad NFS se ha configurado para usar la -maprootopción sin tener acceso al servidor NFS.
John

@John, eso es lo suficientemente diferente como para hacer una nueva pregunta en lugar de agregar un comentario.
cjm

5

Ese es un comportamiento común con las implementaciones tradicionales de NFS. Las asignaciones de usuarios de NFS se realizan independientemente del contexto, por lo que todos los accesos de la raíz del cliente deben asignarse a un usuario en particular (generalmente nobodyde forma predeterminada). De ahí este comportamiento extraño, donde la raíz del cliente no puede acceder a sus archivos directamente, pero puede su gabeacceder a ellos.

(Las versiones "recientes" de NFS, es decir, NFSv4 y quizás NFSv3, permiten un comportamiento más sensato si se admiten en ambos lados, pero no conozco los detalles).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.