ClamAV 0.103.0のclamdscanの問題点への対応 [CentOS]
(EPEL のパッケージを使用)
以下は、この更新により発生した問題点とその対応を備忘録としてまとめたものである。
1. 発生事象
(1) 一般ユーザーでの clamdscan の実行で "Permission denied" が発生する。
/run/clamd.scan/clamd.sock: Permission denied
(2) root での clamdscan の実行で "Can't allocate memory ERROR" が発生する。
(a) エラーメッセージ
xxx.iso: Can't allocate memory ERROR
(b) clamdscan の終了ステータス
2
# 0: No virus found, 1: Virus(es) found, 2: An error occurred
(c) ログ
... Infected files: 0 Total errors: 1 ...
(補足)
・"Permission denied" については、当該ディレクトリが再作成されたためである。
・xxx.iso のファイル・サイズは、4GB を越える。
・ファイル・サイズの制限で除外され、これがエラーとされたものと思われる。
・更新前の clamd-0.102.4-1.el7.x86_64 では発生しない。
マルチブートしている Debian 10 (ClamAV 0.102.4) でも発生しない。
clamav-daemon 0.102.4+dfsg-0+deb10u1
clamdscan 0.102.4+dfsg-0+deb10u1
2. 対処方法
2-1. 上記 1. の (1) への対処対応
(1) /run/clamd.scan のパーミションの変更
# chmod 755 /run/clamd.scan
(2) /etc/tmpfiles.d/clamd.scan.conf の作成
# cat /etc/tmpfiles.d/clamd.scan.conf d /run/clamd.scan 0755 clamscan virusgroup -
(補足)
/usr/lib/tmpfiles.d/clamd.scan.conf の設定を変更するためである。
尚、当該ディレクトリを新規作成する場合の設定である。
2-2. 上記 1. の (2) への対処対応
下記のいずれかの手順を実施する。
(1) clamdscan の終了ステータスに着目しない場合
このエラーメッセージを無視し、Infected files: の値に着目する。
(2) clamdscan の終了ステータスに着目する場合
clamdscan を実行するスクリプトを作成し、終了ステータスを補正する。
スクリプトの処理概要は、下記の通りである。
# clamdscan clamdscan ... status=$? # discard file size error # - setting for ClamAV 0.103 case `clamd -V` in ClamAV\ 0.103.*) if [ $status = 2 ] && grep -q "^Infected files: 0" $log; then size_error=`grep -c "Can't allocate memory ERROR" $log` error_cnt=`grep "^Total errors:" $log | sed 's/.*: //'` if [ $size_error = "$error_cnt" ]; then status=0 fi fi ;; esac exit $status
(3) iso ファイルをチェック対象から除外する場合
/etc/clamd.d/scan.conf に下記の設定を追加する。
ExcludePath .*\.iso$