Linux豆知識 019

パスを通す

今回は、「パスを通す」という話です。ちなみに、この時の「パス」は、「コマンドサーチパス」の略称です。

Linuxでは、コマンドを実行する際には、本来「/usr/bin/passwd」のように、フルパス、すなわちコマンドがあるディレクトリまですべて含めてコマンドを指定してやる必要があります。しかし、よく使うコマンドでいちいちフルパスを指定するのはあまりに面倒ですね。

そこで、Linuxのシェルは、ユーザがコマンドをフルパスで指定しなくても、そのコマンドを、ある特定のディレクトリに対して探しにいくようになっています。このとき、シェルが探しに行くディレクトリを設定する作業を、「パスを通す」と言います。正確には「コマンドサーチパス」、すなわちコマンドを探しにいくパスの設定をする、ということですね。

パスを通すためには、環境変数「PATH」に対して、通したいパスを「:」記号区切りで指定します。この設定には、先週紹介した「export」コマンドを利用します。たとえば、現在の設定に加えて「/usr/sample」というディレクトリにもパスを通したい場合は、次のように実行します。

$ export PATH=$PATH:/usr/sample

さて、Linuxでは「カレントディレクトリ」にパスが通っていません。このため、たとえばカレントディレクトリの「hogehoge.cmd」というコマンドを実行する場合、「./hogehoge.cmd」のように指定してやる必要があります。少々面倒なのですが、では「カレントディレクトリにパスを通せばよいではないか」というと、これはセキュリティ上問題があり、やってはいけないとされています。

まず、セキュリティの大原則に、「余計なディレクトリにパスを通してはいけない」というものがあります。これは、パスを通しすぎると、たとえば2箇所に「ps」というファイルがあった場合、どちらのファイルが実行されるのか・・・混乱します(実際には、PATH変数の、より先頭に指定されたパスが優先されます。が、ユーザは混乱しますね)。

ここでカレントディレクトリにパスを通すとどうなるか。

極端な話、ユーザはほとんどのディレクトリをカレントディレクトリにすることになってしまいます。つまり、どのディレクトリもコマンドサーチパスになり得てしまいます。こうなると、混乱を招くだけでなく、「悪意のあるプログラムが置かれていた場合、意図せず実行される危険が極めて高くなってしまう」のです。通常、一般ユーザが出入りすることができるディレクトリは限られており、そのディレクトリにパスを通さないことでシステムを守っているのですが、一般ユーザでも出入りできるディレクトリにパスを通してしまうと、悪意のあるコマンドを仕掛けられた時に攻撃されてしまう危険性が大きく増してしまうのです。

コマンドサーチパスは、「便利だから」という理由であれこれ指定せず、安全なディレクトリに絞って指定することが大切です。


ページトップへ