sudoにパスを通す

前回の記事、root ユーザーで vim を実行する方法で、sudo vim すると、環境変数 $PATH に設定した値が効かなくて /usr/local/bin/ にある vim を呼んでくれないということを書きましたが、あっさり解決方法を見付けてしまったので書きます。


問題は次のようになってしまうことです。

$ which vim
/usr/local/bin/vim

$ sudo which vim
/usr/bin/vim

$ su -
# which vim
/usr/local/bin/vim

 
解決方法はふたつありました。

sudo 実行時に、環境変数 $PATH をそのまま引き継ぎたいのだったら、/etc/sudoers の最後の方に次のように書きます。

/etc/sudoers
Defaults env_keep += "PATH"

こうすると、sudo を実行したユーザーが各自設定している環境変数 $PATH を、sudo 実行時にも引き継ぐようになります。
$HOME/bin/ とかを追加したい場合だったら、こっちの設定がいいと思います。

あるいは、sudo 実行時に参照するパスに、直接 /usr/local/bin/ を追加してしまう方法もあります。
secure_path に次のようにパスを書き加えます。

/etc/sudoers
Defaults secure_path = /usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

今回追加したかったのは、/usr/local/ というどのユーザーでも共通で使いたいコマンドを置いている場所だったので、こちらの方法をとりました。

これで、sudo したときでも /usr/local/bin/vim が呼ばれるようになりました。

$ sudo which vim
/usrlocal/bin/vim

コメントを残す