ログイン不可ユーザに、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
環境変数って、かならずコマンド実行前に設定する必要があるのかと思っていたが、上記のようにすれば問題ないのね。へぇ。