Bug 30413 - Добавить -X в вызов osec в osec.cron
Summary: Добавить -X в вызов osec в osec.cron
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: osec-cronjob (show other bugs)
Version: unstable
Hardware: all Linux
: P3 enhancement
Assignee: Alexey Gladkov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 30940
  Show dependency tree
 
Reported: 2014-10-23 12:46 MSK by Sergey Y. Afonin
Modified: 2016-12-08 23:27 MSK (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey Y. Afonin 2014-10-23 12:46:34 MSK
Чтобы не править osec.cron, не плохо бы предопределить файл с исключениями. И не плохо бы пример, так как я что-то не угадаю никак, как мне сделать исключение для, например, /var/www/vhosts/*/temp/*, если /var/www находится в dirs.conf.
Comment 1 Alexey Gladkov 2014-10-23 14:13:17 MSK
В master это уже реализовано. К сожалению тот кто это заказывал исчез (возможно потерял интерес) и протестировать результат не смог.
Comment 2 Sergey Y. Afonin 2014-10-23 15:27:46 MSK
Нашел

-       $cmd /usr/bin/osec -D /var/lib/osec -f "$CONFDIR/dirs.conf" ||
+       $cmd /usr/bin/osec \
+               ${EXCLUDE_FILE:+-X "$EXCLUDE_FILE"} \
+               -D "$DATABASE_DIR" \
+               -f "$CONFDIR/dirs.conf" ||

На вид нормально. Только вот формат записи для паттернов никак не угадаю. :-( Никак не получается задать игнорирование подкаталогов temp в /var/www/vhosts/*/

Хотя, я там вижу патч "Fix exclude option". Не это ли причина ? Я с 1.2.5-alt3 пробую.
Comment 3 Alexey Gladkov 2014-10-23 15:32:38 MSK
Исключения адаются в файле в формате fnmatch.

Я сейчас сделаю тестовое задание.
Comment 4 Alexey Gladkov 2014-10-23 16:00:58 MSK
(В ответ на комментарий №3)
> Я сейчас сделаю тестовое задание.

http://git.altlinux.org/tasks/132898/
Comment 5 Sergey Y. Afonin 2014-10-23 17:15:31 MSK
(In reply to comment #3)

> Исключения задаются в файле в формате fnmatch.

Тогда непонятно, почему не работает. osec из 132898 поставил.
Сделал файл /etc/osec/exclude-patterns.conf. Содержимое из 4-х строк:

*2345678*
123456789
temp/*
temp

В кавычки и апострафы брать пробовал тоже. Есть файл
/var/www/vhosts/webmail/temp/123456789
Он продолжает мониториться.

В pipe.conf EXCLUDE_FILE=/etc/osec/exclude-patterns.conf написать не забыл.
Comment 6 Alexey Gladkov 2014-10-23 18:25:12 MSK
(В ответ на комментарий №5)
> В pipe.conf EXCLUDE_FILE=/etc/osec/exclude-patterns.conf написать не забыл.

Спасибо. Вы нашли багу :)
Comment 7 Alexey Gladkov 2014-10-23 18:40:15 MSK
(В ответ на комментарий №6)
> (В ответ на комментарий №5)
> > В pipe.conf EXCLUDE_FILE=/etc/osec/exclude-patterns.conf написать не забыл.
> 
> Спасибо. Вы нашли багу :)

Исправление в одну строчку:

diff --git a/data/osec.cron b/data/osec.cron
index 179c3c3..219af82 100755
--- a/data/osec.cron
+++ b/data/osec.cron
@@ -97,7 +97,6 @@ fi
 if [ -n "${EXCLUDE_FILE-}" ]; then
        if [ ! -f "$EXCLUDE_FILE" ]; then
                errlog "$EXCLUDE_FILE: Not found, parameter EXCLUDE will be ignored"
-       else
                EXCLUDE_FILE=
        fi
 fi
Comment 8 Sergey Y. Afonin 2014-10-24 09:38:56 MSK
Всё равно не работает. Даже если -X /etc/osec/exclude-patterns.conf написать вместо ${EXCLUDE_FILE:+-X "$EXCLUDE_FILE"}. В каталоге temp мониторится всё, включая 123456789.
Comment 9 Alexey Gladkov 2014-10-24 13:39:36 MSK
(В ответ на комментарий №8)
> Всё равно не работает. Даже если -X /etc/osec/exclude-patterns.conf написать
> вместо ${EXCLUDE_FILE:+-X "$EXCLUDE_FILE"}. В каталоге temp мониторится всё,
> включая 123456789.

Потому что правильный fnmatch для исключения каталога temp:

*/temp
*/temp/*
Comment 10 Sergey Y. Afonin 2014-10-24 14:50:52 MSK
Так я тоже пробовал. В общем, это просто баг в 1.2.5-alt3. В osec из задания 132898 работает.
Comment 11 Sergey Y. Afonin 2014-10-24 14:54:21 MSK
И, всё же, я бы положил exclude-patterns.conf с примером, прямо хоть тот же
 
*/temp
*/temp/*
Comment 12 Alexey Gladkov 2014-10-24 14:57:20 MSK
(В ответ на комментарий №11)

Да. В 1.2.5 эта опция была сломана.

> И, всё же, я бы положил exclude-patterns.conf с примером, прямо хоть тот же
> 
> */temp
> */temp/*

ОК. Приложу exclude-patterns.conf как пример.
Comment 13 Sergey Y. Afonin 2015-06-17 09:38:21 MSK
Не пора ли в Сизифе обновить ?
Comment 14 Sergey Y. Afonin 2015-10-18 23:21:28 MSK
Тук-тук. Надо обновлять версию в Сизифе.
Comment 15 Sergey Y. Afonin 2016-05-24 13:28:01 MSK
Уже бац-бац. Анонс p8 не носу. :-)
Comment 16 Repository Robot 2016-11-23 23:07:55 MSK
osec-1.2.7-alt1 -> icarus:

* Sat Sep 03 2016 Alexey Gladkov <legion@altlinux> 1.2.7-alt1
- New version (1.2.7);
- Fix EXCLUDE_FILE handling (ALT#30413);
- Add default exclude.conf (ALT#30413);
- dirs.conf: Add /usr/share (ALT#31706);
- Use perl-RPM2;

* Thu Oct 23 2014 Alexey Gladkov <legion@altlinux> 1.2.6-alt1
- New version (1.2.6);
- Add file exclusion option;
- osec.cron: Add multiconfiguration support.
Comment 17 Gleb F-Malinovskiy 2016-11-23 23:15:52 MSK
Прошу прощения, этого не должно было случиться.
Comment 18 Sergey Y. Afonin 2016-11-24 17:20:29 MSK
(In reply to comment #17)

> Прошу прощения, этого не должно было случиться.

А жаль... Я смотрю, упирается в perl-RPM2, который хочет rpm-devel >= 4.6 ? perl-RPM-Database тоже более новый rpm хочет ?

Я так понимаю, в p8 osec с таким изменением уже не попадает, даже если в Сизифе RPM обновится ?
Comment 19 Sergey Y. Afonin 2016-11-24 18:30:26 MSK
(In reply to comment #18)

> А жаль... Я смотрю, упирается в perl-RPM2, который хочет rpm-devel >= 4.6 ?
> perl-RPM-Database тоже более новый rpm хочет ?

Так. Стоп. Это же perl-RPM, и он есть. Попробовал собрать себе 1.2.7-alt1. Почти всё хорошо, но есть но. В dirs.conf добавил "/home", в exclude.conf добавил "*/asy/*". В итоге файлы внутри не отслеживаются, но отслеживаются атрибуты самого каталога. Например, создание файла внутри меняет время:

Changed controlled files:
        - /home/asy
                mtime: Thu Nov 24 19:18:34 2016 -> Thu Nov 24 19:23:45 2016

Ещё в спеке надо поправить:

-mv -- etc/dirs.conf .%_datadir/pipe.conf etc/osec/
+mv -- etc/dirs.conf etc/exclude.conf .%_datadir/pipe.conf etc/osec/
Comment 20 Alexey Gladkov 2016-11-24 18:48:29 MSK
(В ответ на комментарий №19)
> Так. Стоп. Это же perl-RPM, и он есть. Попробовал собрать себе 1.2.7-alt1.
> Почти всё хорошо, но есть но. В dirs.conf добавил "/home", в exclude.conf
> добавил "*/asy/*". В итоге файлы внутри не отслеживаются, но отслеживаются
> атрибуты самого каталога. Например, создание файла внутри меняет время:
> 
> Changed controlled files:
>         - /home/asy
>                 mtime: Thu Nov 24 19:18:34 2016 -> Thu Nov 24 19:23:45 2016

А это потому что '/home/asy' не подподает под паттерн "*/asy/*".

> Ещё в спеке надо поправить:
> 
> -mv -- etc/dirs.conf .%_datadir/pipe.conf etc/osec/
> +mv -- etc/dirs.conf etc/exclude.conf .%_datadir/pipe.conf etc/osec/

Да, забыл. Спасибо!
Comment 21 Sergey Y. Afonin 2016-11-25 10:43:59 MSK
> А это потому что '/home/asy' не подподает под паттерн "*/asy/*".

Что-то я второй раз на эти грабли наступил...

В общем, мне кажется, эту версию стоит уже в Сизиф отправить и в p8 (c возвратом perl-RPM вместо perl-RPM2). Кстати, а libcap-devel в сборочных зависимостях правда нужен ?
Comment 22 Alexey Gladkov 2016-11-25 12:01:26 MSK
(В ответ на комментарий №21)
> > А это потому что '/home/asy' не подподает под паттерн "*/asy/*".
> 
> Что-то я второй раз на эти грабли наступил...

Паттерны они такие ))

> В общем, мне кажется, эту версию стоит уже в Сизиф отправить и в p8 (c
> возвратом perl-RPM вместо perl-RPM2). Кстати, а libcap-devel в сборочных
> зависимостях правда нужен ?

Нужен. osec сбрасывает себе права перед тем как начать сканирование.
Comment 23 Repository Robot 2016-12-08 23:27:28 MSK
osec-1.2.7-alt1 -> sisyphus:

* Sat Sep 03 2016 Alexey Gladkov <legion@altlinux> 1.2.7-alt1
- New version (1.2.7);
- Fix EXCLUDE_FILE handling (ALT#30413);
- Add default exclude.conf (ALT#30413);
- dirs.conf: Add /usr/share (ALT#31706);
- Use perl-RPM2;

* Thu Oct 23 2014 Alexey Gladkov <legion@altlinux> 1.2.6-alt1
- New version (1.2.6);
- Add file exclusion option;
- osec.cron: Add multiconfiguration support.