Je veux recevoir un avertissement sur mon bureau lorsque rkhunter trouve quelque chose d'étrange sur mon système.
J'ai mis en liste blanche certains fichiers et répertoires qui semblent corrects dans /etc/rkhunter.conf
donc je n'ai plus d'avertissement.
Maintenant, je veux mettre cette commande quelque part:
Sudo rkhunter --checkall --report-warnings-only | while read OUTPUT; do notify-send "$OUTPUT"; done
Je sais comment utiliser cron
mais cela ne fonctionne pas, car mon ordinateur fonctionne à des heures irrégulières, alors où dois-je le mettre pour qu'il soit exécuté une fois par jour mais pas pendant le système -boot? Optimal serait de 30 minutes après le démarrage.
zenity
Créez un fichier /usr/local/sbin/rkhunter-check
et le rendre exécutable:
Sudo touch /usr/local/sbin/rkhunter-check
Sudo chmod +x /usr/local/sbin/rkhunter-check
Modifiez le fichier gksu gedit /usr/local/sbin/rkhunter-check
#!/usr/bin/env bash
export DISPLAY=:0
MAINUSER="$(awk -F: '$3==1000{print $1}' /etc/passwd)"
LOG=/tmp/.rkhunter-warnings
rm -f $LOG
touch $LOG
rkhunter --checkall --report-warnings-only | while read OUTPUT; do
if [ "$OUTPUT" != "" ]; then
OUTPUT="${OUTPUT//[\`\"\']/}"
echo "$OUTPUT">>$LOG
fi
done
if [ "$(cat $LOG)" = "" ]; then
#like this there is always a notification, even if there is no warning, it will show an empty notification.
echo "#no warnings">$LOG
fi
if [ "$(cat $LOG)" != "" ]; then
su $MAINUSER -c 'zenity --text-info --width 800 --title "Rkhunter warnings" < '"$LOG"
fi
Si l'exécution de rkhunter génère une sortie (uniquement des avertissements), ce script apparaîtra comme une fenêtre déroulante avec la sortie de rkhunter.
Créez le script /etc/systemd/system/rkhunter.service
:
[Unit]
Description=starts rkhunter and displays any findings with zenity
[Service]
TimeoutStartSec=infinity
ExecStartPre=/bin/sleep 1800
ExecStart=/usr/local/sbin/rkhunter-check
[Install]
WantedBy=default.target
Mettre à jour systemd avec:
Sudo systemctl daemon-reload
Sudo systemctl enable rkhunter
Sudo systemctl start rkhunter
/etc/rc.local
Sur les systèmes sans systemd
appelez le script lors de l'exécution dans /etc/rc.local
et mettre un sommeil avant la commande entière:
gksu gedit /etc/rc.local
Ajoutez cette commande avant la dernière ligne de /etc/rc.local
cela contient exit 0
:
sleep 1800 && /usr/local/sbin/rkhunter-check &
Les deux solutions attendront 30 minutes avant d'exécuter la vérification rkhunter en tant que root .
Vous pouvez également combiner cette solution avec la solution notify-send, car dans le cas où il n'y a pas d'avertissement, une boîte de dialogue de zénité n'est pas parfaite. une notification suffirait dans ce cas
#!/usr/bin/env bash
export DISPLAY=:0
MAINUSER="$(awk -F: '$3==1000{print $1}' /etc/passwd)"
LOG=/tmp/.rkhunter-warnings
echo ""> $LOG
rkhunter --checkall --report-warnings-only | while read OUTPUT; do
if [ "$OUTPUT" != "" ]; then
OUTPUT="${OUTPUT//[\`\"\']/}"
echo "$OUTPUT">>$LOG
fi
done
if [ "$(cat $LOG)" = "" ]; then
MAINUSER="$(awk -F: '$3==1000{print $1}' /etc/passwd)"
if [ -r "/home/$MAINUSER/.dbus/Xdbus" ]; then
. "/home/$MAINUSER/.dbus/Xdbus"
fi
su $MAINUSER -c $"notify-send \"rkhunter: no warnings\""
fi
if [ "$(cat $LOG)" != "" ]; then
su $MAINUSER -c 'zenity --text-info --width 800 --title "Rkhunter warnings" < '"$LOG"
fi
source: Comment exécuter un script lors du démarrage en tant que root
anachron
et notify-send
La réponse au problème est anachron qui exécute automatiquement les commandes en tant que root , où root a besoin d'accéder à la session dbus du principal utilisateur.
Pour permettre à l'utilisateur root d'accéder au bureau de l'utilisateur par défaut, vous devez d'abord définir le DBUS_SESSION_BUS_ADDRESS
variable. Par défaut, cron n'a pas accès à la variable qui change à chaque démarrage du système. Pour y remédier, placez le script suivant dans votre répertoire personnel et appelez-le ~/dbus-session-export
#!/bin/sh
touch ~/.dbus/Xdbus
chmod 600 ~/.dbus/Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > ~/.dbus/Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> ~/.dbus/Xdbus
exit 0
Donnez-lui des droits exécutables:
chmod +x ~/dbus-session-export
Et appelez-le dans vos programmes de démarrage. Cela va créer/mettre à jour le fichier ~/.dbus/Xdbus
contenant la variable d'environnement Dbus requise pour anachron à utiliser à chaque démarrage du système.
Mettez un script dans le dossier /etc/cron.daily/
et le rendre exécutable:
Sudo touch /etc/cron.daily/rkhunter-check
Sudo chmod +x /etc/cron.daily/rkhunter-check
Modifiez le fichier gksu gedit /etc/cron.daily/rkhunter-check
#!/usr/bin/env bash
sleep 1800 # wait 30 minutes in case the script is called directly at boot
MAINUSER="$(awk -F: '$3==1000{print $1}' /etc/passwd)"
if [ -r "/home/$MAINUSER/.dbus/Xdbus" ]; then
. "/home/$MAINUSER/.dbus/Xdbus"
fi
su $MAINUSER -c 'notify-send "starting rkhunter scan... "'
rkhunter --checkall --report-warnings-only | while read OUTPUT; do
if [ "$OUTPUT" != "" ]; then
OUTPUT="${OUTPUT//[\`\"\']/}"
su $MAINUSER -c $"notify-send \"rkhunter: $OUTPUT\""
fi
done
Cela exécutera le script tous les jours une fois et si l'exécution de rkhunter génère une sortie (uniquement des avertissements), ce script apparaîtra comme une notification pour chaque avertissement en haut à droite de votre écran en tant qu'utilisateur
La source:
Vous pouvez utiliser cron
. Modifier avec:
crontab -e
pour plus d'informations sur l'utilisation de cron
, suivez ce lien: