Linux 下sudo網絡權限詳解
對于設置了網絡代理的服務器,在當前用戶下執行網絡訪問沒有問題,但通過sudo執行命令時,就會出現“無網絡連接”的錯誤。
背景
對于設置了網絡代理的服務器,在當前用戶下執行網絡訪問沒有問題,但通過sudo執行命令時,就會出現“無網絡連接”的錯誤。
普通權限下,wget成功。
# wget https://github.com--2016-12-08 09:00:43-- https://github.com/Connecting to 109.105.113.200:8080... connected.Proxy request sent, awaiting response... 200 OKLength: unspecified [text/html]Saving to: ‘index.html'2016-12-08 09:01:03 (1.33 KB/s) - ‘index.html' saved [25692]使用sudo命令后,連接失敗。# sudo wget https://github.com--2016-12-08 09:01:41-- https://github.com/Resolving github.com (github.com)... failed: Name or service not known.wget: unable to resolve host address ‘github.com'
解決方案
出現這種情況的原因,是因為sudo命令的作用是為了允許普通用戶使用超級用戶權限的工具,但卻沒有繼承來自環境變量。而網絡代理的設置,是通過設置http_proxy,https_proxy等環境變量來實現的。因此,sudo后也就失去了網絡代理,自然也就沒有了網絡連接。為了解決該問題,我們需要修改sudo的配置文件。修改sudo的配置文件有特殊的命令和方法,具體參考http://www.companysz.com/article/113902.htm,我這里不做詳細介紹了。
在sudo的配置文件中,增加Defaults env_keep += "http_proxy https_proxy"。該行表示使用sudo命令時,保存后面列出的環境變量。
增加配置后,sudo可訪問網絡。# sudo wget https://github.com--2016-12-08 09:02:52-- https://github.com/Connecting to 109.105.113.200:8080... connected.Proxy request sent, awaiting response... 200 OKLength: unspecified [text/html]Saving to: ‘index.html.1'2016-12-08 09:02:56 (20.1 KB/s) - ‘index.html.1' saved [25692]
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答