O diretório /etc/pam.d é utilizado para configurar as aplicações que utilizem PAM (em versões anteriores era utilizado o arquivo /etc/pam.conf. Apesar de ainda ser lido caso não esteja presente em /ect/pam.d, seu uso não é recomendado). Cada aplicação (na verdade, cada serviço) tem o seu próprio arquivo. Um arquivo tem um conteúdo similar a:
#%PAM-1.0 auth required /lib/security/pam_securetty.so auth required /lib/security/pam_pwdb.so shadow nullok auth required /lib/security/pam_nologin.so account required /lib/security/pam_pwdb.so password required /lib/security/pam_cracklib.so password required /lib/security/pam_pwdb.so shadow nullok use_authtok session required /lib/security/pam_pwdb.so
A primeira linha é um comentário (começando por #).
As próximas três linhas definem os três módulos que serão usados na autenticação de usuários. A segunda linha garante que o acesso ao sistema como superusuário somente poderá ser realizado através de terminais que estejam listados no arquivo /etc/securetty, caso ele exista. A terceira linha cria a exigência de informação de senha e sua validação para a liberação de acesso ao sistema. A quarta verifica se o arquivo /etc/nologin existe, e caso isso ocorra, mostra o conteúdo do arquivo e permite acesso ao sistema somente para o superusuário (útil para intervalos de manutenção de sistema). Todos os três módulos serão executados, mesmo que o módulo anterior negue o acesso ao sistema.
Por questões de segurança, o sistema não avisa ao usuário porque seu acesso foi negado, dificultando um eventual acesso indevido.
A quinta linha define os módulos de controle que serão ativados. Por exemplo caso o sistema de senhas sombra esteja ativado, o módulo pam_pwdb.so verificará se a conta ou a senha não estão expiradas, ou se o período de troca obrigatória de senhas não foi atingido.
A sexta linha submete uma nova senha a uma série de testes para garantir que ela não seja facilmente descoberta, por exemplo, por um programa de quebra de senhas baseado em dicionários.
A sétima linha especifica que o programa a ser utilizado na troca de senhas, quando necessário, será o pam_pwdb.so (ele somente será acionado se o módulo auth determinar que a senha deva ser trocada).
A última linha especifica que o módulo pam_pwdb.so deve ser usado para gerenciar a sessão. Atualmente este módulo não tem uma função específica, e pode ser substituído por qualquer outro módulo necessário.
Note que a ordem das linhas em cada arquivo é importante, ainda que não necessariamente em que ordem os arquivos required sejam chamados, há outros indicadores de controle disponíveis. Já que um módulo optional é raramente usado pelo padrão do Conectiva Linux, sufficient e requisite tornam a ordem das linhas importante.
Por exemplo, o arquivo de configuração do comando rlogin tem o seguinte conteúdo:
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_nologin.so
auth sufficient /lib/security/pam_rhosts_auth.so
auth required /lib/security/pam_pwdb.so shadow nullok
É muito similar ao arquivo de login, porém há uma linha adicional que especifica um módulo extra e a ordem dos módulos é diferente.
Inicialmente pam_securetty mantém a proibição de login do superusuário a partir de terminais sem segurança, o que inibe o rlogin para o superusuário. Caso isso seja necessário (apesar de não recomendado) basta remover esta linha.
Após, o módulo pam_nologin checa a existência do arquivo /etc/nologin conforme descrito anteriormente.
Na terceira linha temos o módulo pam_rhosts_auth.so que autentica o usuário e imediatamente apresenta um retorno positivo ao rlogin sem que a senha seja fornecida. Caso este módulo não autorize o usuário a próxima linha será executada.
Finalmente o módulo pam.pwdb.so executará uma autenticação normal, desde que o módulo anterior já não tenha autorizado o usuário. É possível não solicitar uma senha, caso a checagem do módulo pam_securetty.so não autorize o acesso. Para tanto basta alterar o parâmetro required para requisite.