quando você inicializa pela primeira vez e é recebido com o brilho quente de uma tela preta e um prompt piscando, que programa é esse? Qual programa lida com a avaliação das credenciais? Ou melhor, qual é o componente do código-fonte? Posso estar me confundindo, mas acho que os vários shells de usuário são carregados após a autenticação do usuário.
... o que pode significar que o bash é iniciado no modo de usuário único e, em seguida, o bash verifica as credenciais e inicia um shell de usuário? (acho que é assim que funciona)
(Estou interessado em adicionar um recurso ao processo de verificação de credenciais, mas estou analisando o código-fonte do bash e não sei por onde começar.)
Eu tenho apenas um entendimento rudimentar, no entanto, vou postar isso para você começar:
Primeiro, você não faz login em um shell, você faz login em um terminal (virtual).
um
getty
programa abre uma porta tty, solicita um nome de login e invoca um programa de login (/bin/login
por padrão - embora o Linuxagetty
possa ser configurado para usar um programa de login não padrão)o programa de login executa a autenticação e a configuração da sessão, incluindo a inicialização do ambiente e a chamada do shell de login do usuário.
Nos sistemas Ubuntu atuais,
getty
é gerenciado como um serviço systemd (ex.[email protected]
para o terminal virtual tty1) elogin
usa o subsistema Pluggable Authentication Modules (PAM) para autenticação - em particular, opam_unix
módulo é "para autenticação de senha tradicional".Para seu objetivo declarado ( "adicionar um recurso ao processo de verificação de credenciais" ), você provavelmente gostaria de considerar a implementação de um módulo PAM personalizado e inseri-lo em um local apropriado na pilha PAM; um modelo para isso é descrito aqui:
Veja também:
10.1. Logins por meio de terminais do Guia do Administrador do Sistema Linux: CapÃtulo 10. Fazendo login e logout
A página do archwiki getty