NFS: Como permitir que um usuário específico escreva em uma montagem NFS?

2

Eu escrevi uma verificação do Nagios que deveria verificar o tempo que um servidor leva para gravar um arquivo em uma de suas montagens. A verificação está sendo executada pelo usuário nagios.

O servidor NFS está configurado da seguinte forma:

[root@ny4aftp2 ~]# tail /etc/exports 
/proxy_logs *(rw,insecure,insecure_locks,no_subtree_check,async)
/sync_logs *(rw,insecure,insecure_locks,no_subtree_check,async)
[root@ny4aftp2 ~]# ls -ld /sync_logs/
drwxrwxr-x 3 peeradmin peeradmin 4096 Dec 10 10:14 /sync_logs/
[root@ny4aftp2 ~]#

Esse é o comando em que o script de verificação está sendo executado:

dd if=/dev/zero of=/$MOUNTPOINT/'hostname'.dat bs=1024 count=102

O cliente está configurado da seguinte forma:

[root@ny4aproxy11 ~]# grep sync /etc/fstab 
IP:/sync_logs /sync_logs nfs intr,noatime  0 0

Quando a verificação está sendo executada pelo usuário nagios, ele recebe um erro "Permissão negada" quando o comando dd está tentando gravar o arquivo .dat no compartilhamento nfs /sync_logs , mesmo que o usuário nagios está configurado da mesma forma nas duas máquinas:

Servidor:

[root@ny4aftp2 ~]# id nagios
uid=498(nagios) gid=498(nagios) groups=498(nagios),500(peeradmin)

Cliente:

[root@ny4aproxy11 ~]# id nagios
uid=498(nagios) gid=498(nagios) groups=498(nagios),500(peeradmin)

E o usuário nagios é um membro do grupo peeradmin que é o proprietário do diretório /sync_logs .

/sync_logs no servidor NFS:

[root@ny4aftp2 ~]# ls -ld /sync_logs/
drwxrwxr-x 3 peeradmin peeradmin 4096 Dec 10 10:20 /sync_logs/

/sync_logs no cliente NFS:

[root@ny4aproxy11 ~]# ls -ld /sync_logs/
drwxrwxr-x 3 peeradmin peeradmin 4096 Dec 10 10:20 /sync_logs/

Eu não gostaria de chmod o+w /sync_logs , eu prefiro corrigi-lo como deveria ser ... como o usuário nagios estará recebendo as permissões do fato de que ele é um membro do grupo peeradmin e Isso permitirá que o usuário nagios grave no diretório /sync_logs .

Como isso pode ser feito e o que estou fazendo errado?

Editar # 1:

IP:/sync_logs on /sync_logs type nfs (rw,noatime,intr,vers=4,addr=SERVER_IP,clientaddr=CLIENT_IP)

Obrigado antecipadamente

    
por Itai Ganot 10.12.2014 / 11:34

1 resposta

2

Com base nos comentários até agora:

  • sua montagem funciona com o NFSv3, não com o NFSv3.
  • você está usando contas locais.

Isso significa que o problema provavelmente está no gerenciamento de contas do NFSv4 e idmapd . O que acontece no NFSv3 é que seu cliente informa ao servidor qual UID e GID você está usando.

O que acontece no NFSv4 é que eles usam nomes de usuário e usam idmapd para mapear e para trás. Isso significa que você não precisa mais ter UIDs e GIDs idênticos no domínio de autenticação.

Mas aqui está a pegadinha - idmapd precisa ser capaz de fazer o mapeamento de um lado para o outro. Ele estará enviando user@domain (equivalente) em vez de UID / GID numérico.

Portanto, verifique seu /etc/idmapd.conf . Além disso, verifique se os nomes de domínio no cliente e no host correspondem. Você está procurando por domainname in idmapd.conf - se não estiver definido, o padrão será o comando domainname em seu relatório de servidor / cliente.

Mudar para o NFSv3 pode servir como uma solução alternativa (e verificação), mas provavelmente não é uma boa idéia - o NFSv4 tem algumas melhorias interessantes sobre a v3 e desativá-las devido a um problema de autenticação não é o ideal.

    
por 10.12.2014 / 13:26