Como mapear o usuário raiz do cliente NFS para o usuário raiz do servidor NFS?

1

Temos um problema ao usar o NFS. Não podemos escrever em um diretório na máquina cliente do NFS se esse diretório foi criado no servidor NFS. O motivo parece ser uma permissão de arquivo / diretório e mapeamento de usuários.

Nossa configuração:

Temos 2 nós EC2 - Ubuntu 16.04.2 LTS

Servidor NFS instalado em uma máquina:

ubuntu@master:~$ less /etc/exports
/home/ubuntu/data *(rw,no_subtree_check,sync,insecure)

O mesmo diretório é montado em outra máquina:

sudo mkdir /home/ubuntu/data
sudo mount -t nfs masterIp:/home/ubuntu/data /home/ubuntu/data

Um problema que temos:

Quando criamos um diretório no NFS em um mestre, ele é criado assim:

# sudo mkdir /home/ubuntu/data/Test
# sudo ls -all /home/ubuntu/data
drwxr-xr-x  2 root  root       4096 Jul  5 07:19 Test

O Master não tem problemas para acessar este diretório, criando o arquivo insideeetc. Mas quando tentamos criar um arquivo a partir de um nó escravo dentro do Test dir, temos erro de permissão negada.

Quando criamos um diretório a partir de uma máquina cliente do NFS, é assim:

# sudo mkdir /home/ubuntu/data/Test2
# sudo ls -all /home/ubuntu/data
drwxr-xr-x  2 root  root       4096 Jul  5 07:19 Test
drwxr-xr-x  2 nobody nogroup   4096 Jul  5 07:21 Test2

Portanto, parece que o usuário root do cliente NFS é mapeado para nobody @ nogroup quando grava em diretórios NFS e, portanto, não pode gravar em diretórios criados pelo usuário root no servidor NFS. Precisamos mapear o usuário root de um clinsite do NFS para o usuário root do servidor NFS para que ambos possam trabalhar livremente com diretórios, não importando onde eles tenham sido criados.

    
por MaxNevermind 05.07.2017 / 11:20

1 resposta

3

Use a opção no_root_squash na sua entrada /etc/exports . Na página de manual de exports :

User ID Mapping

nfsd bases its access control to files on the server machine on the uid and gid provided in each NFS RPC request. The normal behavior a user would expect is that she can access her files on the server just as she would on a normal file system. This requires that the same uids and gids are used on the client and the server machine. This is not always true, nor is it always desirable.

Very often, it is not desirable that the root user on a client machine is also treated as root when accessing files on the NFS server. To this end, uid 0 is normally mapped to a different id: the so-called anonymous or nobody uid. This mode of operation (called 'root squashing') is the default, and can be turned off with no_root_squash.

    
por 06.07.2017 / 04:52

Tags