Qual é a vantagem de sincronizar UID / GID em máquinas Linux?

24

Antes de me aprofundar em como sincronizar UIDs / GIDs em minhas diferentes máquinas Linux, gostaria de saber qual é realmente o benefício?

Eu sei que isso mantém a sincronização de arquivos relativamente fácil (como a propriedade é "naturalmente" mantida). No entanto, isso também pode ser alcançado, dependendo do serviço de transmissão.

Existe mais alguma coisa que se beneficiaria de UIDs / GIDs consistentes?

alex
fonte
4
Não esqueça, ao alterar uid / gid, para atualizar arquivos (arquivos tar, etc.) e também arquivos conf que podem usar IDs numéricos em vez de uidname / groupnames.
Olivier Dulac

Respostas:

31

dívida técnica

Pelas razões abaixo, é muito mais simples resolver esse problema desde o início, para evitar o acúmulo de dívida técnica . Mesmo se você já se encontra nessa situação, provavelmente é melhor lidar com isso em um futuro próximo do que deixá-lo continuar se desenvolvendo.

sistemas de arquivos em rede

Essa pergunta parece estar focada no escopo restrito da transferência de arquivos entre máquinas com sistemas de arquivos locais, o que permite estados de propriedade específicos da máquina.

As considerações sobre o sistema de arquivos em rede são facilmente o maior argumento para tentar manter seus mapeamentos UID / GID sincronizados, porque geralmente você pode lançar o "feito de outra maneira" que você mencionou pela janela no momento em que entram na imagem. Claro, você pode não ter sistemas de arquivos em rede compartilhados entre esses hosts agora ... mas e o futuro? Você pode dizer honestamente que nunca haverá um caso de uso para um sistema de arquivos em rede sendo introduzido entre os hosts atuais ou os hosts criados no futuro? Não é muito antecipado assumir o contrário.

Suponha que /homeseja um sistema de arquivos em rede compartilhado entre host1e host2nos exemplos a seguir.

  • Permissões discordantes : /home/user1pertence a um usuário diferente em cada sistema. Isso impede que um usuário possa acessar ou modificar consistentemente seu diretório pessoal nos sistemas.
  • chown wars : é muito comum que um usuário envie um ticket solicitando que suas permissões de diretório inicial sejam fixadas em um sistema específico. A correção desse problema host2interrompe as permissões host1. Às vezes, pode levar vários desses tíquetes para serem trabalhados antes que alguém dê um passo para trás e perceba que um cabo de guerra está em jogo. A única solução é corrigir os mapeamentos de ID discordantes. O que leva a...
  • Reequilíbrio UID / GID : a complexidade da correção de IDs aumenta posteriormente exponencialmente pelo número de remapeamentos envolvidos para corrigir um único usuário em várias máquinas. ( user1tem o ID de user2, mas user2tem o ID de user17... e esse é apenas o primeiro sistema no cluster). Quanto mais você esperar para corrigir o problema, mais complexas essas cadeias podem se tornar, geralmente exigindo o tempo de inatividade de aplicativos em vários servidores para que as coisas sejam sincronizadas corretamente.
  • Problemas de segurança : user2on host2tem o mesmo UID que user1on host1, permitindo que eles gravem /home/user1on host2sem o conhecimento de user1. Essas alterações são avaliadas host1com as permissões de user1. O que poderia dar errado? (se user1é um usuário do aplicativo, alguém em dev vai descobrir que é gravável e vai fazer alterações. este é um fato comprovado tempo.)

Existem outros cenários, e esses são apenas exemplos dos mais comuns.

nomes nem sempre são uma opção

Quaisquer scripts ou arquivos de configuração gravados com IDs numéricos tornam-se inerentemente não portáveis ​​em seu ambiente. Geralmente, isso não é um problema, porque a maioria das pessoas não codifica essas informações a menos que seja absolutamente necessário ... mas às vezes a ferramenta com a qual você está trabalhando não oferece uma opção. Nesses cenários, você é forçado a manter n versões diferentes do script ou arquivo de configuração.

Exemplo: pam_succeed_ifpermite que você use campos de user, uide gid... uma opção de "grupo" é conspicuamente ausente. Se você fosse colocado em uma posição em que vários sistemas deveriam implementar alguma forma de restrição de acesso baseada em grupo, você teria n variações diferentes das configurações do PAM. (ou pelo menos um único GID no qual você precisa evitar colisões)

gerenciamento centralizado

A resposta da natxo cobriu isso muito bem.

Andrew B
fonte
Não tenho tanta certeza de que seja correto dizer que o uso de um sistema de arquivos em rede evite corrigir problemas com uids diferentes. Sei que pelo menos um sistema de arquivos suporta um mapa de uid, permitindo especificar quais grupos e usuários serão compatíveis em máquinas diferentes.
Vality
@Vality Se fosse uma solução comumente disponível, eu ainda hesitaria em chamá-la de escalável.
Andrew B
Concordo, simplesmente não queria fazer o OP achar impossível, concordo amplamente com a sua sugestão de que a melhor solução é mantê-los sincronizados.
Vality
obrigado! Infelizmente, "cedo" se foi há muito tempo. Embora eu saiba que algumas configurações do ldap / kerberos são algo que eu gostaria de incluir aqui onde trabalho, mas isso não seria agora. Por outras razões, eu estava especificamente interessado no uso de UID / GID em sistemas interoperantes. Como eu disse, a transferência de arquivos é um problema (que atualmente possui o status "funciona"), foi por isso que eu queria saber se há outras coisas (como você mencionou) também afetadas pelos UIDs. Você poderia adicionar algumas palavras-chave desses "outros cenários"? Isso tornaria uma resposta esplêndida!
alex
@ alex Bem, eu quis dizer "outros cenários" em termos de problemas no sistema de arquivos em rede. Não importa o quão tarde você esteja no jogo, o problema só piora quando é deixado sem solução. Se os motivos que fornecemos não forem adequados, provavelmente ajudaria se você dirigisse sua pergunta um pouco mais, fornecendo esses "outros motivos". As respostas fornecidas até agora são muito boas na minha opinião. Se você está tentando persuadir a gerência, não cabe a nós fazê-los fazer a coisa certa.
Andrew B
18

Depois de atingir um determinado tamanho (e é sempre mais cedo do que você pensa), você perceberá que alterar suas senhas ou desativar contas para alguém em todos os hosts é uma PITA. É por isso que as pessoas usam sistemas com bancos de dados LDAP (ou NIS, mas não fazem isso, não são seguros hoje em dia) como o openldap ou hoje em dia a excelente freeipa.

Você mantém todas as informações de contas / grupos em um banco de dados central, todos os hosts compartilham essas informações. Você pode fazer muito mais coisas a partir daí: é claro, use as informações dos usuários para obter permissões de arquivo, mas também crie usuários virtuais para todos os aplicativos que possuem ligações ldap, em vez de ter que criar seus usuários também (muitos aplicativos da Web podem usar LDAP para o banco de dados do usuário), mantém um banco de dados central de regras do sudo, distribui o ambiente de autofs, mantém as zonas de DNS, ...

natxo asenjo
fonte