Quando o executor fantoche é um usuário, como posso obter o ambiente definido para esse usuário?

7

Tenho notado que, quando eu uso a opção user em exec , não é necessário o ambiente do usuário especificado.

$ sudo -i puppet apply -e "exec { '/usr/bin/env': logoutput => true, user => nobody}" 
notice: /Stage[main]//Exec[/usr/bin/env]/returns: SHELL=/bin/bash
notice: /Stage[main]//Exec[/usr/bin/env]/returns: USER=root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: USERNAME=root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
notice: /Stage[main]//Exec[/usr/bin/env]/returns: MAIL=/var/mail/root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: PWD=/root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: HOME=/root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: LOGNAME=root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: executed successfully

Assim, enquanto o comando é executado como nobody , USER , HOME , etc. não está definido como esperado. Existe alguma maneira de obter exec para simular um shell de login para que o ambiente seja configurado como esperado?

    
por leedm777 02.05.2012 / 16:52

2 respostas

11

Não é possível obter exec para simular um shell de login. Você sempre pode usar su - (como sugerido por womble ) para conseguir produzir um shell de login, mas se tudo que você quer são variáveis de ambiente controladas pelo Puppet, apenas use o parâmetro environment .

    
por 02.05.2012 / 20:51
7

Claro, execute o comando via su - em vez de especificar o usuário no manifesto.

    
por 02.05.2012 / 17:10

Tags