O que estou tentando fazer
Tenho um domínio freeIPA, com alguns clientes e um Synology NAS (também inscrito no freeIPA).
Criei uma pasta compartilhada no NAS, com suporte a NFSv4 + krb5. Do cliente, obtenho um ticket para usuário LDAP [email protected]
e monto esta pasta.
Inicialmente, os arquivos criados nesta pasta seriam de propriedade do nobody
usuário.
Finalmente consegui fazer funcionar, alterando /etc/idmapd.conf
o NAS para
- ter o domínio definido corretamente
- ter um mapeamento estático entre
[email protected]
e um usuário local
Pergunta
Eu entendo o papel do idmapd
fore NFS em geral.
Neste caso porém:
- por que preciso de mapeamentos explícitos? Não pode descobrir por si mesmo?
- por que preciso de um mapeamento? O NAS também está no mesmo domínio freeIPA, é um cliente LDAP e possui os princípios kerberos corretos
[email protected]
. do utilizador? Posso evitar a criação de usuários locais?
Minha corrente idmapd.conf
está assim:
[General]
Domain=hq.example.com
[Mapping]
Nobody-User=guest
Nobody-Group=users
[Translation]
Method=nsswitch
GSS-Methods=static,synomap
[Static]
[email protected]=user1
O que eu gostaria de conseguir é não precisar desse mapeamento estático [email protected]=user1
e, se possível, nem precisar criar um usuário local user1
no NAS.
Resumindo, o protocolo NFSv4 depende de um nome de usuário sendo compartilhado entre o servidor e o cliente, e não os números UID/GID s (que eram usados nas versões anteriores) e o UID <==> mapeamento de nome de usuário pode realmente ser diferente no cliente e no servidor.
Como parte do protocolo NFSv4, o servidor precisa mapear os contextos/permissões de segurança comuns, owner e owner_group para algo que faça sentido para as operações do sistema de arquivos local. Esse mapeamento é feito pelo IDMAPD em sistemas Linux.
Em um sistema Linux, muitas operações de sistemas de arquivos locais são baseadas em UID/GID, mas precisam ser traduzidas para o contexto NFSv4 compartilhado antes de serem transmitidas ao servidor NFS.
Talvez o RFC 3530 possa explicar melhor:
Edite em resposta ao seu imapd.conf.
Você está usando um mapeamento estático para o usuário local. Você provavelmente deseja mapear as identidades NFSv4 para usuários LDAP, o que provavelmente deveria acontecer pela
nsswitch
opção, mas aparentemente não é. Você pode tentar ver o que está acontecendo aumentando a verbosidade do idmapd no servidor NFS.Como alternativa, configure idmapd para consultar diretamente seu servidor LDAP. A sintaxe exata pode depender da versão que você está usando, mas a página do manual mostra algo parecido com: