Bug 39748

Summary: clamonacc и clamdscan не работают в конфигурации по умолчанию
Product: Sisyphus Reporter: Vera Blagoveschenskaya <vercha>
Component: clamavAssignee: Sergey Y. Afonin <asy>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: asy, rider, shaba
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Vera Blagoveschenskaya 2021-03-01 11:40:46 MSK
Тестовый стенд: workstation-91-x86-64, обновленный до Сизифа

workstation-91-x86-64-20210120 ~ # rpm -qa | grep clamav
clamav-milter-0.103.1-alt5.x86_64
clamav-0.103.1-alt5.x86_64
clamav-manual-0.103.1-alt5.noarch
clamav-freshclam-0.103.1-alt5.x86_64
clamav-clamonacc-0.103.1-alt5.x86_64
libclamav9-0.103.1-alt5.x86_64

1) Выполнить старт сервисов clamd, clamonacc.
2) Выполнить сканирование:
# freshclam
# clamscan -r /home
3) Проверить статус сервисов clamd, clamonacc.

Результат: ошибки вида 
lstat() failed on: /tmp/.private/root/20210225_190559-scantem.15063526cb/clamav-3831be33275591c5246034194429ae6f.tmp
lstat() failed: Permission denied. ERROR

Кусок лога:
-- Journal begins at Thu 2020-08-06 12:42:16 MSK. --
мар 01 11:20:26 workstation-91-x86-64-20210120.localdomain clamd[3008]: lstat() failed on: /tmp/.private/root/20210301_112026-scantem.df4d6b42f7/clamav-17429fa366f5fc1a2cc0bca820b86758.tmp
мар 01 11:20:26 workstation-91-x86-64-20210120.localdomain clamd[3008]: Mon Mar  1 11:20:26 2021 -> ^lstat() failed on: /tmp/.private/root/20210301_112026-scantem.df4d6b42f7/clamav-17429fa366f5fc1a2cc0bca820b86758.tmp
мар 01 11:20:26 workstation-91-x86-64-20210120.localdomain clamonacc[3174]: /tmp/.private/root/20210301_112026-scantem.df4d6b42f7/clamav-17429fa366f5fc1a2cc0bca820b86758.tmp: lstat() failed: Permission denied. ERROR
мар 01 11:20:26 workstation-91-x86-64-20210120.localdomain clamd[3008]: lstat() failed on: /tmp/.private/root/20210301_112026-scantem.df4d6b42f7/clamav-17429fa366f5fc1a2cc0bca820b86758.tmp
мар 01 11:20:26 workstation-91-x86-64-20210120.localdomain clamd[3008]: Mon Mar  1 11:20:26 2021 -> ^lstat() failed on: /tmp/.private/root/20210301_112026-scantem.974c1cc85a/clamav-9cbb2494cd24cd634da9d76411fe16a0.tmp
мар 01 11:20:26 workstation-91-x86-64-20210120.localdomain clamonacc[3174]: /tmp/.private/root/20210301_112026-scantem.974c1cc85a/clamav-9cbb2494cd24cd634da9d76411fe16a0.tmp: lstat() failed: Permission denied. ERROR
мар 01 11:20:26 workstation-91-x86-64-20210120.localdomain clamd[3008]: lstat() failed on: /tmp/.private/root/20210301_112026-scantem.974c1cc85a/clamav-9cbb2494cd24cd634da9d76411fe16a0.tmp
мар 01 11:20:26 workstation-91-x86-64-20210120.localdomain clamd[3008]: lstat() failed on: /tmp/.private/root/20210301_112026-scantem.974c1cc85a/clamav-9cbb2494cd24cd634da9d76411fe16a0.tmp
мар 01 11:20:26 workstation-91-x86-64-20210120.localdomain clamonacc[3174]: /tmp/.private/root/20210301_112026-scantem.974c1cc85a/clamav-9cbb2494cd24cd634da9d76411fe16a0.tmp: lstat() failed: Permission denied. ERROR
мар 01 11:20:26 workstation-91-x86-64-20210120.localdomain clamd[3008]: Mon Mar  1 11:20:26 2021 -> ^lstat() failed on: /tmp/.private/root/20210301_112026-scantem.974c1cc85a/clamav-9cbb2494cd24cd634da9d76411fe16a0.tmp
Comment 1 Sergey Y. Afonin 2021-03-01 13:14:22 MSK
У меня в p9/sysv и подключенным заданием 266151 "Permission denied" не воспроизводится.
Comment 2 Vera Blagoveschenskaya 2021-03-01 13:25:25 MSK
(Ответ для Sergey Y. Afonin на комментарий #1)
> У меня в p9/sysv и подключенным заданием 266151 "Permission denied" не
> воспроизводится.

Странно. Изначально ошибка была найдена именно в p9.
Comment 3 Anton Farygin 2021-03-01 13:42:47 MSK
потому чтоо ошибка, похоже, специфична для конфигураций на systemd а не sysvinit.
Comment 4 Sergey Y. Afonin 2021-03-27 15:31:47 MSK
(In reply to Sergey Y. Afonin from comment #1)

> У меня в p9/sysv и подключенным заданием 266151 "Permission denied" не
> воспроизводится.

И с systemd не воспроизводится.

> 1) Выполнить старт сервисов clamd, clamonacc.

Кстати, а зачем?

> clamscan -r /home

clamscan сам грузит базу и не использует clamd.
Comment 5 Sergey Y. Afonin 2021-03-27 15:38:54 MSK
> lstat() failed: Permission denied. ERROR

А может быть речь про clamdscan? Но тогда это нормально. clamd из-под пользователя mail работает и доступ куда угодно не имеет.
Comment 6 Sergey Y. Afonin 2021-04-05 13:23:49 MSK
(In reply to Sergey Y. Afonin from comment #5)

> > lstat() failed: Permission denied. ERROR
> 
> А может быть речь про clamdscan? Но тогда это нормально. clamd из-под
> пользователя mail работает и доступ куда угодно не имеет.

Так что? Если речь про clamd, то это не баг, так как clamd работает от пользователя mail.
Comment 7 Vera Blagoveschenskaya 2021-04-05 13:43:08 MSK
(Ответ для Sergey Y. Afonin на комментарий #6)
> (In reply to Sergey Y. Afonin from comment #5)
> 
> > > lstat() failed: Permission denied. ERROR
> > 
> > А может быть речь про clamdscan? Но тогда это нормально. clamd из-под
> > пользователя mail работает и доступ куда угодно не имеет.
> 
> Так что? Если речь про clamd, то это не баг, так как clamd работает от
> пользователя mail.

Я прямо сейчас не могу посмотреть.
Про вопрос помню.
Comment 8 Vera Blagoveschenskaya 2021-04-05 18:17:25 MSK
Тестовый стенд: workstation-91-x86-64, обновленный до Сизифа

Шаги по получению ошибок (все делаем из под root)
1) Установить 
# apt-get install clamav clamav-clamonacc
2) Стартовать сервис, проверить статус
systemctl start clamonacc
systemctl status clamonacc
Ошибок нет.
3) Выполнить сканирование
clamscan -r /home
4) Еще раз проверить статус
systemctl status clamonacc

