エンジンの独自ビルド


※この記事はClamXav – Build Your Own Engineの日本語訳です。

エンジンの独自ビルド

ClamXavにはClamAVスキャニングエンジンがバンドルされていますが、必ずしもそれを使わなければならないわけではありません。独自に設定・ビルド・インストールしたバージョンを使うことも可能です。

準備

以下の手順を実行する前に、まずはAppleのDeveloper Toolsをインストールしておく必要があります。Mac OS Xのインストールディスクにも収録されていますが、Appleから最新版をダウンロードした方がよいでしょう。ダウンロードには無料のデベロッパ登録が必要です。サインアップしたら、Mac Dev CenterからXcode Developer Toolsをダウンロードしてください。

次に、ClamAVプロジェクトページからソースコードをダウンロードしましょう。最新の安定版(Stable Release)をおすすめします。開発版(RC:Release Candidates)は、その名が示す通り不完全です。

アーカイブを展開したら、freshclam.confファイルを編集します。ここで、Mac OS X 10.4(Tiger)以前をお使いの場合は、新規にClamAVというユーザおよびグループを作成しておく必要があります。それから、「設定」「ビルド」「インストール」というおなじみの手順をたどります。最後に、ClamAVのインストール先ディレクトリに適切な所有権・アクセス権設定を適用します。

confファイルの編集

ClamXav Sentryでは、バックグラウンドでのスキャニング処理の速度と効率の向上を図るべく、“clamd”デーモンとclamscanを併用しています。この機能を使うには、clamav-X.XX/etc/clamd.confファイル中の“Example”という語を全て削除しておきます。また、LocalSocketを有効にしてソケットファイルへのパスを指定します。デフォルトのパスでもOKですが、有効にするには行頭のハッシュ文字(#)を削除する必要があります。もちろん、必要とあれば変更を加えることは可能です。

さらに、clamav-X.XX/etc/freshclam.confファイル中からも“Example”という語を全て削除し、またDatabaseMirror等の国別の設定を編集しておきます。また、freshclamがウイルス定義の更新をclamdプロセスに通知するよう設定しておきます。NotifyClamdの設定でインストール後のclamd.confのパスを指定すればOKです。

ClamAVユーザ&グループの作成

OS X 10.4(Tiger)以降をお使いの場合は実行しないでください
インストールの前に、‘clamav’ユーザ(セキュリティ上の観点からログインおよびシェル使用不可)を作成する必要があります。こうしておかないと、ウイルス定義データベースの更新確認が不可能になるだけでなく、コードをコンパイルすることすらできません。以下のコマンドをroot権限で実行してください。

niutil -create . /users/clamav
niutil -createprop . /users/clamav uid 82
niutil -createprop . /users/clamav gid 82
niutil -createprop . /users/clamav home /var/virusmails
niutil -createprop . /users/clamav shell /sbin/nologin
niutil -createprop . /users/clamav passwd "*"
niutil -createprop . /users/clamav _writers_passwd clamav
niutil -createprop . /users/clamav expire 0
niutil -createprop . /users/clamav name clamav
niutil -createprop . /users/clamav realname "Clamav User"
niutil -createprop . /users/clamav change 0
niutil -create . /groups/clamav
niutil -createprop . /groups/clamav realname "SPAM Assassin Group 1"
niutil -createprop . /groups/clamav name clamav
niutil -createprop . /groups/clamav passwd "*"
niutil -createprop . /groups/clamav gid 82
niutil -createprop . /groups/clamav smb_sid "S-1-5-21-183"
niutil -createprop . /groups/clamav generateduid "ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000052"

smb_sidおよびgenerateduidに関しては、正直なところ開発者もよく理解しておりません。まずはNetInfo Managerを開き、これらの値が既存でないことを確認するのがよいかと思います。

設定、コンパイル、インストール

clamav-X.XXソースディレクトリに移動し、以下の操作を実行してください。下記コマンドをそのままコピー&ペーストする場合は、bashシェルをお使いください。その他のシェルをお使いの場合は適宜変更してください:

  1. CC=”/usr/bin/gcc-4.2″ CXX=”/usr/bin/g++-4.2″
    CFLAGS=”-O2 -g -D_FILE_OFFSET_BITS=64″
    CXXFLAGS=”-O2 -g -D_FILE_OFFSET_BITS=64″
    ./configure –disable-dependency-tracking –enable-llvm –enable-clamdtop –with-user=_clamav –with-group=_clamav –prefix=/usr/local/clamXav
  2. make
  3. sudo make install

上記3種類のコマンドは、それぞれ1行で入力してください(改行は不要です)。
なお、Mac OS X 10.5以前のバージョンではgcc4.2はサポートされていませんので、上記コマンド中gcc-4.2をgccに、g++-4.2g++に、-O2-Ooに書き換える必要があります。ただしきちんと通るか確証がありませんので、インストール後にclamscanの動作をclamav-X.XX/testディレクトリで確認してください。

適切な所有権・アクセス権の設定

clamscanやfreshclamを実行する前に、ClamAVディレクトリに対し下記の所有権・アクセス権を設定しておく必要があります。

  • chown -R root:wheel /usr/local/clamXav/etc
  • chmod 0775 /usr/local/clamXav/etc
  • chmod 0664 /usr/local/clamXav/etc/*
  • chown -R root:wheel /usr/local/clamXav/bin
  • chmod -R 0755 /usr/local/clamXav/bin
  • chown clamav /usr/local/clamXav/bin/freshclam
  • chmod u+s /usr/local/clamXav/bin/freshclam
  • chown -R clamav:clamav /usr/local/clamXav/share/clamav
  • chmod 0775 /usr/local/clamXav/share/clamav
  • chmod 0664 /usr/local/clamXav/share/clamav/*
  • chown -R clamav:clamav /usr/local/clamXav/share/clamav/daily*
  • chmod -R a+r /usr/local/clamXav/share/clamav/daily*
  • chown -R clamav:clamav /usr/local/clamXav/share/clamav/main*
  • chmod -R a+r /usr/local/clamXav/share/clamav/main.*

カスタムインストールの場所

設定の段階でインストール先を変更(–prefixフラグ)した場合は、ClamXavにその変更を認識させる必要があります。ターミナルで以下を入力してください:If

defaults write uk.co.markallan.clamXav <ClamAVのパス>

また、freshclamのログファイルのパスを変更することもできます。カスタムインストールの場合デフォルトのパスは/tmp/freshclam.logですが、以下のコマンドで変更可能です:

defaults write uk.co.markallan.clamXav <更新ログのパス>

ClamXavを正常に動作させるためには、ログファイルは全ユーザ(または少なくとも使用者自身)が読み出し可能、かつユーザclamavが書き込み可能とする必要があります。

コメントを残す