回答:
あなたがマシンの唯一のユーザーであれば、あなたが何をしているのかを知っている限り、それは大丈夫です。一般的な懸念は、現在のディレクトリをに持つことによりPATH
、コマンドを一定のリストとして見ることができないことです。現在のディレクトリからスクリプト/プログラムを実行する必要がある場合は./
、その名前の前に追加することでいつでも明示的に実行できます(システムに「現在のディレクトリからこのファイルを実行したい」と伝えます)。
ファイルシステム全体にこれらの小さなスクリプトがすべて揃ったとしましょう。いつかは間違いを犯すでしょう。そのPATH
ため、静的パスの定義済みリストとしてを用意することは、順序付けと潜在的な問題からの救いに関するものです。
ただし、に追加.
する場合PATH
は、リストの最後に追加することをお勧めします(export PATH=$PATH:.
)。少なくとも、この方法でシステム全体のバイナリをオーバーライドすることはありません。
あなたは、システム上のルートだと持つ、システムが他のユーザーのアカウントにさらされている場合.
にはPATH
、巨大なセキュリティ上のリスクである:あなたがすることができcd
ますが、一つやスクリプトことをミスタイプしているため、一部のユーザーのディレクトリに、そして無意識のみが悪質なスクリプトを実行しますシステム全体のバイナリと同じ名前です。
ls
に、現在のディレクトリに配置できます。次にls
、抽出されたファイルを検査するために実行し、既に悪意のあるコードを実行しています。
リスクは、誰かが現在のディレクトリであるディレクトリに悪意のある実行可能ファイルを置くことです。
最悪の場合は次の場合に発生します。
.
PATHの先頭にあります。標準コマンドは、気付かないうちにオーバーライドさls
れる可能性があるためです(通常、リストから隠れる可能性があります)。通常のユーザーとしてログインし、.
PATHの最後にある場合、リスクははるかに低くなりますが、それでも存在します。
いずれにしても、マシンの唯一のユーザーであっても、リスクは存在することに注意してください。たとえば、侵害されたサイトからダウンロードしたアーカイブを抽出した場合、悪意のあるソフトウェアがインストールされます。
sl
して、ポイント3が発生する頻度を確認します。
alias l=`ls`
。
ls
ディレクトリの一覧を取得する予定ですが、ダウンロードするプロジェクトにls
は、ルートプロジェクトフォルダーに何か他のものへのショートカットとしてスクリプトが含まれている場合があります。ls
おそらく悪い例ですがe
、編集、d
デバッグ、m
メイク、b
ビルドのために私は確かに想像できます。私はそれらのいくつかをグローバルに持っています。入力するm
とm
、実行するために呼び出されるローカルスクリプトではなく、makeの起動(ショートカット)が期待されます。
w
と[
です。
入力内容に常に細心の注意を払っていても、最後にを入れ.
てPATH
も、一部のプログラムは現在のディレクトリを/tmp
(誰でも書き込み可能)に変更し、実際にはインストールされていないユーティリティを実行しようとするため、依然として安全ではありません。したがって、デフォルトはにあるものになり/tmp
ます。これが発生した場合、これは攻撃のベクトルです。
また、入力が簡単であるため(特にこれらの文字が連続するキー上にあり、Shiftを必要としないQWERTYのようなキーボードでは)、使用することも補完に役立つため、を回避.
することには大きな欠点がないことに注意してください。最後に。PATH
./
./
本当に現在のディレクトリからコマンドを入力できるようにしたい場合、最新のシェル(zshなどのcommand_not_found_handler
)が安全にそれを行う機能を提供する場合があります。つまり、ハンドラーに必要なすべてのセキュリティチェックを追加する前に、コマンドが実行されます。