ClamAVの除外するパスの指定で使用できる正規表現の仕様 [Linux]
ClamAV(clamscan、clamdscan) の除外するパスの指定では、正規表現が使用できる。
しかし、どのレベルの正規表現が使用できるのかが不明確なため、検証を行った。
(Debian 9、Debian 10、CentOS 7 で検証を実施。)
詳細は、以下の通りである。
1. .(ピリオド)
2. *(アスタリスク)
3. +(プラス)
4. ^(キャレット、ハット)
5. $(ドル、ダラー)
6. [] での範囲指定
7. [^] での範囲の除外
8. () でのグループ化
9. {} でのグループ化
しかし、どのレベルの正規表現が使用できるのかが不明確なため、検証を行った。
(Debian 9、Debian 10、CentOS 7 で検証を実施。)
詳細は、以下の通りである。
1. .(ピリオド)
任意の 1 文字を表す。
2. *(アスタリスク)
直前の文字の 0 回以上の繰り返しを表す。
よって、すべての文字列を表すには、'*' ではなく、'.*' を使用する。
3. +(プラス)
直前の文字の 1 回以上の繰り返しを表す。
4. ^(キャレット、ハット)
先頭を表す。
5. $(ドル、ダラー)
末尾を表す。
6. [] での範囲指定
サポートされている。
(例) # clamdscan の場合 ExcludePath ^/tmp/data[1-3]/ # clamscan の場合 --exclude-dir='^/tmp/data[1-3]/'
7. [^] での範囲の除外
サポートされている。
(例) # clamdscan の場合 ExcludePath ^/tmp/data[^1-3]/ # clamscan の場合 --exclude-dir='^/tmp/data[^1-3]/'
8. () でのグループ化
サポートされている。
(例) # clamdscan の場合 ExcludePath ^/(mnt|misc|net|media)/ # clamscan の場合 --exclude-dir='^/(mnt|misc|net|media)/'
9. {} でのグループ化
サポートされていない。
(例) # clamdscan の場合 ExcludePath ^/{mnt,misc,net,media}/ # clamscan の場合 --exclude-dir='^/{mnt,misc,net,media}/'