Como o ssh ou qualquer outro serviço funciona sem o pam?

1

Eu não entendo como o ssh ou qualquer outro serviço pode funcionar sem o pam. pam define todas as regras, se bem entendi, chama outros módulos para definir recursos ou restrições etc.

Alguém pode explicar como se comporta o SSH, se definirmos UsePam=No ? Quais módulos cuidam da autenticação, criação de sessões, etc.?

    
por GP92 03.06.2018 / 19:22

1 resposta

3

Se você definir UsePam no , então sshd fará o trabalho dos módulos PAM, da melhor maneira possível.

Como sshd está sendo executado como root, ele pode usar a função getspnam(3) para obter o hash de senha do usuário e outras informações de /etc/shadow (ou do NIS, LDAP ou qualquer outro local de armazenamento suportado pela biblioteca C do sistema), selecione o algoritmo de hashing de senha observando o início do hash e, em seguida, o hash da senha digitada pelo usuário com o salt do resultado getspnam(3) usando crypt(3) . O resultado é comparado ao hash de senha completo recuperado por getspnam(3) . Se eles corresponderem, a autenticação de senha será bem-sucedida.

A etapa de verificação de conta é novamente muito simples: as informações de expiração de senha estão incluídas nos resultados getspnam(3) e outra verificação é feita de que o shell do usuário existe e está listado em /etc/shells .

A criação de sessão inclui várias etapas cujos detalhes dependem do tipo de Linux ou Unix em que o serviço está sendo executado. Mas, normalmente, para uma sessão de shell, o processo sshd filho manipulando essa conexão específica registraria as informações da sessão nos arquivos utmp e wtmp , configuraria um pseudo-TTY e, em seguida, fork() outro processo-filho Assumir as associações de usuário e grupo do usuário, alternar para o diretório base do usuário e chamar setsid() para se tornar um líder de sessão. Esse processo, então, exec() do shell do usuário.

Quando o shell morre, o processo filho sshd que mantém a extremidade principal do pseudo-TTY executa as ações de limpeza necessárias, como gravar o final da sessão no arquivo wtmp .

Isso é mais ou menos como uma sessão Unix foi tratada antes de o PAM ser inventado.

    
por 03.06.2018 / 23:51

Tags