Quando raiz, fonte de outro usuário ~ / .bashrc e obter todas as variáveis de ambiente

0

Estou tentando desenvolver um aplicativo de sistema pequeno que é executado como root. Neste aplicativo, gostaria de listar todas as variáveis de ambiente do usuário padrão (não o $USER , mas o usuário que chama executa o aplicativo como raiz, ou seja, $SUDO_USER ). Como o aplicativo não é executado em um terminal e depende de um processo aberto pelo ambiente C no Qt, eu gostaria de primeiro preparar o ambiente e, em seguida, obter as variáveis de ambiente neste subprocesso.

O que estou tentando realizar é equivalente a:

  • Alterar da raiz para o usuário
  • source ~ / .bashrc ou ~ / .profile etc.
  • printenv [e obtenha depois do script]
  • Alterar para raiz novamente

Existem algumas soluções que descobri e li on-line, mas descobri que essas soluções alternativas (para executar um comando como outro usuário) não ajudam no que estou tentando alcançar.

Eu preciso de um one-liner para a tarefa acima mencionada. O que eu tenho agora é dado abaixo (run as root):

sudo -i -u user sh -c '. /home/user/.bashrc && printenv > /tmp/user.env'

Embora eu possa ver algumas variáveis de ambiente com isso, não consigo ver as customizadas exportadas de /home/user/.bashrc

Qualquer orientação é apreciada,

Em caso de falta de informação, por favor me avise.

Atenciosamente,

    
por mozcelikors 07.02.2018 / 19:06

1 resposta

0

Eu tentei o seu comando e parece-me que ele está funcionando apenas para encontrar.

sudo -i -u user1 sh -c 'source ~/.bashrc && printenv > /tmp/user.env'

Eu usei o comando origem em vez de .

Com ~/.bashrc contendo:

[ws] root ~ >cat /home/user1/.bashrc 
# .bashrc
...
export TESTENV="test"
...

execute seu comando e exiba o conteúdo de /tmp/user.env :

[ws] root ~ >sudo -i -u user1 sh -c 'source ~/.bashrc && printenv > /tmp/user.env'

[ws] root ~ >cat /tmp/user.env 
...
SHELL=/bin/bash
USER=user1
SUDO_COMMAND=/bin/bash -c sh -c source\ ~/.bashrc\ &&\ printenv\ >\ 
...
TESTENV=test
...
[ws] root ~ >
    
por 07.02.2018 / 19:39