FreeBSD QandA 130

FreeBSD QandA

Q. カレントディレクトリを PATH に含めてはいけないと言われた
   のですが、どうしてですか?

A. セキュリティホールになりうるからです。

   もしカレントディレクトリが PATH に含まれている状態で、
     % cd /tmp
     % ls
   としたとき、/tmp/ls というファイルがあったら、/bin/ls でなく
   /tmp/ls が実行されてしまいます。

   もしかしたら /tmp/ls には
     #!/bin/sh
     /bin/rm -rf $HOME &
   と書いてあるかもしれません。その場合、あなたのホームディレクトリは
   全て消えてしまいます。同様に、他人のホームディレクトリを ls で覗いた
   場合、そこに置いてある得体の知れない ls を実行してしまうかもしれません。

   どうしてもカレントディレクトリを PATH に含めたいならば、せめて PATH の
   最後にしましょう (でもやめておいた方がよいと思います)。


     「と言っても、カレントディレクトリにあるコマンドを実行するとき
       タイプ量が増えてしまいのがイヤだから…」

   という方は、tcsh・bash・zsh などの高機能なシェルを使って、補完
   機能を活用しましょう (FreeBSD 4.1-RELEASE 以降での csh(1) は、
   tcsh(1) と全く同じです)。

   カレントディレクトリに a.out がある状態で
     % ./a(TAB を押す)
   とすると
     % ./a.out
   と展開されます。他に a から始まるファイルがある場合は
     %  ./a.(TAB を押す)
   とします。

間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。