要するに、毎回PATHをフラッシュしないようにsudoを作る方法は?
Ruby on Railsで書かれたいくつかのWebサイトをサーバーに展開しています(Debianテスト)。Mongrel + Nginxを使用してそれらをホストしますが、Mongrelを再起動する必要がある場合(たとえば、変更を加えた後)に1つの問題があります。
すべてのサイトはVCSでチェックされ(git、ただし重要ではありません)、所有者とグループがユーザーに設定されていますが、Mongrelはその権限が厳しく制限されているmongrelユーザーの下で実行されます。そのため、Mongrelはルート(UIDを自動的に変更できます)またはmongrelの下で起動する必要があります。
mongrelを管理するには、mongrel_cluster gemを使用します。これにより、1つのコマンドで任意の数のMongrelサーバーを起動または停止できます。ただし、ディレクトリ/var/lib/gems/1.8/binがPATHにある必要があります。これは絶対パスで起動するには不十分です。
ルート.bashrcのPATHを変更しても何も変わりませんでした。sudoのenv_resetとenv_keepの調整も変更しませんでした。
質問:PATHにディレクトリを追加する方法、またはsudoでユーザーのPATHを保持する方法は?
更新:いくつかの例
$ env | grep PATH
PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/var/lib/gems/1.8/bin
$ sudo cat /etc/sudoers | egrep -v '^$|^#'
Defaults env_keep = "PATH"
root ALL=(ALL) ALL
%sudo ALL=NOPASSWD: ALL
$ sudo env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
また、Debian安定版(lenny)でもまったく同じように機能すると言えます。