Linux / UNIXでファイルを実行するために "./"(ドットスラッシュ)を使用するのはなぜですか?

Linux / UNIXでファイルを実行するために

ファイルを実行するためにLinuxを使用するのはなぜですか./filename

ただ他のコマンドのように入力したらどうでしょうかgccls

ベストアンサー1

リテラルの回答は他の人が提供したものと同じです。現在のディレクトリが$PATH

しかし、なぜ?一言で言えば安全についてです。他の人のホームディレクトリ(または/ tmp)を表示または入力するgccと、いたずらls友達が作成した悪意のあるバージョンではなく、実際のバージョンを実行しているので、すべてのファイルを削除できることがわかります。別の例はtestまたはです[。シェルにこれらのコマンドが組み込まれていない場合は、シェルスクリプトでこれらのコマンドを置き換えることができます。

.〜で持っている最後自分のルートに入る方が安全ですが、それを利用する他の攻撃もあります。これを行う簡単な方法は、slなどの一般的なスペルミスを活用することですls-l。または、そのシステムにインストールされていない一般的なコマンドを見つけます。vimたとえば、システム管理者が平均よりも頻繁にコマンドを入力するためです。

とても理論的に聞こえますか?それ最大はい、しかし実際には特にマルチユーザーシステムでこれが間違いなく起こります。実際、以下は、このウェブサイトの例です。管理者はユーザーのホームディレクトリに切り替えて、psその名前の実行可能ファイルがブロックされていることを見つけます。

おすすめ記事