¿Cómo establecer correctamente los permisos para la carpeta NFS? Permiso denegado en el extremo de montaje.

46

Estoy tratando de conectarme a una carpeta NFS en mi servidor de desarrollo. El propietario de la carpeta en el servidor de desarrollo es darren y el grupo darren.

Cuando lo exporto y lo monte en mi Mac usando la Utilidad de Discos, se monta, pero cuando trato de abrir la carpeta dice que no tengo permisos. He configurado rw, sync y no_subtree_check. El usuario en la Mac se atreve con un grupo de grupos.

¿Necesito tener el mismo grupo y usuario configurado para acceder a la carpeta?

Darren
fuente
2
Gracias por su pregunta, ¡este hilo me resolvió el problema! Pero por favor acepte la respuesta con la mayor cantidad de votos.
mamiu

Respuestas:

61

NFS está construido sobre la autenticación RPC. Con NFS versión 3, el mecanismo de autenticación más común es AUTH_UNIX. La identificación de usuario y la identificación de grupo del sistema cliente se envían en cada llamada RPC, y los permisos que tienen estas ID en el archivo al que se accede se verifican en el servidor. Para que esto funcione, el UID y los GID deben ser iguales en el servidor y los clientes. Sin embargo, puede forzar que todo el acceso ocurra como un solo usuario y grupo combinando las opciones de exportación all_squash, anonuid y anongid. all_squash asignará todos los UID y GID al usuario anónimo, y anonuid y anongid establecerán el UID y GID del usuario anónimo. Por ejemplo, si su UID y GID en su servidor de desarrollo son ambos 1001, puede exportar su directorio de inicio con una línea como

/home/darren 192.168.1.1/24(rw,all_squash,anonuid=1001,anongid=1001)

Estoy menos familiarizado con NFS versión 4, pero creo que puede configurar rpc.idmapd en los clientes para alterar el uid y gid que envían al servidor.

Sciurus
fuente
77
Me encontré con esta respuesta tratando de resolver un problema de Apple OS X Yosemite nfs. Esta respuesta es mucho más relevante y precisa que la respuesta aceptada. No es aconsejable ni es posible hacer coincidir UID / GID en todos los sistemas. Un usuario root en el sistema A probablemente no sea un usuario root en el sistema B.
Allan
28

Cuando monta NFS, sus permisos con los que lo está montando deben coincidir con lo que tiene en el servidor. Por ejemplo, si su usuario solo tiene acceso de solo lectura, montarlo con lectura-escritura hará que vea los mismos errores que mencionó en su publicación cuando intenta cargar realmente el soporte. Desafortunadamente, esto SOLO aparecerá cuando acceda a la carpeta, no cuando realmente la monte.

También desea asegurarse de que el usuario NFS se esté ejecutando como en el servidor y que el usuario del cliente esté utilizando el mismo UID y GID. Puede verificar estos valores ejecutando id darrentanto en el servidor como en el cliente. Si los valores UID y GID no coinciden, puede editar /etc/passwdpara hacerlo, ¡pero asegúrese de comprender lo que está haciendo antes de cambiar arbitrariamente los valores!

Algunas buenas fuentes:

¡Espero que esto ayude!

Andrew M.
fuente
Sí, no debería haber tratado de cambiar el UID. Tengo que rehacer mi servidor ahora. ¿Cómo se podría imitar el UID y el GID? ¿Es realmente así de complicado?
Darren
Desafortunadamente, en mi experiencia de usar esto en el lugar de trabajo, NFS es extremadamente frágil, y sí, puede ser tan complicado. Por lo general, querrá un usuario NFS dedicado con un UID / GID específico en cada servidor / cliente para que no se encuentre con este problema. Si tiene una opción en su entorno de desarrollo (es decir, no tiene que usar NFS), considerar el uso de algo como SSHFS hará que sus dolores de cabeza de desarrollo desaparezcan, pero no replicará la misma funcionalidad que un servidor de producción con NFS
Andrew M.
¿Crees que Samba es otra solución? Lo he usado con Windows sin problemas y creo que esta es la forma en que tendré que ir a pesar de que estoy usando una Mac para desarrollar mi aplicación.
Darren
Esa es ciertamente otra posibilidad, si está dispuesto a configurarlo.
Andrew M.
2
Dudaría en decir que NFS es frágil. Es un protocolo de servicio de archivos establecido desde hace mucho tiempo. En realidad, solo hay dos requisitos para NFS: UID / GID sincronizado entre los clientes y hora sincronizada entre los clientes y el servidor. Tradicionalmente, NIS se usaba para sincronizar la información del usuario, pero LDAP es una opción más segura para nuevas implementaciones en la última década.
Jeff Strunk
2

¿Sus UID y GID coinciden en ambos servidores? Eso es lo que está usando para controlar el acceso y no el inicio de sesión y el nombre del grupo.

JOTN
fuente
-2

Para mí, el problema se solucionó proporcionando una _netdevopción de montaje en el cliente.

Es decir, agregue esto a /etc/fstab:

nfs-server:/   /mnt   nfs4    _netdev,auto  0  0
Vanuan
fuente