É possível separar contas unix que compartilham um nome de usuário, mas possuem senhas separadas?

2

Em sistemas unix, cada conta de usuário separada possui um nome de usuário exclusivo. As senhas, portanto, não são exclusivas - cada usuário distinto pode ter a mesma senha exata.

Eu quero fazer o inverso. Eu quero um nome de usuário, mas eu quero que o nome de login tenha várias senhas. Dependendo da senha, você estaria conectado a uma conta diferente (com um UID diferente) ou simplesmente teria um diretório inicial diferente.

O objetivo é que duas entidades separadas compartilhem o mesmo nome de usuário, mas tenham seus arquivos separados. Nesse caso, as permissões de arquivo entre diferentes UIDs são menos importantes.

Alguma ideia de como realizar isso ou algo parecido? Algum abuso de / etc / shadow ou PAM?

Isso é algo que poderia ser feito escrevendo um módulo PAM (eu nunca escrevi um antes? É muito difícil?)

    
por poundifdef 12.12.2011 / 08:11

4 respostas

8

Eu não acredito que isso seja possível. Você poderia ter duas entradas em /etc/passwd com os mesmos nomes de usuário, mas diferentes UIDs, mas o sistema provavelmente ignoraria o segundo (ou se comportaria mal de alguma forma); indiscutivelmente tal arquivo /etc/passwd seria considerado corrupto.

Quando você faz login no sistema, é solicitado primeiro seu nome de usuário. Feito isso, o sistema solicita sua senha e verifica se a senha inserida corresponde à senha da conta correspondente a esse nome de usuário. No momento em que você digita sua senha, o sistema já determinou qual conta você está tentando acessar.

Suponho que você poderia modificar várias partes do sistema para obter o comportamento desejado, mas teria que substituir vários softwares diferentes, incluindo qualquer coisa que autentique e autorize usuários (login do console, su, ssh e qualquer outra coisa outros métodos estão habilitados). Quaisquer erros provavelmente abririam buracos enormes na segurança.

EDITAR: Com base nos comentários, o PAM é provavelmente a maneira de fazer isso. Eu não estou familiarizado o suficiente com o PAM para entrar em mais detalhes. (Ainda é uma má ideia.)

    
por 12.12.2011 / 09:29
3

Eu não verifiquei duplamente os documentos da API para ter certeza absoluta, mas provavelmente é possível encontrar uma maneira de fazer isso com o PAM. Provavelmente não é tão difícil assim. Você pode até conseguir fazer isso com os módulos PAM existentes.

Não que você deveria. Há muitas coisas que basicamente assumem que um nome mapeia para um e apenas um id de usuário. Por exemplo, getpwnam na biblioteca C. Eu certamente não quero isso em nenhum sistema que tenho que manter; Espero que a quebra aleatória seja rotineira.

Além disso, isso não significa muito para você / os objetivos de seu amigo: primeiro, se você tiver acesso físico a um PC, a obtenção do root é fácil; segundo, ele não enganará ninguém - será óbvio que as coisas estão faltando (por que o documento X está faltando, por que não há histórico de navegador, por que não há extensões do Firefox, por que o tempo de modificação e acesso de todos arquivos antigos, etc.)

    
por 12.12.2011 / 18:26
1

Na teoria, isso é possível, mas geralmente é uma má ideia, o que explica por que você não encontrará nenhum programa pronto para isso.

O que você está pedindo é ter contas separadas com a mesma identidade publicamente visível. Como são contas separadas, elas possuem identidades verdadeiras distintas. Apresentado desta maneira, pode ser sensato (com as identidades privadas usadas para permissões e em logs). Não consigo pensar em nada que exista no nível geral de autenticação do usuário.

No entanto, não acho que isso possa atender às suas metas que um dos usuários acredita estar usando uma conta compartilhada. Você precisaria fazer muito mais do que fingir que seu nome de usuário é o mesmo: você precisaria falsificar o compartilhamento de arquivos (se eles excluírem um arquivo e perceber que você ainda o está usando) em. Neste ponto, você também pode usar um nome de usuário diferente.

Portanto, crie uma conta para você e crie outra conta compartilhada que você apenas pretende usar. Para uma melhor separação, crie essas contas em máquinas virtuais separadas (por exemplo, usando LXC ).

    
por 13.12.2011 / 02:13
1

Acho que o login duplo pode ser feito com dois (ou mais) back-ends de autenticação do PAM. Por exemplo, se estiver usando o LDAP e o login normal do usuário passwd / shadow, se a entrada da senha falhar por algumas vezes no primeiro método, o PAM volta para o segundo.

Pelo menos foi isso que eu encontrei alguns anos atrás quando usamos essa mesma configuração.

Se isso significaria que userID-s diferentes seriam usados, não posso dizer, mas talvez sim, porque o LDAP poderia mapear o mesmo nome de usuário para um ID de usuário diferente.

Mas, de qualquer forma, isso significaria que você teria que criar logins com falha (2 ou 3 vezes, se bem me lembro) sempre que quiser fazer login em sua máquina. Então não é tão confortável.

Mas, mesmo assim, isso geraria os mesmos problemas mencionados acima por outros, já que o sistema procuraria por tudo no back-end primário, de modo que ele devolveria as informações do login falso.

    
por 29.04.2013 / 10:49