Espero que alguém possa oferecer algumas dicas sobre esse problema, encontrei uma solução para executar um script antes de um login ssh. Isso foi feito colocando a seguinte linha em /etc/pam.d/sshd e permitindo a autenticação pam em /etc/ssh/sshd_config
session required pam_exec.so /home/pc/myScript.sh
E funcionou muito bem, o problema que notei foi que depois de sair da sessão SSH, o script seria executado novamente. Esse comportamento específico quebra completamente o propósito do meu script, existe alguma maneira de corrigir isso? Eu suponho que eu poderia escrever/ler de um arquivo sobre se é hora de executar, mas estou querendo saber se existe uma maneira melhor.
informação adicional
- SO é Fedora Server ARM 29
- Eu determinei que o script foi executado duas vezes executando
wall
no script de shell - Aqui está o meu /etc/pam.d/shhd
.
#%PAM-1.0
auth substack password-auth
auth include postlogin
account required pam_sepermit.so
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
### My script
session required pam_exec.so /home/pc/aScriptThatShouldOnlyRunOncePriorToLogin.sh
###
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session optional pam_motd.so
session include password-auth
session include postlogin
Você pode usar variáveis de ambiente disponíveis no PAM como
$PAM_TYPE
Edit: Ref: http://www.linux-pam.org/Linux-PAM-html/sag-pam_exec.html