Usando o pam_exec.so para executar um script como root quando um usuário efetua login (ao extrair informações do usuário)?

2

Pergunta

Como posso executar um script como root quando um usuário faz login com pam_exec.so (ou outro)? O script requer informações sobre o usuário para funcionar.

Problema e Ambiente

Eu gostaria de executar um script - /path/script.sh - como raiz toda vez que um usuário faz login. Também preciso conhecer o usuário que efetuou login (como uma variável de ambiente ou argumento para o script, por exemplo). Eu estou em uma versão recente do CentOS 7.

No momento, estou editando /etc/pam.d/system-auth e adicionando a seguinte linha:

session     optional     pam_exec.so /path/script.sh

Isso funciona bem quando eu me tornar o usuário com sudo su , mas não funciona se eu autenticar o usuário de outra forma (o script deve ser executado como root). Em outras palavras,

$ su - robot7
Password: 
/path/script.sh failed: exit code 1
-bash-4.2$

falha enquanto

$ sudo su - robot7
Last login: Thu Jun 14 09:33:56 MDT 2018 on pts/5
-bash-4.2$

funciona e executa o script como esperado com uma ressalva: o script também é executado quando os usuários se desconectam. A variável $PAM_USER no segundo caso é o nome de usuário correto (robô7, não raiz).

Esse script será usado em um ambiente de produção em que os usuários não devem ser capazes de desativá-lo e podem ter shells diferentes; Não consigo usar scripts como .bashrc ou outros para executá-lo.

Se eu definir o comando em /etc/pam.d/system-auth para ser executado em auth e não session (conforme sugerido por perguntas semelhantes), nunca será executado.

Editar

Adicionar seteuid ao comando pam_exec.so permite que o script seja executado quando o usuário autentica ( su - robot7 ), mas não executa o script no SSH (que é o método principal com o qual os usuários fazem login). / p>     

por skyrocket 14.06.2018 / 17:47

1 resposta

0

O contexto de segurança impediu a execução do script. Os systemd logs sugeriram que o script não estava sendo executado, embora todos os usuários tivessem permissão para executá-lo; alguma política de segurança não gostou do caminho do script.

Mudei o script para /bin e os erros foram resolvidos imediatamente.

    
por 14.06.2018 / 18:53