PATH 環境変数

PATH 環境変数は、重要なセキュリティー管理の要素です。 この変数では、コマンドを見つけるために検索するディレクトリーを指定します。

デフォルトのシステム共通 PATH 値は /etc/profile ファイルに指定され、各ユーザーは、通常、そのユーザーの $HOME/.profile ファイルに PATH 値を持っています。.profile ファイルにある PATH 値は、システム共通 PATH 値をオーバーライドするか、あるいは、エクストラ・ディレクトリーを追加します。

PATH 環境変数に無許可変更を行うと、システム上のユーザーが他のユーザー (root ユーザーを含む) を「スプーフ」できるようになります。 スプーフィング・プログラム (トロイの木馬 プログラムとも呼ばれる) は、システム・コマンドを置換してから、そのコマンドで扱われる情報 (ユーザー・パスワードなど) を取り込みます。

例えば、あるユーザーが、コマンドの実行時にシステムが /tmp ディレクトリーを最初に検索するように PATH 値を変更したとします。 その上で、そのユーザーは /tmp ディレクトリーに su という名前のプログラムを入れておきます。このプログラムは su コマンドと同じように root パスワードを求めます。 次に /tmp/su プログラムは root パスワードをかのユーザーにメールし、本物の su コマンドを呼び出しておいてから終了します。 このシナリオでは、su コマンドを使用した root ユーザーは常にその root パスワードを漏らすことになり、しかもそのことに気が付きません。

システム管理者およびユーザーに PATH 環境変数の問題が起きないようにするには、次のコマンドを実行します。

  • 疑わしい場合は、絶対パス名を指定します。 絶対パス名が指定されると、PATH 環境変数は無視されます。
  • root ユーザー用に指定する PATH 値には現行ディレクトリー (. (ピリオド) で指定する) を入れないようにします。 現行ディレクトリーを /etc/profile 内に指定しないようにします。
  • root ユーザーは、専用の .profile ファイルに自分用の PATH 指定を入れておく必要があります。/etc/profile 内の指定では、通常、すべてのユーザー向けの最小標準がリストされますが、root ユーザーが必要とするディレクトリーはデフォルトより多い場合も少ない場合もあります。
  • 他のユーザーに対して、システム管理者に相談せずに自分の .profile ファイルを変更しないように警告します。これを怠ると、信用していたユーザーが、予期せぬアクセスを許すような変更を行う可能性があります。 ユーザーの .profile ファイルには 740 に設定されたアクセス権を与える必要があります。
  • システム管理者は、ユーザー・セッションから root 権限を獲得するために su コマンドを使用すべきではありません。それは、.profile ファイル内に指定されているそのユーザーの PATH 値が有効であるためです。ユーザーは自分自身の .profile ファイルを設定できます。システム管理者は、そのユーザーのマシンに root ユーザーとしてログインするか、 できれば自分の ID でログインして、次のコマンドを使用してください。
    /usr/bin/su - root

    これによって、そのセッションでは、root の環境が確実に使用されるようになります。 システム管理者は、別のユーザーのセッションで root として操作する場合、そのセッションでは、 一貫して絶対パス名を指定する必要があります。

  • 入力フィールド・セパレーター (IFS) 環境変数が /etc/profile ファイル内で変更されないように保護されます。 .profile ファイルの IFS 環境変数を使用して PATH 値を変更することが可能です。