NFS y permisos

Una pregunta que siempre me hacen los alumnos cuando realizamos prácticas sobre NFS, es cómo fijamos los permisos a los usuarios. La respuesta es sencilla, en apariencia, no podemos. El sistema NFS permite compartir un recurso contra máquinas o redes concretas,pero no incluye ningún mecanismo respecto los usuarios. Esto no quiere decir que los permisos de usuario no afecten, sino que debemos emplear los permisos a nivel local para configurarlos.

Cuando se comparte una carpeta mediante el servicio NFS, se envía al cliente el conjunto de permisos de los citados recursos. Además, se envían el UID del usuario propietario del recurso, así como el GID de su grupo principal.

Recordemos cómo funcionan los permisos en el sistema de archivos de Linux. Se utiliza lo que se denomina método UGO (User, Group, Others) y para cada uno de estos tres ámbitos los permisos son read, write y execution. Para fijar los permisos, el comando utilizado es el chmod y una de las formas más sencillas, que no la única, es emplear tres dígitos de 0 a 8, para indicar los permisos para el propietario, su grupo y el resto de usuarios. El permiso de lectura tiene peso 4, escritura 2 y ejecución 1, por tanto, para cada combinación lo único que debemos es sumar dichos pesos. Por ejemplo el comando siguiente:

chmod -R 640 compartida

Establece para la carpeta compartida y todos sus elementos (-R) permiso lectura/escritura para el propietario, lectura para su grupo y ningún acceso para el resto.

Si lo que necesitamos es cambiar el propietario del recurso, entonces el coman a utilizar es chown.

Vamos a ver con un ejemplo qué pasaría el compartir un recurso entre un servidor NFS y un cliente. Suponemos que el recurso se ha compartido correctamente y en modo rw. Aquí teneis un enlace al artículo donde explicamos la configuración básica de NFS.

En el servidor hemos definido tres usuarios, además del root:

  • user con UID 1001 y GID 1200 que es el propietario del recurso compartido.
  • juan con UID 1004 y GID 1300
  • maria con UID 1000 y GID 1310

En el cliente tenemos definidos los siguientes usuarios:

  • user con UID 1000 y GID 1210
  • pepe con UID 1010 y GID 1200
  • maria con UID 1001 y GID 1200

Suponiendo que la carpeta compartida sea propiedad del usuario user y que a nivel local los permisos sean 640 ( propietario R/W, grupo R, Otros ninguno), qué tipo de acceso vamos a tener en la máquina local?

El usuario user del cliente no va a tener ningún acceso porque aunque se llame igual, no coincide ni su UID ni su GID, que son el mecanismo utilizado para establecer los permisos.

El usuario pepe como pertenece al grupo (mismo GID que el definido en el servidor) tendrá acceso en modo lectura.

La usuario maria al tener el mismo UID que user en el servidor, será tratada como la propietaria del recurso.

Por tanto, quien determina el acceso son el UID y el GID y no el nombre del usuario. Si utilizamos autenticación descentralizada, creamos los usuarios en las diferentes máquinas, ello va a comportar un problema, porque nos debemos asegurar que los usuarios tengan el mismo UID en las diferentes máquinas. Por este motivo, lo más habitual es utilizar un sistema de autenticación centralizada, como por ejemplo, LDAP. De esta forma, nos aseguramos de una forma sencilla que los usuarios tienen el mismo UID independientemente de la máquina desde donde inician sesión.

Por último, nos preguntamos, qué pasa con el root? Este usuario tiene acceso a los recursos locales aunque no sea el propietario ni pertenezca a su grupo. El comportamiento del root del cliente sobre el recurso compartido se controla con la opción root_squash o no_root_squash de la configuración del NFS. Con la primera opción, la que funciona por defecto, el root del cliente es un usuario normal que sólo tendrá acceso a los recursos que se le asignen por UID o GID. Con la segunda opción, sin embargo, se comporta como root también sobre los recursos compartidos.

Espero que esta breve entrada os haya servido para disipar dudas, tal como les ha servido a mis alumnos. Hasta el próximo post.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s