it-swarm-es.tech

mount.nfs: ¿acceso denegado por el servidor durante el montaje en máquinas Ubuntu?

Tengo tres máquinas en producción.

machineA    10.66.136.129
machineB    10.66.138.181
machineC    10.66.138.183

y todas esas máquinas tienen Ubuntu 12.04 instalado y tengo acceso de root a todas esas tres máquinas.

Ahora se supone que debo hacer las siguientes cosas en mis máquinas anteriores:

Create mount point /opt/exhibitor/conf
Mount the directory in all servers.
 Sudo mount <NFS-SERVER>:/opt/exhibitor/conf /opt/exhibitor/conf/

Ya he creado /opt/exhibitor/conf directorio en todas esas tres máquinas como se mencionó anteriormente.

Ahora estoy tratando de crear un punto de montaje. Así que seguí el siguiente proceso:

Instale archivos de soporte NFS y servidor de kernel NFS en las tres máquinas anteriores

$ Sudo apt-get install nfs-common nfs-kernel-server

Cree el directorio compartido en las tres máquinas anteriores.

$ mkdir /opt/exhibitor/conf/

Editado el /etc/exports y agregó la entrada como esta en las tres máquinas anteriores:

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
/opt/exhibitor/conf/     10.66.136.129(rw)
/opt/exhibitor/conf/     10.66.138.181(rw)
/opt/exhibitor/conf/     10.66.138.183(rw)

He intentado montar en la máquina A como a continuación desde la máquina B y la máquina C y me da este error:

[email protected]:/# Sudo mount -t nfs 10.66.136.129:/opt/exhibitor/conf /opt/exhibitor/conf/
mount.nfs: access denied by server while mounting 10.66.136.129:/opt/exhibitor/conf

[email protected]:/# Sudo mount -t nfs 10.66.136.129:/opt/exhibitor/conf /opt/exhibitor/conf/
mount.nfs: access denied by server while mounting 10.66.136.129:/opt/exhibitor/conf

¿Mi /etc/exports el archivo se ve bien? Estoy bastante seguro, he estropeado mi archivo exports. Como tengo el mismo contenido en las tres máquinas en el archivo de exportaciones.

¿Alguna idea de qué mal estoy haciendo aquí? ¿Y cuál será el correcto /exports archivo aquí?

70
arsenal

exportfs

Cuando creas un /etc/exports archivo en un servidor que necesita para asegurarse de que lo exporta. Por lo general, querrás ejecutar este comando:

$ exportfs -a

Esto exportará todas las entradas en el archivo de exportaciones.

showmount

La otra cosa que haré a menudo es desde otras máquinas. Comprobaré cualquier máquina que esté exportando recursos compartidos NFS a la red usando el comando showmount.

$ showmount -e <NFS server name>

Ejemplo

Digamos, por ejemplo, que he iniciado sesión en scully.

$ showmount -e mulder
Export list for mulder:
/export/raid1/isos     192.168.1.0/24
/export/raid1/proj     192.168.1.0/24
/export/raid1/data     192.168.1.0/24
/export/raid1/home     192.168.1.0/24
/export/raid1/packages 192.168.1.0/24

fstab

Para montarlos en las botas, agregaría esta línea a sus máquinas cliente que desean consumir los montajes NFS.

server:/shared/dir /opt/mounted/dir nfs rsize=8192,wsize=8192,timeo=14,intr

montaje automático

Si va a reiniciar estos servidores, le sugiero que busque configurar el montaje automático (autofs) en lugar de agregar estas entradas a /etc/fstab. Es un poco más de trabajo pero vale la pena el esfuerzo.

Hacerlo le permitirá reiniciar los servidores de manera más independiente entre sí y también creará el montaje NFS cuando realmente se necesite y/o se use. Cuando esté inactivo, se desmontará.

Referencias

75
slm

Vi el mismo error (mount.nfs: access denied by server while mounting...) y el problema fue solucionado por -o v3 opción de la siguiente manera:

$ Sudo mount -o v3 a-nfs-server:/path/to/export /path/to/mount
  • El servidor es Ubuntu 14.04 64bit LTS.
  • El cliente es CentOS 6.5 de 64 bits.
41
Fumisky Wells

En mi caso funciona usando nfs4 haciendo:

$ Sudo mount -t nfs4 nombre-servidor:// ruta/a/mount

En el /etc/export archivo en el servidor

/Path/to/export 192.168.1.0/24(rw,sync,fsid=0,no_root_squash,crossmnt,no_subtree_check,no_acl)

fsid=0 hacer el /Path/to/export el directorio raíz cuando monta el recurso compartido.

crossmnt, porque también tengo otras unidades en el sistema de archivos exportado a las que quiero acceder.

no_root_squash, porque quiero acceder como usuario root (su) desde el lado del cliente. Estoy bastante seguro de que soy el único que puede hacer eso en mi red local.

