Sudo 无法解析主机名

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

我在 VirtualBox 中使用 Debian squeeze (LXDE),可以通过真正的 root 控制台或通过 执行管理工作su root。我将我的用户添加到 sudoers 组,并且可以通过 sudo 执行编辑等操作,例如sudo vim /etc/hosts。我想使用sudo而不是su root

为什么curl(和其他类似的工具aptitude) 无法解析主机名,但是当以普通用户或普通 root 身份使用它们时一切正常?

编辑:以下是解决方案(感谢 Paul):

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

答案1

当您运行 sudo 时,您将以 root 身份运行一个新的 shell,并在其中执行命令。只有 /etc/sudoers 文件中的环境变量会被复制到新的 shell 中。

要解决这个问题,你可以执行一个命令

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

或者你可以编辑 /etc/sudoers(使用 visudo!)并添加

Defaults     env_keep = http_proxy

这将自动传递变量。

相关内容