nfs4 permissão negada: números UID GID mostrados para o proprietário. Eu esperava cordas

0

Eu não recebo as permissões de arquivo esperadas do meu servidor Lan usando o NFS4.

Montar o diretório 'exports' como um cliente funciona bem. ls exibe o conteúdo correto da pasta. Mas se o cliente tentar cd em um diretório, ele recebe uma "Permissão negada" .

Se o cliente usa ls -l para listar o conteúdo da pasta montada, ele obtém números de GID: UID para o proprietário de cada arquivo. Eu estava esperando que o NFS4 fornecesse o nome de usuário do cliente: groupname como uma string não como um número. Os UIDs mostrados não correspondem ao UID do usuário do cliente. Acho que é por isso que obtenho "permissão negada" .

Eu tenho um usuário 'Paul' (UID = 1004) no servidor e um usuário 'Paul' (UID = 1000) no cliente. Eu gostaria de lidar com permissões de arquivos NFS4 pelos nomes NOT pelos IDs.

Esta é a configuração atual:

Montagem como cliente:

como eu montei as exportações no cliente Ubuntu 14.04:

sudo mount.nfs4 192.168.178.10:/ /fs_data -o soft,intr,rsize=8192,wsize=8192

Configuração do servidor NFS:

todas as mudanças que eu fiz no servidor NFS4 em Raspbian, depois de instalar 'nfs-kernel-server', 'rpcbind', 'nfs-common'

/ etc / default / rpcbind

OPTIONS=""

/etc/hosts.deny

rpcbind:ALL

/etc/hosts.allow

rpcbind: 192.168.178.20 , 192.168.178.21

/ etc / default / nfs-kernel-server

NEED_SVCGSSD=NO

/ etc / default / nfs-common

NEED_IDMAPD=YES
NEED_GSSD=no

/ etc / exports

/exports         192.168.178.20(rw,sync,fsid=0,crossmnt,no_subtree_check,no_root_squash,insecure) 192.168.178.21(rw,sync,fsid=0,crossmnt,no_subtree_check,no_root_squash,insecure)
/exports/paul    192.168.178.20(rw,sync,no_subtree_check,no_root_squash,insecure) 192.168.178.21(rw,sync,no_subtree_check,no_root_squash,insecure)

Alguma pista, o que eu sinto falta?

    
por Rotareti 04.02.2016 / 18:37

1 resposta

2

Acho que isso é uma armadilha no nfs4 que muitas pessoas enfrentaram, inclusive eu. Em nfs4, você especifica um sec= flavor e, quando não especificado, o padrão é AUTH_SYS , o que significa enviar UIDs e GIDs locais para o servidor que são então comparados.

Até onde eu entendi, somente quando se usa um sabor de segurança da família krb5* o cliente envia a autenticação como uma string com <username>:<groupname>

Aqui é um explicação mais detalhada o que acontece nos bastidores.

Na página man do nfs, há também uma seção "Usando portas de origem não privilegiadas" que menciona que se o servidor aceitar portas não privilegiadas, qualquer usuário poderia fingir uma identidade e soar como um problema de segurança que poderia ser usado como um solução alternativa. Mas eu não sei se isso é tão fácil ou se precisa de alguns hacks para torná-lo utilizável. Mas, no final, ainda é um problema de segurança.

Talvez a maneira mais fácil seja manter os UIDs e os GIDs sincronizados manualmente ou configurar um NIS ou LDAP simples. E ao usar sssd , você também pode armazenar em cache as credenciais de login do NIS ou do LDAP, mas o usuário precisa fazer o login uma vez conectado ao servidor.

    
por Thomas 04.02.2016 / 20:16