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.