Prüfen von .sh Dateiberechtigungen

Hallo zusammen,
ich bin neu hier und bitte um Nachsicht, falls die Antwort auf meine Frage über die “Suche” zu finden ist, für mich war sie das leider nicht ;).

Bietet Check_MK die Möglichkeit eine bestimmte .sh Datei unter Linux auf deren Berechtigungsgruppe und Datei-Berechtigung hin zu prüfen?
Eine Alarmierung sollte erfolgen wenn bspw. die Gruppe nicht “TEST” und die Berechtigung nicht “Oktal:750” ist.
Die Prüfung, ob die Datei generell vorhanden ist, habe ich bereits umgesetzt und dafür die “fileinfo.cfg” genutzt.

Ich nutze derzeit: Checkmk 2.0.0p35

Vielen Dank!

MFG Stefan

Eine Möglichkeit ist es hierzu einen local check zu erstellen zum Beispiel als shell script. Das script kommt dann in das $MK_LIBDIR/local Verzeichnis und muss ausführbar sein. Wenn alles richtig ist dann wird der Service nach einen Service Discover gefunden und angezeigt.

Detail zu local checks hier: Local checks

Beispiel Script:

#!/bin/bash

file_path="/tmp/example.txt"  # Replace with the actual file path
expected_permission="-rw-r--r--"  # Replace with the desired permission pattern
expected_group="my_group"  # Replace with the desired group name

# Check if file exists
if [ ! -e "$file_path" ]; then
  echo "1 \"File $file_path\" - File not found: $file_path"
  exit 1

fi

# Check file permissions
actual_permission=$(stat -c "%A" "$file_path")
if [ "$actual_permission" != "$expected_permission" ]; then
  echo "1 \"File $file_path\" - File permission $file_path mismatch: Expected $expected_permission, found $actual_permission"
  exit 1
fi

# Check file group
actual_group=$(stat -c "%G" "$file_path")
if [ "$actual_group" != "$expected_group" ]; then
  echo "1 \"File $file_path\" - File group mismatch: Expected $expected_group, found $actual_group"
  exit 1
fi

# Everything matches
echo "0 \"File $file_path\" - File as expected: $expected_group $expected_permission"
exit 0
3 Likes

Hallo,

vielen Dank für die schnelle Rückinfo.

Leider war es mir bis vor kurzem nicht möglich am System zu arbeiten.

$MK_LIBDIR/local → wo finde ich das Verzeichnis? Kann ich mir die Variable auf dem System anzeigen lassen?

Derzeit haben wir die anderen Checks so abgebildet, dass diese nur geprüft werden, wenn bestimmte Bedingungen (Betriebssystem = Linux & Pruefe_Service X&Y → Ja) etc. gesetzt sind.

Das Skript soll schon auf alle Linux Systeme hinterlegt werden. Einige Systeme müssen aber von der Prüfung ausgeschlossen werden können.

Ist das möglich?

Nochmal der Hinweis, die Doku beschreibt das sehr gut: Local checks

Wenn die $MK Pfade nicht explizit verändert wurden ist das unter Linux /usr/lib/check_mk_agent/local/

Wenn das Script auf allen Systemen verteilt wurde dann werden die Services von CheckMK auch gefunden. Entweder auf den betroffenden Systemen das Script nicht verteilen oder z.B. dann im CheckMK die nacharbeit das man die Überprüfung des Services abschaltet.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed. Contact an admin if you think this should be re-opened.