При попытке запуска неподписанной программы пользовательем-1 integrity-notifier.service завершается с ошибкой и не рестартует, если указанный в /etc/integrity/also какой-либо пользователь незалогинен. [vs@host-191 ~]$ systemctl status integrity-notifier.service × integrity-notifier.service - Integrity notifier service Loaded: loaded (/lib/systemd/system/integrity-notifier.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Wed 2025-05-14 21:10:46 MSK; 34s ago Process: 2268 ExecStart=/usr/sbin/integrity-notifier (code=exited, status=1/FAILURE) Main PID: 2268 (code=exited, status=1/FAILURE) CPU: 25ms мая 14 21:06:22 host-191 systemd[1]: Started Integrity notifier service. мая 14 21:06:22 host-191 integrity-notifier[2285]: tail: '/var/log/integrityd//current' стал недоступен: Нет такого файла или ката> мая 14 21:06:22 host-191 integrity-notifier[2285]: tail: '/var/log/integrityd//current' появился; новый файл мая 14 21:10:46 host-191 integrity-notifier[3121]: write: vvs is not logged in мая 14 21:10:46 host-191 systemd[1]: integrity-notifier.service: Main process exited, code=exited, status=1/FAILURE мая 14 21:10:46 host-191 systemd[1]: integrity-notifier.service: Failed with result 'exit-code'.
Всё это происходит из-за того, что в скрипте /usr/sbin/integrity-notifier используется команда write для отправки сообщений. Собственно, это и вызывает ошибку и падение сервиса. Этого можно избежать, если использовать команду logger -p emerg "message" В данном случае сообщения будут отправлены широковещательные сообщения и сделана запись в журнал
Либо необходимо проверять список пользователей, кто залогинен, кто нет
Версия - integrity-notifier-0.7.1-alt1 Шаги воспроизведения # useradd checkuser # passwd checkuser # apt-get install integrity-notifier ima-evm-integrity-check updater -y # echo checkuser >> /etc/integrity/also # systemctl enable --now integrity-notifier; systemctl status integrity-notifier --no-pager -l # echo "@$(echo -n "40000000" && head -c 8 /dev/urandom | xxd -p | tr -d '\n') $(date +'%d %B %H:%M:%S') $(hostname) audit[3000]: INTEGRITY_DATA pid=3000 uid=$(id -u checkuser) auid=0 ses=1 op=appraise_data cause=invalid-signature comm=\"bash\" name=\"/usr/bin/mc\" dev=\"sda1\" ino=681023 res=0 errno=0" >> /var/log/integrityd/current # systemctl status integrity-notifier --no-pager -l Ожидаемый результат: сервис в статусе running Фактический результат: сервис в статусе failed
integrity-notifier-0.7.2-alt1 -> sisyphus: Wed May 21 2025 Paul Wolneykien <manowar@altlinux> 0.7.2-alt1 - Restart both services on failure. - Fix: Don't exit on write failure (closes: 54267).