Como posso monitorar as alterações feitas nas variáveis ​​de ambiente?

Como posso monitorar as alterações feitas nas variáveis ​​de ambiente?

Eu tenho uma variável de ambiente cujo valor não corresponde ao definido por/etc/environment, mesmo após a reinicialização. Acabei encontrando o script .sh executado automaticamente alterando-o, 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 carimbo de data/hora, variável acessada, conjunto de valores, usuário responsável e caminho para o script bash usado quando disponível. Nem todos são obrigatórios, mas quanto mais, melhor.

Por outro lado, estou usando atualmente o Ubuntu14.04, mas respostas sobre diferentes sistemas operacionais são muito bem-vindas.

Saúde

Responder1

Isso seria difícil.

Variáveis ​​de ambiente não são objetos monitoráveis ​​– elas existem na própria memória dos programas e são apenas um monte de texto que os processos passam para seus filhos. Portanto, é quase impossível auditar seusacessoem nível de sistema. Na melhor das hipóteses, você poderia usar stracepara ver qual ambiente é passado para novos processos durante a criação do processo (especificamente o execvesyscall) - presumindo que você consiga anexá-lo com antecedência suficiente.

(No entanto, strace não mostrará o que acontecedentroum processo. Portanto, se você tentar rastrear o bash, verá apenas com o que ele começa e o que acaba sendo transmitido, mas não verá o que os scripts /etc/profile.d individuais fazem.)

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

informação relacionada