De hora em hora, o script cron Clamscan falha na leitura da lista de arquivos

1

Eu tenho este trecho de código localizado em /etc/cron.hourly/hourlyclamscan.

#!/usr/bin/bash
# Create Hourly Cron Job With Clamscan

# Directories to scan
SCAN_DIR=/home/transmission/Downloads

# Temporary file
LIST_FILE='mktemp /tmp/clamscan.XXXXXX'

# Location of log file
LOG_FILE=/var/log/clamav/hourly_clamscan.log

# Make list of new files
/usr/bin/find "$SCAN_DIR" -type f -mmin -60 -fprint ${LIST_FILE}
# Scan files and remove infected
/usr/bin/clamscan -i -f ${LIST_FILE} --remove > $LOG_FILE

# If there were infected files detected, send email alert
if [ 'cat ${LOG_FILE}  | grep Infected | grep -v 0 | wc -l' != 0 ]
then
echo "$(egrep "FOUND" $LOG_FILE)" | /bin/mail -s "VIRUS PROBLEM" -r [email protected] #####@#####.##
fi
exit

Quando eu o executo no terminal, não há erro.

No entanto, quando o cron executa o script, ele envia um erro para a caixa de correio raiz: ERRO: --file-list: Não é possível abrir o arquivo /tmp/clamscan.MLXep5

O arquivo é criado por localizar e pertencer a root (permissão 600). O cron job também é executado como root, então presumo que as permissões não devam ser um problema (ou são?).

    
por Royco 14.10.2014 / 09:23

2 respostas

1

Descobriu-se o problema do SElinux.

audit2allow -a

retorna:

#============= antivirus_t ==============

#!!!! This avc can be allowed using the boolean 'antivirus_can_scan_system'
allow antivirus_t home_root_t:dir read;

E resolvido inserindo:

setsebool -P antivirus_can_scan_system 1
    
por 14.10.2014 / 19:32
0

Além de seu roteiro estar muito quebrado, sugiro que você escreva algo como o seguinte.

Não use nomes de variáveis capitalizadas. Somente variáveis de ambiente são capitalizadas por convenção.

Não use caminhos absolutos para binários como find, mail etc.

#!/usr/bin/bash
# Create Hourly Cron Job With Clamscan

# Directories to scan
scan_dir="/home/transmission/Downloads"

# Temporary file
list_file=$(mktemp /tmp/clamscan.XXXXXX)

# Location of log file
log_file="/var/log/clamav/hourly_clamscan.log"

# Make list of new files
find "$scan_dir" -type f -mmin -60 -fprint "$list_file"
# Scan files and remove infected
clamscan -i -f "$list_file" --remove > "$log_file"

# If there were infected files detected, send email alert
grep -q "Infected" "$log_file" && mail -s "VIRUS PROBLEM" -r [email protected]
exit
    
por 14.10.2014 / 09:36