desenv-web-rp.com

mount.nfs: acesso negado pelo servidor durante a montagem em máquinas Ubuntu?

Eu tenho três máquinas em produção -

machineA    10.66.136.129
machineB    10.66.138.181
machineC    10.66.138.183

e todas essas máquinas têm o Ubuntu 12.04 instalado e eu tenho acesso root a todas essas três máquinas.

Agora devo fazer as coisas abaixo nas minhas máquinas acima -

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

Eu já criei /opt/exhibitor/conf em todas as três máquinas, como mencionado acima.

Agora estou tentando criar um ponto de montagem. Então eu segui o processo abaixo -

Instale os arquivos de suporte do NFS e o servidor do kernel do NFS nas três máquinas acima

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

Crie o diretório compartilhado em todas as três máquinas acima

$ mkdir /opt/exhibitor/conf/

Editou o /etc/exports e adicionou a entrada assim em todas as três máquinas acima -

# /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)

Eu tentei montar na máquinaA, como abaixo da máquinaB e máquinaC, e isso me dá esse erro-

[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

Meu /etc/exports arquivo parece bom? Tenho certeza de que estraguei meu arquivo exports. Como eu tenho o mesmo conteúdo em todas as três máquinas no arquivo de exportações.

Alguma idéia do que estou fazendo errado aqui? E qual será o correto /exports arquivo aqui?

70
arsenal

exportfs

Quando você cria um /etc/exports em um servidor, você precisa exportá-lo. Normalmente, você deseja executar este comando:

$ exportfs -a

Isso exportará todas as entradas no arquivo de exportação.

showmount

A outra coisa que geralmente faço é verificar em qualquer máquina que exporte compartilhamentos NFS para a rede usando o comando showmount.

$ showmount -e <NFS server name>

Exemplo

Digamos, por exemplo, que estou logado.

$ 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 montá-las nas botas, você adicionaria essa linha às máquinas clientes que desejam consumir as montagens NFS.

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

montagem automática

Se você estiver reinicializando esses servidores, sugiro que você configure a montagem automática (autofs) em vez de adicionar essas entradas a /etc/fstab. É um pouco mais trabalhoso, mas vale a pena.

Isso permitirá que você reinicie os servidores de forma mais independente um do outro e também criará a montagem NFS quando for realmente necessário e/ou em uso. Quando ficar ocioso, será desmontado.

Referências

75
slm

Eu vi o mesmo erro (mount.nfs: access denied by server while mounting...) e o problema foi corrigido por -o v3 opção da seguinte maneira:

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

No meu caso funciona usando nfs4 fazendo:

$ Sudo mount -t nfs4 server-name:// caminho/para/mount

No /etc/export arquivo no servidor

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

fsid=0 faz o /Path/to/export o diretório raiz quando você monta o compartilhamento.

crossmnt, porque tenho outras unidades no sistema de arquivos exportado que também quero acessar.

no_root_squash, porque desejo acessar como usuário root (su) no lado do cliente. Tenho certeza de que sou o único que pode fazer isso na minha rede local.

Servidor e clientes são Ubuntu 14.04 64bit.

Se você quiser usar o nfs3, a resposta do @ fumisky-wells também funciona para mim.

7
victe

Eu estava recebendo a mesma mensagem de erro e o problema ocorreu devido à máquina cliente ter duas interfaces de rede conectadas à mesma LAN. O servidor foi configurado para esperar um endereço IP específico e o tráfego estava saindo na segunda interface que possui um endereço IP DHCP. Então, acabei de configurar a segunda interface para ter um endereço IP estático e também adicionei o segundo endereço IP estático à configuração do servidor.

4
majjinator

/etc/exports precisa ser editado na máquina NFS servidor, não nos clientes, como você disse, como é verificado pelo servidor NFS quando um cliente solicita acesso a um compartilhamento.

Se você colocar o seguinte em /etc/exports no servidor NFS, ele deve 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

Depois de lutar com a mesma mensagem de erro por horas, meu problema acabou sendo nada mais complicado do que as boas e antigas permissões de arquivo Linux no host NFS.

A pasta que eu estava tentando compartilhar (/home/foo/app/share) tinha as permissões corretas, mas porque o diretório inicial do usuário (/home/foo) teve 0750, o NFS não conseguiu atravessá-lo para acessar o diretório compartilhado.

Assim que eu definir o diretório inicial do usuário para o modo 0751, o serviço NFS conseguiu entrar nele e eu consegui montar o compartilhamento na minha máquina cliente.

2
Dale Anderson

Para mim, o problema era que eu estava usando o endereço IP do servidor em /etc/exports/ em vez de cliente um.

O problema é que você deve colocar todos os ips aos quais concede acesso no servidor /etc/exports/

2
Vanuan

Se o nfs-client estiver tentando montar o compartilhamento exportado dentro do contêiner linux, o contêiner deverá ser executado no modo privilegiado.

Em caso de estivador;

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

2
efesaid

O mesmo poderia acontecer se você tentar montar um compartilhamento NFS na instância do Virtual Box com o adaptador de rede configurado como NAT.

Escolhendo Bridged Adapter nas configurações de rede da máquina virtual corrige esse problema.

0
mkaptur

A única solução que funcionou para mim foi exportar sistemas de arquivos começando com /srv. Parece que essa é uma limitação (ou opção padrão, pelo menos) do NFSv4.

Desde que eu estava tentando exportar uma unidade USB que monta automaticamente para /media, Eu precisava de uma maneira de fazer isso 'montado' sob /srv. Para conseguir isso:

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

E em /etc/exports:

/srv/videos 192.168.0.200(ro)

Quando eu exportei /media/jim/wdportable/videos diretamente, tentar montar no cliente sempre resultava em mount.nfs: access denied by server.

O -o v3 solução funcionou, mas eu não queria forçar a v3.

0
Jim Stewart

Note-se que uma página vinculada que me levou até aqui tinha a minha resposta correta: NÃO é possível usar * curinga no endereço IP na exportação. É * (todos os IPs) ou é usado como curinga nos nomes de domínio IE: * .domain.com.

Por exemplo: isso está correto

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

Isso não funcionará (ou está incorreto, pelo menos), mas funcionou para mim por anos até eu tentar montar a exportação de uma VM do Fedora.

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

Evidentemente, esse erro pode ser desencadeado por várias causas. No meu caso, a solução consistiu em adicionar a opção insecure em /etc/exports no servidor:

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

Isso ocorre porque alguns clientes NFS não respeitam a regra estabelecida de não originar solicitações de montagem de portas altas TCP (número da porta acima do intervalo 0-1023)).

O motivo da regra é que portas baixas TCP só podem ser usadas por usuários privilegiados (ou seja, root) em sistemas UNIX. E importar compartilhamentos NFS em um sistema é um exemplo).

0
Gianluca Frustagli

Este erro também pode ser causado ao tentar montar um caminho criptografado. (Por exemplo, no seu diretório pessoal, se você optar por criptografá-lo)

0
user3737396

Para mim, o problema era que meu roteador alterou o endereço IP usado do cliente, de modo que a entrada em /etc/exports na máquina do servidor permitia acesso apenas a um endereço IP que não era mais usado.

0
Alex

Eu sei que esse é um thread antigo, mas meu problema tinha a ver com LXC e AppArmor.

Matar AppArmor ou adicionar um perfil de exceção, corrigiu-o.

0
Josh