を追加しても安全ですか?私のパスに?どうして?


49

他の 回答で、現在の作業ディレクトリ( ' .')を$PATH環境変数に含めるのは悪い考えだと人々が言及しているのを見たことがありますが、この問題に特に対処する質問を見つけることができませんでした。

それでは、なぜ.パスに追加しないのですか?すべての警告にもかかわらず、とにかくそれを行う場合、私は何に注意する必要がありますか?最初に追加するよりも最後に追加する方が安全ですか?


回答:


39

あなたがマシンの唯一のユーザーであれば、あなたが何をしているのかを知っている限り、それは大丈夫です。一般的な懸念は、現在のディレクトリをに持つことによりPATH、コマンドを一定のリストとして見ることができないことです。現在のディレクトリからスクリプト/プログラムを実行する必要がある場合は./、その名前の前に追加することでいつでも明示的に実行できます(システムに「現在のディレクトリからこのファイルを実行したい」と伝えます)。

ファイルシステム全体にこれらの小さなスクリプトがすべて揃ったとしましょう。いつかは間違いを犯すでしょう。そのPATHため、静的パスの定義済みリストとしてを用意することは、順序付けと潜在的な問題からの救いに関するものです。

ただし、に追加.する場合PATHは、リストの最後に追加することをお勧めします(export PATH=$PATH:.)。少なくとも、この方法でシステム全体のバイナリをオーバーライドすることはありません。

あなたは、システム上のルートだと持つ、システムが他のユーザーのアカウントにさらされている場合.にはPATH、巨大なセキュリティ上のリスクである:あなたがすることができcdますが、一つやスクリプトことをミスタイプしているため、一部のユーザーのディレクトリに、そして無意識のみが悪質なスクリプトを実行しますシステム全体のバイナリと同じ名前です。


1
+基礎となる理論を受け入れ、あなたがシステム上の唯一のユーザーであっても問題がまだ存在する可能性があることに言及してください。どちらの答えも優れた点をもたらします。ディレクトリを別のユーザーと共有するときはいつでも、rootであるかどうかに関係なくリスクが増加することを付け加えます。
ジャンダー

6
マシン上の唯一のユーザーであっても、信頼できないtarを抽出するたびlsに、現在のディレクトリに配置できます。次にls、抽出されたファイルを検査するために実行し、既に悪意のあるコードを実行しています。
レスマナ

35

リスクは、誰かが現在のディレクトリであるディレクトリに悪意のある実行可能ファイルを置くことです。

最悪の場合は次の場合に発生します。

  • 悪意のあるコマンドには無制限の損傷力があるため、rootとしてログインしています
  • .PATHの先頭にあります。標準コマンドは、気付かないうちにオーバーライドさlsれる可能性があるためです(通常、リストから隠れる可能性があります)。

通常のユーザーとしてログインし、.PATHの最後にある場合、リスクははるかに低くなりますが、それでも存在します。

  • 誰かがあなたが頻繁にコマンドをタイプミスして、一致するものをインストールすることを見つけるかもしれません
  • 誰かがインストールされていないものの名前で偽のコマンドをインストールするかもしれません。

いずれにしても、マシンの唯一のユーザーであっても、リスクは存在することに注意してください。たとえば、侵害されたサイトからダウンロードしたアーカイブを抽出した場合、悪意のあるソフトウェアがインストールされます。


15
インストールslして、ポイント3が発生する頻度を確認します。
ヨルダン

またはalias l=`ls`
アンコ14年

悪意がある必要はありません。lsディレクトリの一覧を取得する予定ですが、ダウンロードするプロジェクトにlsは、ルートプロジェクトフォルダーに何か他のものへのショートカットとしてスクリプトが含まれている場合があります。lsおそらく悪い例ですがe、編集、dデバッグ、mメイク、bビルドのために私は確かに想像できます。私はそれらのいくつかをグローバルに持っています。入力するmm、実行するために呼び出されるローカルスクリプトではなく、makeの起動(ショートカット)が期待されます。
gman

@gmanそう。悪意のないコマンドは、意図せずに悪影響を及ぼす可能性があります。タイプミスのリスクが高いため、Unixの開始以来、単一文字のコマンド/エイリアスは眉をひそめていました。まれな標準的なものはw[です。
jlliagre

3

入力内容に常に細心の注意を払っていても、最後にを入れ.PATHも、一部のプログラムは現在のディレクトリを/tmp(誰でも書き込み可能)に変更し、実際にはインストールされていないユーティリティを実行しようとするため、依然として安全ではありません。したがって、デフォルトはにあるものになり/tmpます。これが発生した場合、これは攻撃のベクトルです。

また、入力が簡単であるため(特にこれらの文字が連続するキー上にあり、Shiftを必要としないQWERTYのようなキーボードでは)、使用することも補完に役立つため、を回避.することには大きな欠点がないことに注意してください。最後に。PATH././

本当に現在のディレクトリからコマンドを入力できるようにしたい場合、最新のシェル(zshなどのcommand_not_found_handler)が安全にそれを行う機能を提供する場合があります。つまり、ハンドラーに必要なすべてのセキュリティチェックを追加する前に、コマンドが実行されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.