Como posso manter as contas de usuário consistentes em várias máquinas?

15

Agora eu tenho um Raspberry Pi que roda o Debian Wheezy. Eu tenho algumas máquinas (4 físicas, 2 virtuais) aqui e gostaria de unificar as contas de usuário nessas máquinas.

As máquinas que eu corro têm os seguintes derivados Debian instalados:

  • Debian Wheezy (armhf)
  • Debian estável (amd64)
  • Debian Instável (amd64)
  • Ubuntu 14.04 (amd64)

Como eu consegui configurar as contas de usuário em todas as máquinas igualmente? Quero que o nome, o nome longo, a senha e o UID sejam consistentes.

No futuro, eu gostaria de unificar outras partes da configuração, talvez

  • HTCondor
  • Pontos de montagem (Samba)
  • /etc/apt/sources.list
  • Atualizações autônomas

Como eu uso diferentes variantes do Ubuntu e do Debian, as sources.listdiferenças serão um pouco, mas serão as mesmas em cada distribuição.

Qual seria uma boa abordagem para isso?

Martin Ueding
fonte
1
Você deve configurar todos os usuários como ldapusuários.
Ramesh 06/07
1
@Ramesh Isso significa que os usuários só podem fazer login quando houver uma conexão de rede?
Martin Ueding
Sim. Você pode precisar da conexão de rede para ldapfuncionar. Mas evita a necessidade de configurar usuários em todas as máquinas.
Ramesh
Existe uma máquina que esteja sempre ligada e acessível pela rede? Existe uma máquina sempre ligada e acessível quando você deseja alterar sua senha?
Gilles 'SO- stop be evil'
1
@ramesh Você pode ter LDAP offline usando o SSSD .
226 Patrick Patrick

Respostas:

13

Você basicamente tem 2 opções.

  1. Use o sistema de autenticação local de cada máquina e envie as alterações de credenciais para todas elas.
  2. Use um servidor de autenticação centralizado.

1. Autenticação local sincronizada

Existem vários produtos que fazem isso facilmente. Puppet , Chef , Ansible e Salt são alguns dos mais comuns. Todas essas ferramentas se enquadram no que é conhecido como " Gerenciamento de configuração ".

Basicamente, você teria um repositório no qual define suas credenciais de autenticação como código. O "código" seria tão simples quanto uma diretiva que especifique o nome de usuário e a senha com hash. Em seguida, você sincronizaria esse código com todas as suas máquinas e executaria a ferramenta CM escolhida. A ferramenta CM atualizaria as credenciais de autenticação local de cada usuário (também criando o usuário, se necessário).

Como você disse que também deseja fazer outros tipos de configuração, essa pode ser a solução mais apropriada.

2. Autenticação centralizada

A forma mais comum de autenticação centralizada é o LDAP. A execução de um servidor LDAP pode parecer assustadora, mas existem algumas boas soluções em pacotes, como o FreeIPA, que o tornam facilmente gerenciável.

Agora, um dos seus primeiros pensamentos pode ser: "Quero que a autenticação funcione mesmo se o servidor central estiver inativo". Isso é facilmente realizado usando o SSSD . Quando um usuário entra pela primeira vez em um servidor, o SSSD consulta LDAP (ou kerberos, se empregado) e, se as credenciais são válidas, ele as armazena em cache na máquina local. Se o servidor LDAP não estiver disponível, ele voltará a usar seu cache. Portanto, desde que um usuário tenha se conectado uma vez, ele poderá continuar se o LDAP estiver indisponível.

3. Combinação dos dois

Você também pode usar uma combinação das duas soluções. Isso é muito comum em ambientes corporativos de grande escala, mas também pode ser empregado em pequena escala. Basicamente, você teria um servidor de autenticação centralizado e usaria uma ferramenta CM para configurar os clientes para usá-lo.

Patrick
fonte
Muito obrigado, isso deve me dar pontos de partida suficientes! :-)
Martin Ueding 07/07