Como posso configurar diretórios pessoais centralizados e autenticação do usuário usando LDAP e NFS?

2

Estou tentando configurar meu servidor para autenticar usuários usando o LDAP e salvar seus diretórios pessoais em um diretório NFS, também localizado no servidor.

, por exemplo: compartilho um diretório no meu servidor:

/nfsexport      10.0.2.0/24(rw,async,no_subtree_check,fsid=0,crossmnt)\
            *.em(rw,async,no_subtree_check,fsid=0,crossmnt)
/nfsexport/homes    10.0.2.0/24(rw,async,no_subtree_check)\
            *.em(rw,async,no_subtree_check)

monte-o no meu cliente editando /etc/fstab :

server1:/homes      /home/users nfs4    bg  0   0

e anexe no final dos arquivos /etc/pam.d/login e /etc/pam.d/lightdm da seguinte linha:

session required pam_mkhomedir.so skel=/etc/skel umask=0022

Agora, o diretório inicial deve ser criado no login em /home/users/ldapuser . Mas não consigo fazer login e não há um diretório inicial criado no servidor. Eu tentei seguir abordagens:

  1. Crie o diretório pessoal localmente e não no NFS. Funciona, proprietário e grupo estão corretos. Mas não é centralizado.
  2. Altere as permissões de /home/users no servidor para 777. Ele também funciona com o NFS, mas não é a solução ideal ... Também tentei alterar a permissão para 755, mas o usuário não pode gravar em seu diretório home porque o proprietário e o grupo estão definidos como nobody e nogroup

Então, como posso fazer o openLDAP criar automaticamente diretórios de usuário em /home/users com a propriedade de usuário e grupo correspondente no primeiro login? Ou pelo menos alterá-lo depois, após o primeiro login, enquanto os direitos são alterados para 777?

Ou: Existe um método alternativo para ter diretórios de usuário centralizados e autenticação de usuário?

    
por ViggieSmalls 19.11.2015 / 17:16

2 respostas

1

Este é um problema com a identificação do usuário no protocolo NFS. Como isso funciona depende de qual versão do NFS você está usando.

No NFSv3, nomes de usuário e senhas não fazem parte do protocolo; em vez disso, os números de UID e GID são. Se um usuário com UID = 1000 na máquina a for chamado bart e um usuário com o mesmo uid na máquina b for chamado homer , então bart poderá ler arquivos criados pelo usuário homer na máquina b. Esta é uma razão pela qual a sincronização UID é geralmente uma boa idéia ao usar o NFS.

No entanto, o NFSv4 mudou muito disso. Em vez de apenas números UID, no NFSv4, o usuário e o grupo nome são enviados pela rede. Para que isso funcione corretamente, o protocolo NFSv4 mudou várias coisas de forma significativa:

  • O protocolo requer que todos os nomes de usuário existam em todas as máquinas. Ou seja, se o cliente tiver um usuário bart , o servidor deve também ter um usuário bart (seus UIDs podem ser diferentes). Se algum deles não tiver o usuário mencionado, as coisas voltarão para o usuário e grupo nobody e / ou nogroup .
  • O protocolo tem um conceito de "domínio". Por padrão, isso é baseado no nome do domínio (ou seja, o FQDN da máquina em que você está executando, menos o nome do host), mas pode ser uma string arbitrária. Os domínios são usados para separar máquinas que possuem diferentes conjuntos de usuários. Se o domínio no cliente não corresponder ao domínio no servidor, o sistema assumirá que o usuário bart na máquina a é completamente diferente bart daquele na máquina b.

Para mais detalhes, leia a página rpc.idmapd(8) man (que documenta a implementação do Linux do protocolo de mapeamento de ID).

Até recentemente, a maioria das distribuições Linux costumava usar o NFSv3 como padrão se você não solicitasse explicitamente o contrário. Desde alguns anos, no entanto, os padrões estão mudando para o NFSv4.

Para que as coisas funcionem, você tem duas opções:

  1. Reverter para o NFSv3. Você pode fazer isso por meio da opção nfsvers=3 mount.
  2. Descubra por que rpc.idmapd não está fazendo o que você espera e mexa com isso até que isso aconteça.

O caminho de menor resistência é, claramente, 1. No entanto, o NFSv4 possui vários recursos úteis sobre o conjunto de recursos do NFSv3, e você os perderia descartando-o.

    
por 19.11.2015 / 17:38
0

Você consegue fazer o login como um usuário LDAP? Você pode utilizar o #ldapsearch -x para verificar, bem como #ldapsearch -d1. "d" significa depuração e o "1" é o nível.

Se você não conseguir obter qualquer resposta, poderá adicionar o IP e o nome ao arquivo / etc / hosts. Além disso, você pode ter certeza que seu arquivo /etc/openldap/ldap.conf está correto e aponta para o diretório cert correto.

Depois de se conectar ao LDAP, você pode utilizar o utilitário autofs para montar automaticamente o diretório pessoal dos usuários.

Você terá que modificar o arquivo /etc/auto.master assim como criar /etc/auto.users

Acho que um passo de cada vez aqui na conexão e autenticação do LDAP, em seguida, dar os próximos passos.

    
por 19.11.2015 / 23:54