- Seus bancos de dados de senha / grupo estão sincronizados entre o cliente e
servidor?
-
Você vê algum arquivo no diretório nfs montado no cliente nfs como pertencente por
nobody nobody
-
Você pode enviar a saída de
nfsidmap -d
do servidor e do cliente? Sugestão - quando utilizar saídas NFSV4 deve corresponder.
O mais provável é que você esteja encontrando uma discrepância entre o UID / GID no servidor NFS e no cliente NFS. Vou mostrar como isso funciona com base em um exemplo simples.
Digamos que você esteja compartilhando em seu cliente NFS / nfs_share dessa forma. Observe que nfs_share
é gravável por qualquer pessoa (777).
[root@nfsserver nfs_share]# cat /etc/exports
/nfs_share 192.168.0.52(rw,no_root_squash)
[root@nfsserver nfs_share]# ls -ld /nfs_share
drwxrwxrwx. 2 root root 4096 Nov 30 23:55 /nfs_share
E montagem no seu cliente NFS assim
mount 192.168.0.51:/nfs_share /mnt
Agora você tem um usuário do servidor nfs chamado dmitry
[root@nfsserver nfs_share]# getent passwd|grep dmitry
dmitry:x:500:500::/home/dmitry:/bin/bash
[root@nfsserver nfs_share]# getent group|grep dmitry
dmitry:x:500:
E no seu cliente nfs você tem usuário helen
[root@nfsclient ~]# getent passwd|grep helen
helen:x:500:500::/home/helen:/bin/bash
[root@nfsclient ~]# getent group|grep helen
helen:x:500:
Observe que, apesar de serem usuários diferentes, eles têm o mesmo UID e GID. Então, o que acontece se eu tocar como o arquivo helen do usuário no compartilhamento nfs?
[helen@nfsclient mnt]$ touch helen_client
[helen@nfsclient mnt]$ ls -lrt
[helen@nfsclient mnt]$ ls -lrt
total 0
-rw-rw-r--. 1 nobody nobody 0 Nov 30 23:58 helen_client
No cliente NFS, esse novo arquivo será exibido como de propriedade de nobody nobody
. Isso ocorre porque o nfsidmap não pode mapear client_user_name @ domain para server_user_name @domain.
E agora momento de trégua. Vamos verificar qual é o dono do arquivo no servidor nfs.
[root@nfsserver nfs_share]# ls -rlt
total 0
-rw-rw-r--. 1 dmitry dmitry 0 Nov 30 23:58 helen_client
Surpreso ainda?
No entanto, não há nada de estranho na verdade. Isso funciona como esperado.
O servidor NFS não pode mapear o usuário helen, mas o que recebeu é UID e GID. Por isso, criou o arquivo (uma vez que a pasta é gravável pelo mundo) com o UID 500 e o GID 500, que é mapeado para dmitry: dmitry no servidor NFS.
Agora, digamos que temos outro usuário que tenha UID / GID e os nomes correspondem entre o servidor e o cliente
[root@nfsserver mnt]# getent passwd|grep angelina
angelina:x:501:501::/home/angelina:/bin/bash
[root@nfsserver mnt]# getent group|grep angelina
angelina:x:501:
[angelina@nfsclient mnt]$ getent passwd|grep angelina
angelina:x:501:501::/home/angelina:/bin/bash
[angelina@nfsclient mnt]$ getent group|grep angelina
angelina:x:501:
E se eu tocar em arquivo no cliente nfs como usuário angelina - verei o nome de usuário / grupo correto no servidor e no cliente
[angelina@nfsclient mnt]$ pwd
/mnt
[angelina@nfsclient mnt]$ touch angelina_1
[angelina@nfsclient mnt]$ ls -l
total 0
-rw-rw-r--. 1 angelina angelina 0 Dec 1 2016 angelina_1
-rw-rw-r--. 1 nobody nobody 0 Dec 1 00:16 helen_1
[root@nfsserver nfs_share]# pwd
/nfs_share
[root@nfsserver nfs_share]# ls -l
total 0
-rw-rw-r--. 1 angelina angelina 0 Dec 1 00:27 angelina_1
-rw-rw-r--. 1 dmitry dmitry 0 Dec 1 00:16 helen_1
A linha de fundo é que o NFSV4 funcione corretamente, você precisa ter
- Servidor e senha do cliente / banco de dados do grupo em sincronia. De preferência use ldap.
- cliente e servidor devem concordar com o nome de domínio comum
nfsidmap -d