Sudo не может разрешить имя хоста

$ 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

Я использую Debian Squeeze (LXDE) внутри VirtualBox и могу выполнять административные действия через настоящую корневую консоль или через su root, Я добавил своего пользователя в группу sudoers и могу делать такие вещи, как редактирование через sudo, например, sudo vim /etc/hosts, Я хотел бы использовать sudo вместо su root,

Почему curl (и другие инструменты, такие как aptitude) не в состоянии разрешить имена хостов, но при использовании их как обычного пользователя или обычного root все работает нормально?

Редактировать: вот решение (спасибо Павлу):

$ sudo visudo
# add this line
Defaults        env_keep = "http_proxy https_proxy ftp_proxy"
# above this line
Defaults        env_reset

1 ответ

Решение

Когда вы запускаете sudo, вы запускаете новую оболочку от имени root, в которой выполняется команда. Только переменные окружения в файле / etc / sudoers копируются в новую оболочку.

Чтобы обойти это за одну команду, вы можете сделать

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

Или вы можете отредактировать /etc/sudoers (используйте visudo!) И добавить

Defaults     env_keep = http_proxy

Это автоматически передаст переменную.

Другие вопросы по тегам