# ClamAV 1. [TL;DR](#tldr) 1. [Gotchas](#gotchas) 1. [Further readings](#further-readings) 1. [Sources](#sources) ## TL;DR
Setup ```sh brew install 'clamav' \ && cp '/opt/homebrew/etc/clamav/clamd.conf.sample' '/opt/homebrew/etc/clamav/clamd.conf' \ && cp '/opt/homebrew/etc/clamav/freshclam.conf.sample' '/opt/homebrew/etc/clamav/freshclam.conf' \ && sudo chown ':_clamav' '/opt/homebrew/var/lib/clamav' \ && sudo chmod 'g+w' '/opt/homebrew/var/lib/clamav' ```
Usage ```sh # Manually update the virus definitions. # Do this once **before** starting a scan or the daemon. # The definitions updater daemon **must be stopped** to avoid its complaints. sudo systemctl stop 'clamav-freshclam' \ && sudo 'freshclam' \ && sudo systemctl enable --now 'clamav-freshclam' # Scan specific files or directories. clamscan 'path/to/file' clamscan --recursive 'path/to/dir' # Only scan files in a list. clamscan -i -f '/tmp/scan.list' # Only return specific results. clamscan --infected '/home/' clamscan --suppress-ok-results 'Downloads/' # Save results to files. clamscan --bell -i -r '/home' -l 'output.txt' # Delete infected files. clamscan -r --remove '/home/user' clamscan -r -i --move='/home/user/infected' '/home/' # Limit CPU usage. nice -n 15 clamscan \ && clamscan --bell -i -r '/home' # Use multiple threads. find . -type f -printf "'%p' " | xargs -P "$(nproc)" -n 1 clamscan find . -type f | parallel --group --jobs 0 -d '\n' clamscan {} ```
## Gotchas - The `--fdpass` option of `clamdscan` (**with** the _d_ in the command name) sends a file descriptor to `clamd` rather than a path name, avoiding the need for the `clamav` user to be able to read everyone's files. - `clamscan` is designed to be **single**-threaded, so it willfully uses a **single** CPU thread when scanning files or directories from the command line.
Use `xargs` or another executor to run scans in parallel: ```sh find . -type f -printf "'%p' " | xargs -P $(nproc) -n 1 clamscan find . -type f | parallel --group --jobs 0 -d '\n' clamscan {} ``` ## Further readings - [Website] - [Codebase] - [Documentation] - [Gentoo Wiki] - [On-Access Scanning] ### Sources - [Install ClamAV on Fedora Linux] [Codebase]: https://github.com/Cisco-Talos/clamav [Documentation]: https://docs.clamav.net/ [On-Access Scanning]: https://docs.clamav.net/manual/OnAccess.html [Website]: https://www.clamav.net/ [Gentoo Wiki]: https://wiki.gentoo.org/wiki/ClamAV [Install ClamAV on Fedora Linux]: https://linuxcapable.com/install-clamav-on-fedora-linux/