sudoでどのような環境が得られますか?


14

sudoを実行すると、私の環境はどうなりますか?

を実行するとsudo command、自分またはルートの環境が見えないようです。たとえば、両方のパスにはが含まれていますが、フルパス/usr/local/binなしでプログラムの1つを実行しようとすると失敗します。

私はsudoがrootとして実行されていると思ったので、rootの環境を取得しました。sudoでbashを実行する方法は、ルートまたは通常のユーザーとは異なりますか?

編集:

sudo -i最近使用していますが、最近、現在の作業ディレクトリがに設定されるため、問題が発生してい/rootます。これは予想通りです(ちょっと)、でもsudoがで私の実行可能ファイルを認識しない理由はまだわかりません/usr/local/bin

編集:

Fedora 15を実行しています。


使用しているOS(Linuxの場合、どのディストリビューション)?を構成する方法は(あまりにも)多くありPATH、最後にオーバーライドする人を見つけるのは簡単ではありません。システム設定(PAMなど)、sudo自体、または後続のプロファイルスクリプトの可能性があります。
ジル「SO-悪であるのをやめる」

@ Gilles-良い点。OSを追加しました。これはFedora(Ubuntuを使用していた)でしか気づいていませんが、多くの便利なセットアップを追加しなかったためだと思いました。
beatgammit

回答:


6

Fedoraのデフォルトについては知りませんが、Debianのsudoデフォルトsecure_pathでは、デフォルト値のオプションを使用します/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

これは、使用するたびにパスがその値に変更されることを意味しますsudo。ただし、を使用するsudo -iと、パスはルートユーザーのRCファイルによって変更されます。


secure_pathオプションについて知りませんでした。デフォルトでは/usr/local/binインストールに含まれていません。おかげで、これは本当に問題を解決するのに役立ちました!
beatgammit

3

これは次のようにして簡単に確認できます

からの出力を比較する

sudo env 
env

そして、のようなもの

sudo whoami 
whoami

そうすれば、セットアップに何が欠けているのかを見つけることができます。


クール、それについて知らなかった。とにかく、/usr/local/bin私のsudo環境にはありませんが、それは私のルート環境とユーザー環境にあります。どうしてこれなの?
beatgammit

sudo whoamiはroot、期待どおりに戻ります。sudo envがroot envと異なる原因は何ですか?
beatgammit

わからないが、どこかで不足している設定があるはずで、通常/ usr / local / binが含まれています。たぶんあなたはいくつかの設定ファイルで誤って$ PATH envをクリアしたのでしょうか?
ヨハン

sudoは/root/.bashrcをソースしますか?それ/usr/local/binがルートのパスに追加する場所です(残念ながら手動でこれをしなければなりませんでした)?
beatgammit

シェルのグローバル構成を変更して、何が起こるかを確認する必要があると思います。bashを実行している場合は、/ etc / bash.bashrc
Johan

2

このsudo -iコマンドは、初期ログインをシミュレートします。私のDebianシステムでは、次のことも述べています。

これは、.profileや.loginなどのログイン固有のリソースファイルがシェルによって読み取られることを意味します。コマンドが指定されている場合、実行のためにシェルに渡されます。それ以外の場合は、対話型シェルが実行されます。sudoは、シェルを実行する前にそのユーザーのホームディレクトリに変更しようとします。また、環境を初期化し、DISPLAYとTERMを変更せずに、HOME、MAIL、SHELL、USER、LOGNAME、およびPATHを設定し、LinuxおよびAIXシステムの/ etc / environmentの内容も設定します。他のすべての環境変数は削除されます。


0

あなたは調整することができますsudoenv_keep含まれるようにパラメータをPATH使用すると、心の中でそれを行うのセキュリティへの影響を保つ必要があるものの、。

visudo

...を起動し、$EDITOR必要に応じてDefaults env_keep =... を変更できます。

また、ファイルをに追加することにより、システムのパスに/ usr / local / binを追加できます/etc/profile.d

例えば:

cat <<EOF > /etc/profile.d/tjameson.sh
export PATH=$PATH:/usr/local/bin
EOF

sudoの特別な処理があるPATHため、これを行うべきではありません。
アローマスター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.