Created
November 18, 2018 09:16
-
-
Save freayd/cfac4d4860f6a5e34018787e17a7ddb6 to your computer and use it in GitHub Desktop.
Install ClamAV on macOS
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
CONFIG_FOLDER=/usr/local/etc/clamav | |
CLAMD_CONFIG_FILE=$CONFIG_FOLDER/clamd.conf | |
FRESHCLAM_CONFIG_FILE=$CONFIG_FOLDER/freshclam.conf | |
DB_FOLDER=/usr/local/var/lib/clamav | |
RUN_FOLDER=/usr/local/var/run/clamav | |
LOG_FOLDER=/usr/local/var/log | |
CLAMD_LOG_FILE=$LOG_FOLDER/clamd.log | |
CLAMD_ERROR_LOG_FILE=$LOG_FOLDER/clamd.error.log | |
FRESHCLAM_LOG_FILE=$LOG_FOLDER/freshclam.log | |
FRESHCLAM_ERROR_LOG_FILE=$LOG_FOLDER/freshclam.error.log | |
( brew list --versions clamav > /dev/null ) || brew install clamav || exit | |
[ -e "$CLAMD_CONFIG_FILE" ] || ( | |
sudo cp "${CLAMD_CONFIG_FILE}.sample" "$CLAMD_CONFIG_FILE" | |
sudo sed -e "s/# Example config file/# Config file/" \ | |
-e "s/^Example$/# Example/" \ | |
-e "s/^#LogFile .*/LogFile ${CLAMD_LOG_FILE//\//\\/}/" \ | |
-e "s/^#PidFile .*/PidFile ${RUN_FOLDER//\//\\/}\/clamd.pid/" \ | |
-e "s/^#DatabaseDirectory .*/DatabaseDirectory ${DB_FOLDER//\//\\/}/" \ | |
-e "s/^#LocalSocket .*/LocalSocket ${RUN_FOLDER//\//\\/}\/clamd.socket/" \ | |
-i -n "$CLAMD_CONFIG_FILE" | |
) | |
[ -e "$FRESHCLAM_CONFIG_FILE" ] || ( | |
sudo cp "${FRESHCLAM_CONFIG_FILE}.sample" "$FRESHCLAM_CONFIG_FILE" | |
sudo sed -e "s/# Example config file/# Config file/" \ | |
-e "s/^Example$/# Example/" \ | |
-e "s/^#DatabaseDirectory .*/DatabaseDirectory ${DB_FOLDER//\//\\/}/" \ | |
-e "s/^#UpdateLogFile .*/UpdateLogFile ${FRESHCLAM_LOG_FILE//\//\\/}/" \ | |
-e "s/^#PidFile .*/PidFile ${RUN_FOLDER//\//\\/}\/freshclam.pid/" \ | |
-e "s/^#NotifyClamd .*/NotifyClamd ${CLAMD_CONFIG_FILE//\//\\/}/" \ | |
-i -n "$FRESHCLAM_CONFIG_FILE" | |
) | |
sudo mkdir -p "$DB_FOLDER" | |
sudo mkdir -p "$RUN_FOLDER" | |
[ -e "$CLAMD_LOG_FILE" ] || sudo touch "$CLAMD_LOG_FILE" | |
[ -e "$CLAMD_ERROR_LOG_FILE" ] || sudo touch "$CLAMD_ERROR_LOG_FILE" | |
[ -e "$FRESHCLAM_LOG_FILE" ] || sudo touch "$FRESHCLAM_LOG_FILE" | |
[ -e "$FRESHCLAM_ERROR_LOG_FILE" ] || sudo touch "$FRESHCLAM_ERROR_LOG_FILE" | |
sudo chown -R root:wheel "$CONFIG_FOLDER" | |
sudo chown -R clamav:clamav "$DB_FOLDER" | |
sudo chown -R clamav:clamav "$RUN_FOLDER" | |
sudo chown clamav:clamav "$CLAMD_LOG_FILE" "$CLAMD_ERROR_LOG_FILE" "$FRESHCLAM_LOG_FILE" "$FRESHCLAM_ERROR_LOG_FILE" | |
sudo chmod 0644 "$CLAMD_CONFIG_FILE" "$FRESHCLAM_CONFIG_FILE" | |
sudo chmod 0644 "$CLAMD_LOG_FILE" "$CLAMD_ERROR_LOG_FILE" "$FRESHCLAM_LOG_FILE" "$FRESHCLAM_ERROR_LOG_FILE" | |
DAEMON_FOLDER=/Library/LaunchDaemons | |
CLAMD_DAEMON_NAME=clamav.clamd | |
CLAMD_DAEMON_FILE=$DAEMON_FOLDER/$CLAMD_DAEMON_NAME.plist | |
FRESHCLAM_DAEMON_NAME=clamav.freshclam | |
FRESHCLAM_DAEMON_FILE=$DAEMON_FOLDER/$FRESHCLAM_DAEMON_NAME.plist | |
sudo tee "$CLAMD_DAEMON_FILE" << EOF > /dev/null | |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<dict> | |
<key>Label</key> | |
<string>${CLAMD_DAEMON_NAME}</string> | |
<key>ProgramArguments</key> | |
<array> | |
<string>/usr/local/sbin/clamd</string> | |
<string>--foreground</string> | |
</array> | |
<key>KeepAlive</key> | |
<true/> | |
<key>StandardErrorPath</key> | |
<string>${CLAMD_ERROR_LOG_FILE}</string> | |
</dict> | |
</plist> | |
EOF | |
sudo tee "$FRESHCLAM_DAEMON_FILE" << EOF > /dev/null | |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<dict> | |
<key>Label</key> | |
<string>${FRESHCLAM_DAEMON_NAME}</string> | |
<key>ProgramArguments</key> | |
<array> | |
<string>/usr/local/bin/freshclam</string> | |
<string>--daemon</string> | |
<string>--foreground</string> | |
</array> | |
<key>KeepAlive</key> | |
<true/> | |
<key>StandardErrorPath</key> | |
<string>${FRESHCLAM_ERROR_LOG_FILE}</string> | |
</dict> | |
</plist> | |
EOF | |
sudo chown root:wheel "$CLAMD_DAEMON_FILE" "$FRESHCLAM_DAEMON_FILE" | |
sudo chmod 0644 "$CLAMD_DAEMON_FILE" "$FRESHCLAM_DAEMON_FILE" | |
sudo launchctl load "$CLAMD_DAEMON_FILE" "$FRESHCLAM_DAEMON_FILE" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment