sudo não preserva o TMPDIR

3

O sudo manpage me diz que eu posso preservar o ambiente passando a opção -E , que não funciona no caso de $TMPDIR :

> env | grep TMPDIR
TMPDIR=/localdata/tmp
> sudo env | grep TMPDIR
[no output]
> sudo -E env | grep TMPDIR
[no output]

Esta opção não está na lista negra, ou seja, sudo sudo -V não a lista como "Variáveis de ambiente a serem removidas". Seguindo a abordagem proposta em uma resposta, a pergunta " Como especificar as variáveis de ambiente do root ", Tentei colocar na lista de permissões, isto é, meu /etc/sudoers lê:

Defaults        env_reset
Defaults        env_keep = "TMPDIR"

Isso não funciona nem, na verdade, nem sequer faz TMPDIR aparecer na lista de permissões (isto é, o que '' sudo sudo -V 'imprime como "Variáveis de ambiente a serem preservadas".

(Estou executando o Ubuntu 10.04.)

    
por Mirko Vogel 14.02.2013 / 10:27

1 resposta

3

Parece que a glibc removerá certas variáveis de ambiente ao executar programas setuid ( sudo é, obviamente, setuid). O TMPDIR é uma dessas variáveis de ambiente, embora não pareça estar documentado em nenhum lugar. Este é um recurso de segurança para impedir que os programas setuid tenham seus ambientes alterados para permitir leitura / gravação maliciosa de dados de arquivos.

Se você quiser TMPDIR em seu ambiente sudo, poderá transmiti-lo explicitamente:

sudo TMPDIR=$TMPDIR env
    
por 15.02.2013 / 02:57