パスには重要なセキュリティ問題があります。パス設定の間違いを悪用して、システム にクラック(原文:hack)するのによく使われる方法です。もしクラッカー (原文:hacker)がroot、一般ユーザーでクラッカーのコマンドを実行すると、簡単に 「トロイの木馬(Trojan horse)」攻撃がなされてしまいます。
昔(?)のよくあったミスはrootのパスに.(カレントパス)を入れる
といったものです。悪意のあるハッカー(クラッカー)は彼のホームディレクトリ
でプログラムlsを作り、もしrootが
# cd ~hacker
# ls
と実行するとクラッカーのlsコマンドを実行してしまいます。
間接的にこれはrootとして実行されるプログラム全てに適用されます。
重要なデーモンプロセスでは他のユーザーが書き込めないようにするべきです。
あるシステムでは/usr/local/binにセキュリティ的に不十分な
プログラムでも置くことができます - そのためrootユーザーのパスから
/usr/local/binを除外しておくべきです。しかしもしあるデーモンが
パス/usr/local/bin/:...を使ったfooを実行していると、
/bin/fooではなく/usr/local/bin/fooを実行することも
可能です。そして/usr/local/binに書き込めるユーザーはだれでも
システムを壊すことができてしまいます。
パスのディレクトリの順番に注意を払うのも大変重要です。例えば、
/usr/local/binが/binの前にあるとセキュリティリスクが
生じます - もし/binの後に/usr/local/binがあれば、
/bin/fooコマンドを/usr/local/bin/fooとローカルに修正した
もので上書きすることはできません(つまりこの方がセキュリティ的に安全です)。
Linuxでは、パスの評価がオペレーティングシステムコールレベル(operating
system call level)で行われていることを思い出して下さい。
実行ファイルのパスが与えられているところならどこでも、(少なくとも)
/bin、/usr/binから検索される短い名前(short name)が与えられます -
他の場所でも同様です。