2012-02-07

Debian と Ubuntu の sudo の違い

Debian (6.0.4 squeeze) と Ubuntu (11.04 natty) で sudo vi としたときの挙動が異なる。Debian では sudo を呼び出したユーザのホームディレクトリの .vimrc が呼び出されていないようだ。

$ sudo sh -c 'echo $HOME'

とすると、Debian では /root が、Ubuntu では /home/kimura が表示されることから、sudo による環境変数の引き継ぎの挙動が原因だろう。

Debian でも Ubuntu でも /etc/sudoers はほぼ同じで、

Defaults env_reset

によって環境変数のほとんどが引き継がれないように設定されている。一部の環境変数は引き継がれるが、それは以下のコマンドを実行することで表示できる。

$ sudo sudo -V

これによると Ubuntu では HOME を引き継ぐように設定されている。これは Ubuntu 独特の設定で、Bug #760140 in sudo (Ubuntu): “HOME environmental variable no long preserved with sudo by default” によって sudo へのパッチとして変更されている。この変更の動機はバグレポートをざっと読んだがよくわからない。

ちなみに、HOME を引き継がないようになったのは sudo の upstream の最近の変更による。

Ubuntu にあわせるなら、以下の行を Debian の /etc/sudoers に足せばよい。

Defaults env_keep += "HOME"
Defaults env_reset

0 件のコメント:

コメントを投稿