ログイン不可ユーザに、sudoでコマンド実行時に環境変数を渡す方法。

通常だと、下記のように実行する。

$ sudo -u hoge cmd

なので、普通のコマンド実行時と同じように、

$ sudo -u hoge VAR=hoge cmd

なんてやっても、sudoに最初に渡されるVARがコマンドと見なされてしまってエラーになる。下記の様に、shを使ってもダメ。

$ sudo -u hoge sh -c "VAR=hoge cmd"

exportとかすると、一見うまく行くように見える。

$ export VAR=hoge
$ sudo -u hoge cmd

だが、実際にはちゃんと渡されていない。じゃあ、どうすっかなぁ、と思っていたら意外な解決方法があった。

$ sudo -u hoge cmd VAR=hoge

環境変数って、かならずコマンド実行前に設定する必要があるのかと思っていたが、上記のようにすれば問題ないのね。へぇ。