O Sudo não pode resolver o nome do host

2
$ curl http://google.de  # DNS resolution works fine
...
$ sudo curl http://google.de
curl: (6) Couldn't resolve host 'google.de'

$ echo $http_proxy
http://proxy:8080

$ cat /etc/hosts
127.0.0.1   localhost.localdomain localhost
127.0.1.1   debian
# ip6-stuff below

$ hostname
debian

Estou usando o Debian squeeze (LXDE) dentro do VirtualBox e posso fazer coisas de administração através de um console root real ou via su root . Eu adicionei meu usuário ao grupo de sudoers e posso fazer coisas como editar via sudo, por exemplo, sudo vim /etc/hosts . Gostaria de usar sudo em vez de su root .

Por que curl (e outras ferramentas como aptitude ) não conseguem resolver os nomes de host, mas ao usá-los como usuário normal ou raiz simples, tudo funciona bem?

Edit: Aqui está a solução (Thx para Paul):

$ sudo visudo
# add this line
Defaults        env_keep = "http_proxy https_proxy ftp_proxy"
# above this line
Defaults        env_reset
    
por Juve 25.11.2011 / 14:02

1 resposta

2

Quando você está executando o sudo, você está executando um novo shell como root, no qual o comando é executado. Apenas as variáveis de ambiente no arquivo / etc / sudoers são copiadas para o novo shell.

Para contornar isso por um comando que você pode fazer

sudo env http_proxy=$http_proxy curl http://google.de

Ou você pode editar / etc / sudoers (usar visudo!) e adicionar

Defaults     env_keep = http_proxy

Isso passará a variável automaticamente.

    
por 25.11.2011 / 14:13