【WSL2 × ClamAV】なぜか動かない?その原因と解決策を完全解説!
はじめに
WSL2にClamAVを導入しようとして、「情報が見つからない」「Ubuntuの手順通りにやったのに動かない」という壁にぶつかりませんでしたか?
私もまさにその沼にハマりました。そして、試行錯誤の末に動作させることができたのです!
この記事では、その過程を余すことなく共有します。
「ClamAVを入れたのに動かない!」と悩んでいる方、このままでは時間をムダにするだけです。
ここでしっかり解決策を押さえましょう!
ClamAVのインストール
まずは通常の手順でClamAVをインストールします。
$ sudo apt install clamav clamav-daemon
$ sudo systemctl start clamav-daemon.service
$ sudo systemctl status clamav-daemon.service
ここまではスムーズに進むはず……なのですが、WSL2では次のエラーが発生することがあります。
ERROR: Failed to open log file /var/log/clamav/freshclam.log: Permission denied
発生するエラーとその原因
WSL2環境では、以下の問題が待ち構えています。
-
clamd
との接続エラー (Can't connect to clamd
) -
freshclam
のログファイルへの書き込み権限エラー (Permission denied
) -
freshclam
のプロセスがロックされてしまう (Failed to lock the log file
)
これらの落とし穴にハマらないように、しっかり対策していきましょう!
解決策 ① ログファイルの権限修正
まず、freshclam.log
のパーミッションを変更します。
$ sudo chmod 666 /var/log/clamav/freshclam.log
$ ls -l /var/log/clamav/freshclam.log
-rw-rw-rw- 1 clamav clamav 1610 Feb 24 01:19 /var/log/clamav/freshclam.log
「666って危険じゃない?」と思うかもしれませんが、ログファイルなので今回は許容しました。
解決策 ② ロックされたプロセスを強制終了
次に、ロックされている可能性のあるfreshclam
プロセスを全て終了させます。
$ sudo pkill freshclam
または、killall
を使ってもOKです。
解決策 ③ WSL2向け設定を適用
WSL2の環境に合わせて、不要なディレクトリをスキャン対象から除外すると動作が安定します。
$ sudoedit /etc/clamav/clamd.conf
以下の設定を追記しましょう。
# WSL2向け設定(追加)
ExcludePath ^/proc
ExcludePath ^/sys
ExcludePath ^/run
ExcludePath ^/dev
ExcludePath ^/snap
ExcludePath ^/mnt
特に、/mnt
を除外することでWindows側のファイルスキャンを回避できます。
動作確認
ここまで設定すれば、ClamAVがWSL2で正常に動作するはずです。
$ sudo freshclam
Mon Feb 24 01:30:38 2025 -> ClamAV update process started at Mon Feb 24 01:30:38 2025
$ clamscan install.sh
----------- SCAN SUMMARY -----------
Known viruses: 8704520
Engine version: 0.103.12
Scanned files: 1
Infected files: 0
これでWSL2上でClamAVが動作するようになりました!
まとめ
WSL2でClamAVがうまく動作しない場合の主なポイントは以下の3点です。
- ログファイルのパーミッションを適切に設定する。
-
freshclam
のロック問題を解決する。 - 不要なディレクトリをスキャン対象から除外する。
WSL2の利用が増える中、Linux環境でのセキュリティ対策はますます重要になっています。
ClamAVを活用して、安全な開発環境を整えましょう!
それでは、良いWSL2ライフを!
Discussion