Ошибки есть.

Если данное поведение корректно, прошу закрыть баг.
Comment 9 Sergey Y. Afonin 2021-04-06 11:52:30 MSK
(In reply to Vera Blagoveschenskaya from comment #8)

> Если данное поведение корректно, прошу закрыть баг.

Не знаю пока, как на Сизифе, но в p9 с заданием 266151 и при установке с нуля эта последовательность вообще не работает: "systemctl start clamonacc" висит. Хотя, наверное, это какая-то другая проблема, уже с systemd (что, опять? :-) ): было небольшое обновление системы (173 пакета, и без компонент systemd вроде), и я не перезагружал компьютер. После перезагрузки ставится и запускается:

# systemctl start clamonacc
# ps aux| grep clam
mail        5428 95.5  8.2 503648 467424 ?       Rs   12:35   0:33 /usr/sbin/clamd --foreground=true
root        5429  0.1  0.1 208552 10112 ?        Ssl  12:35   0:00 /usr/sbin/clamonacc -F --config-file=/etc/clamav/clamd.conf --l
Comment 10 Sergey Y. Afonin 2021-04-06 12:44:34 MSK
(In reply to Vera Blagoveschenskaya from comment #8)

> Ошибки есть.
> 
> Если данное поведение корректно, прошу закрыть баг.

Что касается самой ошибки. В общем это не бага, это фича. Но, вероятно, что-то с этим сделать стоит.

clamscan работает и без clamd/clamonscan, его это не касается.

clamdscan и clamonscan по умолчанию не работают из-за, как я уже раньше написал, пользователя mail в clamd.conf. Если "User mail" закомментировать, то они работать начинают. А дальше возникает вопрос. Основное применение у clamd раньше было в качестве проверялки для почтового сервера, причём ему скармливали файл, а не передавали дескриптор. В этом применении это хорошо, и под root запускать clamd совсем не хочется. Может быть пришло время сделать пакеты clamav-base, clamav-root и clamav-mail. Или даже ещё мельче пошинковать ввиду различий в работе бинарников.
Comment 11 Sergey Y. Afonin 2021-04-06 12:47:39 MSK
(In reply to Sergey Y. Afonin from comment #10)

> clamdscan и clamonscan по умолчанию не работают

clamonacc
Comment 12 Sergey Y. Afonin 2021-04-10 16:12:17 MSK
В Sisyphus ушёл 0.103.2-alt1. Изменений по этому багу практически нет.

Сосстояние по утилитам:

clamd работает от пользователя mail, как писалось ранее;

clamscan сам грузит базу и не использует clamd, должен работать;

clamdscan работает только при условии использования опции --fdpass, когда он передаёт в clamd весь файл; в этой ситуации пользователь, под которым работает clamd, значения не имеет; в противном случае clamd может не иметь доступа к файлу;

clamonacc нормальным образом не работает так же по причине того, что используется пользователь mail; кроме того, убрана строка "OnAccessIncludePath /tmp", котрая когда-то была добавлена по ошибке: каталог, указанный в TemporaryDirectory, либо используемый по умолчанию не должен попадать в OnAccessIncludePath; в итоге сейчас при запуске clamonacc будет возникать ошибка "ERROR: ClamInotif: Please specify at least one path with OnAccessIncludePath".