Почасовый сценарий крона Clamscan перестал работать при чтении списка файлов

У меня есть эта часть кода, расположенного в/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 clam@nas.local #####@#####.##
fi
exit

Когда я выполняю его от терминала, это не дает ошибки.

Однако, когда крон запускает скрипт, он отправляет ошибку в корневой почтовый ящик: ОШИБКА: - список файлов: не Может открыть файл/tmp/clamscan. MLXep5

Файл создается находкой и принадлежит корню (разрешение 600). Задание крона также выполняется как корень, таким образом, я предполагаю, что полномочия не должны быть проблемой (или это?).

1
задан 14 October 2014 в 10:23
2 ответа

Оказалось, проблема в SElinux.

audit2allow -a

возвращает:

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

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

И решается вводом:

setsebool -P antivirus_can_scan_system 1
1
ответ дан 4 December 2019 в 00:17

Помимо того, что ваш скрипт в значительной степени сломан, я предлагаю вам написать что-нибудь вроде следующего.

Не используйте имена переменных с заглавной буквы. По соглашению только переменные среды пишутся с заглавной буквы.

Не используйте абсолютные пути для двоичных файлов, таких как find, mail и т. Д.

#!/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 clam@nas.local
exit
0
ответ дан 4 December 2019 в 00:17

Теги

Похожие вопросы