Problem mit Agent Controller und "cmk-agent" User

**CMK version:*2.2.0p21 cee
**OS version:**rhel9

Error message: Could not find dedicated Checkmk agent user cmk-agent

Hallo,
ich möchte auf einem RHEL9 Linux System den cmk Agenten mit systemd und agent controller einrichten. Dazu habe ich von unserer Linux Abteilung einen LDAP User “cmk-agent” anlegen lassen. Dieser steht nicht lokal in der passwd, ist aber über getenv / id abfragbar.
Bei der Installation des Agenten erhalte ich jetzt aber folgende Fehlermeldung:

cmk-agent user found: expected ‘Checkmk agent system user:/var/lib/cmk-agent:/bin/false’
but found ‘cmk-agent@linux.foo.bar:*:1930234220:192342300120:Checkmk agent system user:/var/lib/cmk-agent:/bin/false’

Dies führt nun offenbar dazu, dass der Agent nicht sauber funktioniert. Ich kann keine cmk-agent-ctl Kommandos ausführen, dann kommt immer:

ERROR [cmk_agent_ctl] Failed to run as user ‘cmk-agent’. Please execute with sufficient permissions (maybe try ‘sudo’).

Caused by:
Could not find dedicated Checkmk agent user cmk-agent

Was kann ich denn da jetzt tun? Ist vielleicht auch eine Frage direkt Richtung checkmk Team?

@ChristianM Kannst du da auch mal drauf gucken?

VG
Christian

Es sieht so aus, als ob ihr in der /etc/passwd prüft, ob der User existiert. Ein ldap-user steht dort aber nicht drin.

Es wird der Account offenbar mit einer angehängten Domain gefunden. Dann ist das nicht der selbe Username.

Das ist zumindest ein Teil des Problems. Das nächste wäre dann das mit der etc passwd. Die Nutzung eines technischen LDAP Users wurde offenbar nicht berücksichtigt. :cry:

Hängt der Linux-Host an einem Active Directory mit winbind?
Dann lässt sich dort winbind use default domain = yes einstellen und die Domain sollte verschwinden.

Moin Robert,
das System hängt an einem Redhat Identy Manager. Wir haben es aber auch hinbekommen, dass der User ohne Domain angezeigt wird. Dies führt dann dazu, dass das Script “cmk-agent-useradd.sh” sauber durchläuft. Das nächste Problem ist dann aber, dass der User nicht in der /etc/passwd steht, da es ja ein ldap user ist. Das Kommando “cmk-agent-ctl” scheint aber in der /etc/passwd nach dem User zu suchen und da er dort nicht vorhanden ist, kommt die nächste Fehlermeldung:

ERROR [cmk_agent_ctl] Failed to run as user ‘cmk-agent’. Please execute with sufficient permissions (maybe try ‘sudo’).

Caused by:
Could not find dedicated Checkmk agent user cmk-agent

Da cmk-agent-ctl ein binary file ist, kann ich dort leider nicht rein schauen. Aber aktuell sieht es für mich so aus, als ob wir den agent controller nicht mit einem ldap User nutzen können?!

Wenn cmk-agent-ctl dafür nicht getent passwd verwendet, wäre das ein Bug.

Der Quellcode von cmk-agent-ctl ist hier zu finden: checkmk/packages/cmk-agent-ctl/src at master · Checkmk/checkmk · GitHub

Hi.

Ich denke @r.sander hat recht. Hier haben wahrscheinlich nicht an die Möglichkeit gedacht, dass der User auch aus dem ldap kommen könnte.

VG, Christian

Die Antwort scheint zur Zeit sehr simpel.
Die Rust Unix Libs unterstützen einfach keine LDAP User.
Jedenfalls nicht die verwendete “nix::unistd”.

Man kann auch sagen Rust ist Low-Level und LDAP ist das garantiert nicht :rofl:

Okay, danke für die Infos.
Dann spare ich mir jetzt erst mal weiteres rum probieren und schaue, dass wir auf einen lokalen User wechseln.

Es würde ja reichen, wenn sie PAM und NSS unterstützten.

Wenn ich die Beschreibung richtig lese ist das wirklich ganz unten im System ohne alles.
nix::unistd::User → Representation of a User, based on libc::passwd

1 Like

Das könnte in Enterprise-Umgebungen aber auch zum Problem werden. Eigentlich ist bei uns ldap Pflicht.
Man kann ja offenbar den Usernamen auch nicht ändern oder, also cmk-agent ist fix?!

Wer macht so einen Unsinn für Dienste Accounts auf Servern?

3 Likes

Compliance! Enterprise! Wissnschon.

Naja ich hab viele große Kunden, da gibts eher die Bestimmung Dienste haben unter keinen Umständen mit LDAP/AD Accounts zu laufen.
Bei einigen Kunden haben wir das CMK dazu zweckentfremdet genau solche Dienste zu finden :smiley:

Ich fände es zumindest gut, wenn an beide Varianten gedacht werden würde und das im Idealfall der Name des Users konfigurierbar ist und man auch eine uid mitgeben kann.
Wir haben das jetzt intern nochmal besprochen und wechseln dann wohl auf einen lokalen User, den wir außerhalb des Agenten-RPMs anlegen werden, so dass wir eine uid vergeben können.

Noch eine Folgefrage, ist es richtig, dass ein

ss -tulpn | grep 6556

erst etwas liefert, NACHDEM man den Agenten registriert hat?

Für besseres Verständnis:
Wenn man über so einen über LDAP erstellten Nutzer den Agent laufen lassen würde, kann man dann überhaupt “einfach so” auf den entsprechenden User wechseln? Oder muss der sich ggü. PAM/LDAP erst authentifizieren?

Hi @martin.hirschvogel ,
man kann zu dem ldap User wechseln, via sudo oder su. Da besteht kein Unterschied zu einem lokalen User. Im Kontext dieses ldap-Users kann ich dann natürlich auch Prozesse / systemd Services starten. Sollte ldap ausfallen, dauert es bei uns einige Zeit, bis dieser User dann lokal nicht mehr funktioniert, so lange wird er gecached. Man kann aber natürlich darüber diskutieren, ob es in diesem Kontext sinnvoll ist, einen ldap User zu nehmen. Wir haben uns jetzt entschieden, erst mal das komplette Agent-Controller und somit auch das cmk-user Thema zu verschieben. Vielleicht gibt es aber auch andere Firmen, die hier vielleicht einen ldap-User in Betracht ziehen. Falls ihr in dem Kontext irgendwann mal einen Betatester benötigt, lass es mich wissen :slight_smile:

VG
Christian