要するに:Sudoが毎回PATHをフラッシュしないようにする方法?
RailsでRuby on Rails。たとえば、いくつかの変更を加えた後)。
すべてのサイトはVCS(gitですが、重要ではありません)でチェックされ、所有者とグループが私のユーザーに設定されていますが、Mongrelは、その権利が厳しく制限されているmongrelユーザーの下で実行されます。したがって、Mongrelはroot(UIDを自動的に変更できます)またはmongrelで開始する必要があります。
Mongrelを管理するには、mongrel_cluster gemを使用します。これは、1つのコマンドで任意の数のMongrelサーバーを起動または停止できるためです。ただし、ディレクトリ/var/lib/gems/1.8/binがPATHにある必要があります:絶対パスで開始するにはこれでは不十分です。
ルート.bashrcのPATHを変更しても何も変更されず、Sudoのenv_resetとenv_keepも調整されませんでした。
質問:PATHにディレクトリを追加する方法、またはユーザーのPATHをsudoに保持する方法は?
更新:いくつかの例
$ 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)でもこのように機能すると言えます。
同じ問題に数時間苦労しました。 Debian lennyでは、追加することで修正できます
Defaults exempt_group=<your group>
sudoersファイルに。
これは、コンパイル済みの--secure-pathオプションを回避する唯一の方法です(私の知る限り)。
特に、これはalsoユーザーがSudoを実行するときにパスワードを入力する必要がないようにします。
secure_path
を/etc/sudoers
に設定している場合は、env_reset
/env_keep
で好きなだけプレイでき、パスに影響はありません。このようなものを見つけたら、コメントアウトしてください。
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
man Sudo のenv_resetオプションとenv_keepオプションを調べてください。しかし、すでにそれを行っているようです(誤ってenv_keep "keepenv"を誤って呼び出しただけです)。 env_resetオプション(デフォルトは有効)を無効にすると、any環境変数。しかし、これは安全性が低くなります。
Sudoにはsecure_pathオプションもあります。これはデフォルトで有効になっていると思います。無効にしてみてください。
上記のオプションは、/ etc/sudoersファイルで設定されます。 Sudoには-i
コマンドラインオプションもあります。これにより、Sudoは/root/.profileまたは/root/.loginを実行します。そこに希望のパスを設定できます。