Esta não é uma resposta completa, mas gostaria de saber se você poderia fazer isso usando o SSSD.
O módulo pam_sss
permite restringir um serviço a considerar somente domínios específicos em /etc/sssd/sssd.conf
. De pam_sss(8)
:
domains
Allows the administrator to restrict the domains a particular PAM service is allowed to authenticate against. The format is a comma-separated list of SSSD domain names, as specified in the sssd.conf file.
Em teoria, você poderia ter dois domínios apontando para o mesmo ambiente de autenticação upstream, mas com regras diferentes para mapear usuários para entidades.
Infelizmente, parece que o SSSD só suporta mapeamentos estáticos de nomes de usuários para nomes principais, o que não é muito escalável.
Atualizar
Também parece que versões mais recentes do módulo pam_krb5
suportam uma opção alt_auth_map
que <<> exatamente deseja o que você deseja. Ou seja, em /etc/pam.d/sudo
, posso fazer isso:
auth required pam_krb5.so alt_auth_map=%s/sudo only_alt_auth
... e agora sudo
sempre usará o <username>/sudo
principal para autenticação.
Esta versão do pam-krb5
é distribuída com o Ubuntu, mas presumivelmente pode-se construir um rpm e instalá-lo nos seus sistemas sem muito esforço.