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
Это автоматически передаст переменную.