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

Я использую 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 ответ1

2

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

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

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

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

Defaults     env_keep = http_proxy

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .