Acredito que a primeira linha em /etc/pam.d/su
seja assim:
auth sufficient pam_rootok.so
Em outras palavras, quando você tenta autorizar o seu se tornar jdoe, tudo parece bem.
O que você pode fazer é adicionar sua pam_succeed_if
linha a /etc/pam.d/su
ou, muito melhor, adicionar uma entrada a /etc/pam.d/system-auth
, mas modificá-la para que auth
se torne session
assim:
session requisite pam_succeed_if.so user ingroup ad_group debug
Isso será acionado mesmo na situação que você descreveu e não permitirá que um usuário do non ad_group abra um shell. Isso também teria o infeliz efeito colateral de restringir root
de abrir um shell (como apontado nos comentários), então você pode precisar aplicá-lo apenas para ids de usuários no intervalo correto:
session [default=1 success=ignore] pam_succeed_if.so quiet uid >= 1000
session requisite pam_succeed_if.so user ingroup ad_group debug
A propósito, ssh
também pode ignorar o PAM se você estiver autenticando com uma chave pública, então é melhor usar session
em vez de auth
.