WPAD で proxy を提供されてる環境で、ユーザー環境では WPAD や IWebProxy.GetProxy() で proxy の自力解決をして環境変数に自動設定するよう細工をしてるんだけど、apt 等で sudo する proxy の環境変数が渡らずいろいろと面倒でいけない。
apt で WPAD や PAC 処理できないものかと「apt proxy PAC」でググってみたところ、以下のページを見つけた。
WPAD や PAC を直接処理するわけじゃないんだけど、/etc/sudoers に
という事で自動設定スクリプト作った。
2022-04-07: 追記
ふと気が付いたのだが、あれ? 昨日これやってる最中 TAB で入力補間した際に /etc/sudoers.d とかちょくちょく出て来てなかったか? と。
確認してみると、
曰く、
Debian 言われてるけど、Ubuntu 20.04.3 LTS もこれに該当する。
「#includedir」の頭の # は一見コメントのようだが、これも含めてディレクティブなんだそうな。
という事で、上記のように /etc/sudoers 書き換える必要は全くなくて、以下のようにするだけで良かったという落ちが付いたのであった。
/2022-04-07: 追記
2022-04-18: 追記
結果
apt で WPAD や PAC 処理できないものかと「apt proxy PAC」でググってみたところ、以下のページを見つけた。
- stackoverflow / 2015-07-09: Ubuntu apt-get with .pac files
-
nknu.net / 2014-04-04: Ubuntu 14.04 proxy config with authenticationTake me back
WPAD や PAC を直接処理するわけじゃないんだけど、/etc/sudoers に
Defaults env_keep+="http_proxy https_proxy no_proxy"渡しとけば、ユーザー環境の proxy 関連の環境変数を sudo に引き継げるぞとのこと。
という事で自動設定スクリプト作った。
_ () # Export proxy to sudo { local f="/etc/sudoers"; f=( "$f"{,$(date -r "$f" +,%Y%m%d_%H%M%S)} ) local s=$'Defaults\tenv_keep+="ftp_proxy http_proxy https_proxy no_proxy"' sudo grep -a "$s" "$f" || { sudo cp -av "${f[@]}" sudo awk -vs="$s" '/^Defaults/{a=1;n--}{n+=a}n==1{print s}1' "${f[1]}" | sudo tee "$f" >/dev/null } unset -f "$FUNCNAME" } _↓ one liner 版
_ () { local f="/etc/sudoers"; f=( "$f"{,$(date -r "$f" +,%Y%m%d_%H%M%S)} ); local s=$'Defaults\tenv_keep+="ftp_proxy http_proxy https_proxy no_proxy"'; sudo grep -a "$s" "$f" || { sudo cp -av "${f[@]}"; sudo awk -vs="$s" '/^Defaults/{a=1;n--}{n+=a}n==1{print s}1' "${f[1]}" | sudo tee "$f" >/dev/null; }; unset -f "$FUNCNAME"; }; _
2022-04-07: 追記
ふと気が付いたのだが、あれ? 昨日これやってる最中 TAB で入力補間した際に /etc/sudoers.d とかちょくちょく出て来てなかったか? と。
確認してみると、
- /etc/sudoers.d/README
曰く、
- Debian version 1.7.2p1-1 で標準の /etc/sudoers に「#includedir /etc/sudoers.d」ディレクティブが追加されたよ。
- 末尾が ~ または . を含むファイルは処理対象外だよ。
Debian 言われてるけど、Ubuntu 20.04.3 LTS もこれに該当する。
「#includedir」の頭の # は一見コメントのようだが、これも含めてディレクティブなんだそうな。
という事で、上記のように /etc/sudoers 書き換える必要は全くなくて、以下のようにするだけで良かったという落ちが付いたのであった。
sudo tee /etc/sudoers.d/inherit_proxy <<<$'Defaults\tenv_keep+="ftp_proxy http_proxy https_proxy no_proxy"' sudo chmod 440 /etc/sudoers.d/inherit_proxy
/2022-04-07: 追記
2022-04-18: 追記
結果
sudo sh -c 'printf $@>$0;chmod 440 $0' /etc/sudoers.d/inherit_proxy 'Defaults\tenv_keep+=%s_proxy\n' {f,ht}tp{,s} no/2022-04-18: 追記
タグ
コメントをかく