Como monitoro as alterações feitas nas variáveis de ambiente?

1

Eu tenho uma variável de ambiente cujo valor não corresponde ao definido por / etc / environment, mesmo após a reinicialização. Eu finalmente encontrei o script .sh auto-executado mudando, mas esse incidente me interessou.

Existe uma maneira de monitorar (ou registrar, ou o que estiver disponível) todas as alterações feitas no ambiente?

De preferência, com registro de data e hora, variável acessada, conjunto de valores, responsável pelo usuário e caminho para o script bash usado quando disponível. Nem todos são obrigatórios, mas quanto mais, melhor.

Em uma nota secundária, estou usando o Ubuntu14.04, mas respostas sobre sistemas operacionais diferentes são muito bem-vindas.

Felicidades

    
por bezout 02.02.2016 / 16:39

1 resposta

1

Isso seria difícil.

Variáveis de ambiente não são objetos monitoráveis - elas existem na própria memória do programa, e são apenas um monte de texto que os processos transmitem aos seus filhos. Portanto, é quase impossível auditar seu acesso no nível do sistema. Na melhor das hipóteses, você poderia usar strace para ver que env é passado para novos processos durante a criação do processo (especificamente o execve syscall) - assumindo que você consiga anexá-lo com antecedência suficiente.

(No entanto, strace não mostrará o que acontece dentro de um processo. Então, se você tentar rastrear o bash, você verá apenas com o que começa e o que acaba passando adiante, mas você não verá o que os scripts individuais do /etc/profile.d fazem.)

Isso também significa que scripts de bash não são a única coisa que pode afetar as variáveis. Muitos deles são, de fato, configurados pelos módulos PAM ou pelo próprio programa de login. Em particular, /etc/environment é normalmente lido pelo módulo "pam_env".

    
por 02.02.2016 / 17:49