プロジェクト

全般

プロフィール

Linux オンアクセス検索・除外設定指定方法の違い

オンアクセス検索の除外オプション(SECで指定またはExcludeFilePaths)
の指定方法について、下記パターンで動作が若干異なる。

具体例

例えば、「/foo/bar/eicar.com」というディレクトリ構成のテストウィルス
を検索する。下記3パターンの除外を指定した場合の動作は次のようになる。

  1. 「ExcludeFilePaths /foo」
    「/foo」ディレクトリ自身のみが除外される。おそらく/fooという単一の
    ファイルとして除外が設定されている。
    つまり、「/foo/bar」の中のeicar.comは除外されない。
  2. 「ExcludeFilePaths /foo/」
    「/foo」以下すべてが除外される。「/foo/bar」の中のeicar.comも除外される。
  3. 「ExcludeFilePaths /foo/*」
    「/foo」ディレクトリの1階層目のファイル、ディレクトリ単体が「1.」
    のケースで個別に除外設定される。例えば「/foo/bar」「/foo/hoge」
    「/foo/fuga」がいる場合、「/foo/*」を除外すると実際には「/foo/bar
    /foo/hoge /foo/fuga」として「1.」の形式で個別に3つの除外が設定される。
    つまり、「/foo/bar」の中のeicar.comは除外されない。

一般的には除外設定したフォルダ以下もすべて除外するニュアンスだと思う
ので、「/foo/bar/」としてスラッシュで閉じる指定方法をする必要がある。

Includeについて

なお上記はexcludeについてだが、includeについて「OnAccessIncludePath」
はオンデマンドスキャンの時の「除外対象内の検索対象」ではなく「オンア
クセス検索の起点」であるため、同じ感覚で指定することができないため注意。

それ以外のケース

オンデマンドスキャンの場合は除外設定の末尾の記法を「/」で閉じたり
閉じなかったり「/*」と指定しても深い階層のディレクトリは除外される。

Windowsのオンアクセス検索では末尾に「\」が必須であり、必ず階層の下も
除外適用される形でしか登録ができない。(つまりLinuxでもディレクトリ
の閉じ記号「/」を指定しなければ単一ファイルと認識される模様)