Problemas de mapeamento de usuários do NFSv4

1

Eu quero mudar do NFSv3 para o NFSv4 e ter um problema com o mapeamento do usuário do NFSv4, porque em alguns sistemas, os uids bem conhecidos foram atribuídos a usuários normais.

Para uma descrição da configuração, veja abaixo.

A questão é como posso impor que o diretório montado pertença ao verdadeiro uid 33 em vez de uid 1000 .

Armazenamento

/mnt/web_dir pertence ao usuário www-data (uid 33) .

servidor da Web

  • storage:/mnt/web_dir está montado em /var/www
  • usuário www-data tem uid 33

Servidor de Gerenciamento

  • storage:/mnt/web_dir está montado em /mnt/web_dir
  • usuário www-data tem uid 1000
  • usuário admin tem uid 33

Agora, o problema é que os uids e os nomes de usuário estão sendo misturados no servidor admin e não o uid real que está sendo exibido. Isso está dando problemas com o rsync, por exemplo.

Diretório local no armazenamento NFS

root@stor /mnt/web_dir $ ls -la
total 8
drwxr-xr-x 2 root     root     4096 Jul  3 14:01 .
drwxr-xr-x 4 root     root     4096 Jul  3 14:01 ..
-rw-r--r-- 1 www-data www-data    0 Jul  3 14:01 index.html

root@stor /mnt/web_dir $ id -u www-data
33

Diretório montado no NFS no servidor de administração

root@admin /mnt/webdir $ ls -lah
insgesamt 8,0K
drwxr-xr-x 2 root     root     4,0K Jul  3 13:43 .
drwxr-xr-x 6 root     root     4,0K Jul  3 13:43 ..
-rw-r--r-- 1 www-data www-data    0 Jul  3 13:43 testfile

root@admin /mnt/web_dir $ id -u www-data
1000

root@admin /mnt/web_dir $ ls -ln
insgesamt 0
-rw-r--r-- 1 1000 1000 0 Jul  3 13:43 testfile

A configuração é a seguinte:

root@admin / $ cat /proc/mounts
storage:/mnt/web_dir /var/www nfs4 rw,relatime,vers=4,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.x.x.x,minorversion=0,local_lock=none,addr=10.x.x.x 0 0

e

root@stor / $ exportfs -v
/mnt/web_dir
        10.x.x.x(rw,async,wdelay,no_root_squash,no_subtree_check)

e

root@admin /mnt/web_dir $ cat /etc/idmapd.conf 
[General]

Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
# Domain = localdomain

[Mapping]

Nobody-User = nobody
Nobody-Group = nogroup

e

root@admin /mnt/web_dir $ dpkg -l | grep nfs
ii  libnfsidmap2:amd64                    0.25-4                        amd64        NFS idmapping library
ii  nfs-common                            1:1.2.6-4                     amd64        NFS support files common to client and server


root@stor / $ dpkg -l | grep nfs
ii  libnfsidmap2:amd64               0.25-4                        amd64        NFS idmapping library
ii  nfs-common                       1:1.2.6-4                     amd64        NFS support files common to client and server
ii  nfs-kernel-server                1:1.2.6-4                     amd64        support for NFS kernel server

Aparentemente, as versões importam, porque eu testei a configuração com o Debian Jessie e os uids reais estão sendo passados para o cliente nfs4. No entanto, os servidores problemáticos possuem o Debian 7 e estão atualizados.

Agradeço qualquer ajuda. Obrigada!

    
por Leon Kramer 03.07.2015 / 14:30

1 resposta

2

O problema aqui é que a versão mais ativada do NFS é o NFS 4.0

root@stor / $ cat /proc/fs/nfsd/versions 
+2 +3 +4 -4.1

Portanto, quando o cliente está se conectando, o NFS 4.0 (ou minorversion=0 ) é a versão padrão.

A solução é montar o diretório com a opção minorversion=1

root@admin / $ cat /proc/mounts
storage:/mnt/web_dir /var/www nfs4 rw,relatime,vers=4,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.x.x.x,minorversion=1,local_lock=none,addr=10.x.x.x 0 0
    
por 03.07.2015 / 16:12

Tags