“AND Operator” no PAM

2

Eu preciso impedir que os usuários autentiquem através do Kerberos quando o /home/users criptografado ainda não foi montado. (Isto é para evitar corromper o ponto de montagem do ecryptfs)

Atualmente, tenho essas linhas em /etc/pam.d/common-auth :

auth    required                        pam_group.so use_first_pass
auth    [success=2 default=ignore]      pam_krb5.so minimum_uid=1000 try_first_pass
auth    [success=1 default=ignore]      pam_unix.so nullok_secure try_first_pass

Estou planejando usar o pam_exec.so para executar um script que exit 1 se as montagens do ecyptf ainda não estiverem prontas.

Fazendo isso:

auth    required        pam_exec.so     /etc/security/check_ecryptfs

irá bloquear-me para sempre se o ecryptfs falhar por algum motivo. Nesse caso, gostaria de pelo menos fazer o login com um usuário local (não kerberos) para corrigir o problema.

Existe algum tipo de AND-Operator no qual eu possa dizer que o login através do kerberos + ldap é suficiente apenas se a autenticação do kerberos e a montagem do ecryptfs for bem-sucedida?

    
por d_inevitable 06.04.2012 / 21:53

1 resposta

1

Não estou ciente de nenhum operador AND para o PAM, mas você pode obter o mesmo efeito com instruções de controle. Segundo o meu comentário, isso é muito hacky, mas deve fazer o trabalho.

Em seu script de verificação, retorne um código de erro específico do PAM (provavelmente PAM_SYSTEM_ERR ) e, em seguida, use as instruções de controle em seu arquivo common-auth da seguinte forma:

auth    required                        pam_group.so use_first_pass
auth    [success=ok default=1]          pam_exec.so /etc/security/check_ecryptfs
auth    [success=2 default=ignore]      pam_krb5.so minimum_uid=1000 try_first_pass
auth    [success=1 default=ignore]      pam_unix.so nullok_secure try_first_pass

As instruções de controle para o módulo pam_exec devem fazer com que o PAM vá para o próximo módulo (pam_krb5) em caso de sucesso, e pule para pam_unix se pam_exe retornar qualquer outro código de retorno. Você precisará ter certeza de que seu módulo realmente retorna o código de sucesso. Veja a fonte .

Referência adicional:

por cqcallaw 07.04.2012 / 18:45