[packages/cronie] Rel 4; make cronie restart itself when PAM problems happen.
Elan Ruusamäe
glen at pld-linux.org
Tue Nov 23 22:41:09 CET 2021
On 23.11.2021 12:29, arekm wrote:
> commit 428b9c73df902f6232312751a0c38060cf3cdbea
> Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
> Date: Tue Nov 23 11:25:06 2021 +0100
>
> Rel 4; make cronie restart itself when PAM problems happen.
>
> On glibc/pam upgrades cronie can be very unhappy:
>
> Feb 9 13:52:01 firma /usr/sbin/crond[6592]: (root) FAILED
> to authorize user with PAM (Moduł jest nieznany)
>
> because crond is inked with old stuff and can't dlopen newer pam modules.
>
> Exact cause (like which symbol) is not known because crond
> is using PAM_SILENT flag which silences most of pam error messages.
>
> Add hacky script to make crond self cure (this problem happened way
> too many times for me).
>
> cronie.spec | 15 ++++++++++++++-
> 1 file changed, 14 insertions(+), 1 deletion(-)
> ---
> diff --git a/cronie.spec b/cronie.spec
> index 2255574..c7b5da6 100644
> --- a/cronie.spec
> +++ b/cronie.spec
> @@ -18,7 +18,7 @@ Summary: Cron daemon for executing programs at set times
> Summary(pl.UTF-8): Demon cron do uruchamiania programów o zadanym czasie
> Name: cronie
> Version: 1.5.7
> -Release: 2
> +Release: 4
> License: MIT and BSD and GPL v2
> Group: Daemons
> Source0: https://github.com/cronie-crond/cronie/releases/download/%{name}-%{version}/%{name}-%{version}.tar.gz
> @@ -166,6 +166,18 @@ cat > $RPM_BUILD_ROOT%{_sysconfdir}/cron/cron.deny << 'EOF'
> # NOT allowed to use the local cron daemon
> EOF
>
> +cat > $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/check-crond << 'EOF'
> +#!/bin/sh
> +
> +# ugly and limited hack. make cronie restart itself
> +if [ -x /bin/awk -a -x /bin/grep -a -f /var/log/cron ]; then
-a is bashism, use [ cond1 ] && [ cond2 ] && cond3
> + LC_ALL=C /bin/awk -v d="$(LC_ALL=C date "+%b %e")" ' $1 " " $2 ~ d' /var/log/cron \
> + | /bin/grep -qE "PAM.*(Modu. jest nieznany|Module is unknown)" \
why full paths? cron resets PATH to sane value, and can be overriden if
wanted
> + && echo "crond is failing on PAM, restarting ( https://github.com/cronie-crond/cronie/issues/87 )" >&2 \
> + && /sbin/service crond restart
> +fi
> +EOF
> +
why not implement execve(argv) in crond itself?
and so far we've added %trigger to glibc, etc to restart cron daemons
More information about the pld-devel-en
mailing list