web-dev-qa-db-ja.com

sudoでPATH環境変数をオーバーライドする方法は?

/etc/profileにPATHを設定しました。一般ユーザーの場合は問題ありませんが、Sudoのroot権限になるとPATHが行きません。

PATHのルート権限になったとしても、/etc/profileによって設定されたSudoをオーバーライドするにはどうしますか?

5
freddiefujiwra

Sudoは、セキュリティ上の理由から、他の多くの環境変数とともにPATHをリセットします。 Sudo -iを実行しない限り、/ etc/profileに何が設定されているかは関係ありません。

Sudoのマニュアルページの[SECURITYNOTES]には、セキュリティへの影響についての洞察と、これらの制限を変更するために/ etc/sudoersファイルをいじる必要があるオプションが記載されています。

9
Juliano

ルートのパスは/ etc/profileによって変更されません(セキュリティ...)

個別に設定する必要があります(例:rootの〜/ .bash_profile)

3
lexu

更新:

SudoまたはSudo-iを使用するときに、「root」アカウントのデフォルトPATHに特定のPATHを追加する場合は、次のようにします。

buntu 10.04.x LTSの場合:

それに応じて、/ etc/environmentファイルとetc/login.defsファイルの両方を変更します。

buntu 12.04.x LTSの場合:

それに応じて、/ etc/environment/ etc/login.defsファイルの両方を変更しますおよびデフォルトはsecure_path/ etc/sudoersファイル(visudoを使用)。

GUIを使用していて、テキストモードのnanoエディターに慣れていない場合は、次のコマンドを使用して、geditで/ etc/sudoersファイルを編集します。

Sudo EDITOR = gedit visudo

/ etc/sudoersファイルを保存すると、visudoは変更の構文をチェックします。

すべて問題がなければ、ターミナルセッションに戻ります。

エラーが発生した場合は、文字「e」を押して/ etc/sudoersファイルを再度編集し、変更を修正します。

Ubuntu 12.10はまだ試していませんが、Ubuntu 12.04.xと同じだと思います(そして願っています)

乾杯。

1
fnux

Linuxディストリビューションでセキュリティポリシープラグインが有効になっている場合、PATHsudoersファイルのsecure_pathで上書きされる可能性があるため、Sudo visudoで編集する必要があります。それをリストに追加します。

その場合は、次の方法で確認できます。

$ Sudo sudo -V | grep PATH
Value to override user's $PATH with: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

または、1回限りの使用については、次を試してください。

Sudo "PATH=$PATH" foo

参照: Sudoとsuを介して実行する場合にPATH変数が異なるのはなぜですか? UnixSEで

0
kenorb