Você não quer fazer isso.
Morda a bala, crie os usuários e conceda a eles acesso ao sudo.
Estou tentando escrever um módulo PAM que, no login, irá comparar o nome de usuário fornecido com uma lista de nomes de usuário "virtuais". Se o nome de usuário fornecido for um "usuário virtual", ele concluirá a autenticação, alterará o nome de usuário para algum usuário local real e continuará com o processo de login.
Ao tentar fazer isso, percebi que não é possível (pelo menos não por padrão) alterar o nome de usuário no OpenSSH - você está preso àquele que você forneceu na primeira tentativa de autenticação e não pode use a funcionalidade de troca de nome de usuário do PAM para alterá-lo.
Existe uma maneira de permitir isso? (Modificar o código OpenSSH também é uma opção válida, mas certamente não é a preferida.)
Você não quer fazer isso.
Morda a bala, crie os usuários e conceda a eles acesso ao sudo.
Você está tentando resolver um problema com um bisturi, mas o que você precisa é de uma pedra grande. Considere:
Os nomes de usuários Unix são mapeados para IDs de usuário numéricos.
Esse é um mapeamento de muitos para muitos sem restrições.
Portanto, nada o impede de criar um grupo de contas ( guest
, external
, random
e mapear todas elas para o mesmo ID numérico, diretório pessoal, etc. - Basta editar seu arquivo de senha e adicionar vários usuários com o mesmo ID numérico de usuário (e grupo).
Você poderia até fazer isso por root
(UID 0) se quisesse - Na verdade * os sistemas BSD normalmente vêm com uma conta toor
com UID 0, que tem sua senha bloqueada e não consegue efetuar login
(A maioria dos administradores remover esta conta, fora de um nível adequado de paranóia ...)
Esta é uma solução um pouco brutal, sem qualquer nível de estilo ou finesse, mas simples é geralmente melhor.
Advertências:
whoami
, ou quando você olhar para eles em w
/ who
output, normalmente verá o primeiro nome de usuário que aparece no arquivo de senha para um determinado UID numérico, mas você veja isso de qualquer maneira com as soluções que você descreveu acima. authorized_keys
file), ele será mapeado para o diretório inicial do usuário. Se todos os seus usuários compartilharem um diretório inicial, eles compartilharão um arquivo authorized_keys
. Já pensou em instalar um wrapper que faz o su (1) como o shell do usuário? Certifique-se de "su -" ....
Eu não estou afirmando que esta é uma solução totalmente segura, mas também não é um problema totalmente seguro.