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

53

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 eu devo fazer abaixo as coisas 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/

Já criei o diretório /opt/exhibitor/conf em todas as três máquinas mencionadas 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 de kernel do NFS em todas as 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 como essa 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 em machineA como abaixo de machineB e machineC e isso me dá este erro-

root@machineB:/# 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

root@machineC:/# 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

O meu arquivo /etc/exports ficou 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ção.

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

    
por arsenal 21.12.2013 / 08:51

13 respostas

54

exportfs

Quando você cria um arquivo /etc/exports em um servidor, é necessário exportá-lo. Normalmente você vai querer executar este comando:

$ exportfs -a

Isso exportará todas as entradas no arquivo de exportações.

showmount

A outra coisa que geralmente faço é de outras máquinas. Eu verifico qualquer máquina que esteja exportando compartilhamentos NFS para a rede usando o comando showmount .

$ showmount -e <NFS server name>

Exemplo

Digamos, por exemplo, que estou logado no 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 montá-los no momento das botas, você adicionaria essa linha às máquinas clientes que desejassem consumir as montagens do NFS.

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

automounting

Se você for reinicializar esses servidores, sugiro que você olhe para configurar a montagem automática ( autofs ) em vez de adicionar essas entradas a /etc/fstab . É um pouco mais trabalho, mas vale a pena o esforço.

Ao fazer isso, você poderá reinicializar os servidores de forma mais independente um do outro e também criará a montagem do NFS somente quando for realmente necessário e / ou usado. Quando ele ficar ocioso, ele será desmontado.

Referências

por 21.12.2013 / 08:58
30

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

$ 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.
por 12.08.2014 / 07:09
6

No meu caso funciona usando o nfs4 fazendo:

$ sudo mount -t nfs4 server-name:/ /path/to/mount

No arquivo /etc/export 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 torna o /Path/to/export o diretório raiz quando você monta o compartilhamento.

crossmnt , porque eu tenho alguns outros drives no sistema de arquivos exportados que eu quero acessar também.

no_root_squash , porque eu quero acessar como usuário root (su) do 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.

    
por 20.08.2014 / 14:27
2

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

Se você colocar o seguinte em /etc/exports no servidor NFS, isso 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)
    
por 21.12.2013 / 08:53
2

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

No caso de janela de encaixe;

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

    
por 05.05.2016 / 17:36
2

Eu estava recebendo a mesma mensagem de erro e meu problema acabou sendo 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, apenas configurei 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.

    
por 16.08.2016 / 04:46
2

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

A coisa é, você deve colocar todos os ips aos quais você concede acesso no servidor /etc/exports/

    
por 01.09.2016 / 22:29
0

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

    
por 09.08.2016 / 09:55
0

A mesma coisa pode acontecer se você tentar montar um compartilhamento NFS na instância do Virtual Box com o adaptador de rede configurado como NAT .

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

    
por 29.09.2016 / 09:04
0

Eu sei que este é um tópico antigo, mas meu problema tinha a ver com LXC e AppArmor .

Eliminar AppArmor ou adicionar um perfil de exceção, corrigi-lo.

    
por 30.03.2017 / 04:31
0

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

    
por 19.01.2018 / 09:35
0

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

Como eu estava tentando exportar uma unidade USB automática para /media , precisei de uma maneira de montá-la em /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 exportei /media/jim/wdportable/videos diretamente, a tentativa de montagem no cliente sempre resultou em mount.nfs: access denied by server .

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

    
por 06.02.2018 / 06:28
0

Deve-se notar que uma página vinculada que me conduziu até aqui teve minha resposta correta, que é que você NÃO pode usar o curinga * no endereço IP na exportação. É * (todos os IP's) ou usado como um caractere 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é que eu tentei montar a exportação de uma VM do Fedora.

/Path/to/export 192.168.1.*(flags)
    
por 07.02.2018 / 07:23