Servidor y clientes son Ubuntu 14.04 64bit.

Si quieres usar nfs3, la respuesta de @ fumisky-wells también funciona para mí.

7
victe

Recibía el mismo mensaje de error y mi problema se debió a que la máquina del cliente tenía dos interfaces de red conectadas a la misma LAN. El servidor se había configurado para esperar una dirección IP específica y el tráfico salía en la segunda interfaz que tiene una dirección IP dhcp. Así que acabo de configurar la segunda interfaz para que tenga una dirección IP estática y también agregué la segunda dirección IP estática a la configuración del servidor.

4
majjinator

/etc/exports debe editarse en la máquina NFS servidor, no en los clientes, como usted dice, ya que el servidor NFS lo verifica cuando un cliente solicita acceso a un recurso compartido.

Si pones lo siguiente en /etc/exports en el servidor NFS, debería funcionar:

/opt/exhibitor/conf 10.66.136.129(rw)
/opt/exhibitor/conf 10.66.138.181(rw)
/opt/exhibitor/conf 10.66.138.183(rw)
3
Chris Down

Después de luchar con este mismo mensaje de error durante horas, mi problema resultó ser nada más complicado que los buenos permisos de archivos Linux en el host NFS.

La carpeta que intentaba compartir (/home/foo/app/share) tenía los permisos correctos, pero porque el directorio de inicio del usuario (/home/foo) tenía 0750 modo en él, NFS no pudo atravesarlo para acceder al directorio compartido.

Tan pronto como configuro el directorio de inicio del usuario en modo 0751, el servicio NFS pudo atravesarlo y pude montar el recurso compartido desde mi máquina cliente.

2
Dale Anderson

Para mí, el problema era que estaba usando la dirección IP del servidor en /etc/exports/ en lugar de cliente uno.

La cuestión es que debes poner todos los ips a los que concedes acceso en el servidor /etc/exports/

2
Vanuan

Si nfs-client está tratando de montar el recurso compartido exportado dentro del contenedor de Linux, el contenedor debería ejecutarse en modo privilegiado.

En caso de estibador;

$ docker run -it --rm --privileged ubuntu:14.04

2
efesaid

Lo mismo podría suceder si intenta montar un recurso compartido NFS en la instancia de Virtual Box con el adaptador de red configurado como NAT.

Elegir Bridged Adapter en la configuración de red de la máquina virtual soluciona este problema.

0
mkaptur

La única solución que funcionó para mí fue exportar sistemas de archivos comenzando con /srv. Parece que esto es una limitación (o una opción predeterminada, al menos) de NFSv4.

Como estaba tratando de exportar una unidad USB que se monta automáticamente en /media, Necesitaba una forma de "montarlo" debajo de /srv. Para lograr eso:

Sudo mkdir /srv/videos
Sudo mount --bind /media/jim/wdportable/videos /srv/videos

Y en /etc/exports:

/srv/videos 192.168.0.200(ro)

Cuando exporté /media/jim/wdportable/videos directamente, intentar montar en el cliente siempre resultó en mount.nfs: access denied by server.

Los -o v3 la solución funcionó, pero no quería forzar v3.

0
Jim Stewart

Cabe señalar que una página vinculada que me llevó aquí tenía mi respuesta correcta, que era que NO se puede usar el comodín * en la dirección IP en la exportación. Es * (todas las IP) o se usa como comodín en los nombres de dominio IE: * .domain.com.

Por ejemplo: esto es correcto

/Path/to/export 192.168.1.0/24(flags)

Esto no funcionará (o al menos es incorrecto), pero funcionó para mí durante años hasta que intenté montar la exportación desde una VM de Fedora.

/Path/to/export 192.168.1.*(flags)
0

Evidentemente, este error puede ser provocado por muchas causas. En mi caso, la solución consistía en agregar la opción insecure en /etc/exports en el servidor:

/path/to/be/exported authorized_client(rw,root_squash,sync,no_subtree_check,insecure)

Esto se debe a que algunos clientes NFS no respetan la regla establecida de no originar solicitudes de montaje desde los puertos altos TCP (número de puerto por encima del rango 0-1023)).

La razón de la regla es que los puertos bajos TCP solo pueden ser utilizados por usuarios privilegiados (es decir, root) en sistemas UNIX. Y la importación de recursos compartidos NFS en un sistema es un ejemplo de ello.

0

Este error también puede ser causado al intentar montar una ruta encriptada. (Por ejemplo, en su directorio de inicio, si elige encriptarlo)

0
user3737396

Para mí, el problema era que mi enrutador cambió la dirección IP utilizada del cliente, de modo que la entrada en /etc/exports en la máquina del servidor solo permitía el acceso a una dirección IP que ya no se usaba.

0
Alex

Sé que este es un hilo viejo, pero mi problema tenía que ver con LXC y AppArmor.

Matar AppArmor, o agregar un perfil de excepción, lo solucionó.

0
Josh