Onde o Linux verifica as senhas?

5

Eu sei que as senhas são armazenadas em /etc/shadow

No entanto, durante o processo de login, estou assumindo que o Linux usa seu nome de usuário e senha como argumento, criptografa sua senha com o mesmo algoritmo e a compara com aquela armazenada na sombra.

Minha pergunta é: onde ocorre esse processo? (o código) Eu tentei procurar no PAM, mas também não encontrei nada útil.

    
por Ryan 11.12.2016 / 07:21

2 respostas

3

Dentro do PAM, para uma senha local armazenada em /etc/shadow , a tarefa de verificar a senha é executada por pam_unix .

Por baixo da capa, a verificação é feita pela função crypt . (Na verdade, na maioria dos casos, por crypt_r .) Observe que, apesar do nome , esta função não criptografa ou descriptografa a senha, o hashes a senha. O campo de senha em /etc/shadow contém parâmetros para o hash, bem como o valor de hash real.

O código-fonte do módulo pam_unix é parte do Linux-PAM . O código-fonte da função crypt é parte da biblioteca C ( Glibc ).

    
por 12.12.2016 / 03:13
3

I know that passwords are stored in /etc/shadow

Como Gilles já afirmou, somente hashes de senha são armazenados em /etc/shadow , além disso, esse é apenas um dos possíveis locais, eles podem ser armazenados globalmente em um servidor ldap ou uma tabela NIS .

However, during the login process, I'm assuming that Linux take your username and password as an argument, encrypt your password with the same algorithm and compare it to the one stored in the shadow.

O processo é muito mais flexível do que isso. Dependendo da configuração PAM , o sistema poderá verificar vários módulos em seqüência e parará se um dos módulos for bem-sucedido e declarado como suficiente ou, alternativamente, se um módulo falhar e for declarado como requisito. Os módulos são capazes de estabelecer uma caixa de diálogo com o usuário tentando fazer o login, portanto, o que é fornecido não é necessariamente um par de nome de usuário / senha. Por exemplo, um usuário pode receber acesso sem fornecer nenhuma senha ao usar rlogin ( pam_rhosts_auth ). Ele deve ser avisado de que a senha está prestes a expirar, ser solicitado a alterar uma senha expirada e tarefas interativas semelhantes.

My question is, where does this process take place? (the code) I tried to search the PAM but I couldn't find anything useful there either.

Gilles também já respondeu a essa pergunta, pam_unix está lidando com /etc/passwd et /etc/shadow entradas de arquivos.

    
por 12.12.2016 / 16:18