Como posso mapear o NFSv4 UID entre sistemas com incompatibilidades de UID?

11

Estou trabalhando em um laboratório com três sistemas Ubuntu e gostaria de montar alguns sistemas de arquivos via NFS. No entanto, embora os sistemas tenham alguns dos mesmos nomes de usuário, os UIDs e GIDs não coincidem, porque os três sistemas foram configurados separadamente. Quando monto um sistema de arquivos NFS de um sistema para outro, a propriedade aparece incorreta. Por exemplo, se o UID 1000 é alice no servidor1 e o mesmo UID, 1000, é bob no servidor2, quando o servidor1 monta o sistema de arquivos exportado do servidor2, os arquivos de bob parecem pertencer a alice.

Portanto, existe alguma maneira de fazer o NFS (v4) converter UIDs entre servidores por meio de seus nomes de usuário associados? Pesquisando isso, vi muitas referências ao Kerberos, LDAP ou NIS, o que parece ser um exagero maciço para uma tarefa tão simples e pode não ser possível, pois esses sistemas não são gerenciados centralmente. Esse link parece indicar que o que eu peço é impossível. Está correto?

Edit: Eu tentei todas as configurações para as /etc/idmapd.confquais posso pensar ou encontrar na Internet e, enquanto o processo idmapd está claramente em execução, até agora não vi nenhuma evidência de que o NFS esteja tentando usá-lo, e nunca teve nenhum efeito sobre os IDs de usuário relatados nas montagens NFS.

Ryan C. Thompson
fonte
1
Acredito que a coisa mais fácil para você é colocar todas as suas coisas em ordem. Você pode permanecer com seu esquema de autenticação atual, pois possui apenas três caixas, mas precisa sincronizar todos os UIDs / GIDs dos usuários em suas caixas. Esta não é uma tarefa difícil, na verdade.
22412 Serge
Sim, foi isso que finalmente acabei fazendo.
Ryan C. Thompson

Respostas:

5

Sem administração centralizada de usuários, a "melhor" maneira que vejo é forçar todos os servidores a usar o mesmo GID e UID para cada usuário. Agora ... estou falando apenas de arquivos e / ou diretórios.

O que eu faria neste caso é:

  • Registre cada UID e GID atualmente em uso.
  • Editar /etc/passwde /etc/groupe combinar os grupos em todos os servidores. De preferência para novos UIDs e GIDs, para que o próximo passo seja mais rápido
  • Execute isto (levará algum tempo):

    find / -group <OLD_GID> -exec chgrp <NEW_GID> '{}' \+
    find / -user  <OLD_UID> -exec chown <NEW_UID> '{}' \+
    
BitsOfNix
fonte
Ummm, a instrução "find" está iniciando no diretório raiz. O comando está alterando a propriedade de todos os diretórios no sistema. As alterações sugeridas nesses comandos incluirão todos os arquivos no sistema. Eu sugiro que você limite em quais diretórios esse comando é executado ou você terá um dia muito ruim.
2
Em find man: -group gname True se o arquivo pertencer ao grupo gname. Se gname for numérico e não aparecer no banco de dados do grupo (4), será utilizado como um ID de grupo.
BitsOfNix
1

O NFSv4 suporta mapeamento de identificação. Quando ativado, o NFS transmitirá nomes de usuário em vez de IDs numéricos. Hosts com uid numérico diferente para o mesmo usuário não são um problema, pois os nomes de usuário são mapeados para uids no host.

O mapeamento de identificação é sempre usado nos modos de segurança Kerberos ( sec=krb5).

O mapeamento de identificação também pode ser usado no modo AUTH_UNIX (o padrão sec=sys). Expliquei os detalhes de configuração em resposta a: Como obter o NFSv4 idmap trabalhando com sec = sys .

sebasth
fonte