Fehlerhalfte Benutzerdatenbank: Wie korrigiere ich die?

Hallo Liste
Seit einigen Jahren schleppen wir ein paar untote Zombie-Benutzer mit uns herum. Die würde ich gerne loswerden. Ich weiß aber nicht wie. In der schueler.txt sind sie natürlich nicht eingetragen. Sie werden aber nie killable.

Alle Benutzer sind Schüler und beginnen mit dem Buchstaben “A”: z.B.
ASchmidt,
AMeister,
AMueller,
In der Datenbank taucht in ihren Datensätzen immer der selbe Name auf:
AMeyer:

cat postgres_20180714.dump | grep Meyer
96 10090 aschmidt 10052 A Meyer /home/attic/aschmidt A Meyer /bin/bash {SSHA}VrexHtCdYBmB31ri5xNqNaLGYwdYWDVvTUVJMi9icFdpVHZsSnlWMn--------------==! A Meyer

(Ich habe alle Namen hier geändert).

Ich habe als Erstes das Skalpell beiseite gelegt und es lieber mit der Kettensäge versucht:

pg_dump -U ldap ldap >postgres_20180714.dump
grep -v Meyer postgres_20180714.dump > postgres_20180714_ohne_Meyer.dump
psql -U ldap < postgres_20180714_ohne_Meyer.dump
sophomorix-dump-pg2ldapp

Ich habe also die Datenbank “LDAP” als Textfile ausgeben lassen und alle Zeilen, in denen Meyer nicht vorkommt in eine neue Textdatei schreiben lassen. Diese habe ich dann wieder in die Datenbank eingelesen.

Das hat nicht sooo gut funktioniert. Ich habe jetzt alle Mailinglisten doppelt. Auch passt die Größe der Datenbank nicht mehr zusammen:

cat cat postgres_20180714.dump | wc -l
10849

cat postgres_20180714_nach_Meyerentfernung.dump | wc -l
15224

Die Datenbank ist also größer anstatt kleiner geworden. Ich vermute, ich hätte sie vorher droppen müssen. Nur endet hier mein Wissen und damit mein Mut: Wenn Ich die Datenbank droppe, was passiert dann mit eventuellen stored procedures? Werden sie mit gedroppt, gedumpt und wieder angelegt?

Ist die Kettensäge hier überhaupt eine gute Idee? Hat hier jemand eine bessere?

Beste Grüße
Frithjof

PS: Etwas Geschichte: Wir haben ganz am Anfang unser LML Migration einen Fehler gemacht. Wir haben das Geburtsdatum bei allen Schülern auf 01.01.2000 gesetzt. Das hat die Automatik “Versetzte oder unbenannte Schüler wiedererkennen” wohl aus dem Tritt gebracht.

Hallo Frithjof,

wie Du aus dieser Kiste wieder heil rauskommst weiß ich leider nicht.

Hast du ein Backup auf das zurück gehen kannst? Wenn ja, dann würde ich es nicht mit Skalpell und Kettensäge probieren sondern sophomorix auf der Kommandozeile bemühen. Also kannst Du zurück?

Beste Grüße

Thorsten

Klar. Aber dann stehe ich immer noch mit dem selben Problem da.

Sophomorix ist ein echtes Skalpell: Man schaut es an und schwupp hat man sich in den Finger geschnitten. Sprich: Ich weiß nicht, wie Sophomorix einsetzten könnte, um mein Problem zu lösen.

Hi. Guck mal – vielleicht hilft es bei deinem Problem?

Schöne Grüße.
Michael

1 „Gefällt mir“

Hej!

Was sagt ein

sophomorix -u ASchmidt

Wenn dort nicht K unter Status angezeigt wird dann

sophomorix-user -K ASchmidt

und dann nochmal kontrollieren.

Wenn Status nun K dann das lmn-Skalpell:

sophomorix-kill -u ASchmidt

falls das nicht hilft dann doch die lmn-Kettensäge:

sophomorix-kill -killuser ASchmidt

weitere Infos zu dem Befehl liefert wie immer ein:

man sophomorix-kill

Ich weiß allerdings nicht, ob das bei dir mit deinen vielleicht nicht mehr einwandfreien Datenbanken funktioniert. Daher die Frage nach dem Backup.

Beste Grüße

Thorsten

1 „Gefällt mir“

Hallo Fritjof,

sophomorix auf der Kommandozeile bemühen

Sophomorix ist ein echtes Skalpell: Man schaut es an und schwupp hat man
sich in den Finger geschnitten. Sprich: Ich weiß nicht, wie Sophomorix
einsetzten könnte, um mein Problem zu lösen.

… lieber Kettensäge, weil das Skalpel zu gefährlich ist?
Interessanter Gedankengang :slight_smile:

Ich sage immer: „an meine Benutzerverwaltung lasse ich nur sophomorix“:
bin immer gut damit gefahren.

Zum Problem:
erstmal würde ich versuchen den letzten Stand wieder her zu stellen.
Welceh Datenbank hast du den aus der postgress ausgelesen und zurückgedumpt?
Gegebenenfalls stellt ein einfaches
sophomorix-dump-pg2ladp
den vorherigen Zustand wieder her (ja sophomorix hält immer ein Backup
vor …).

Von da aus würde ich dann mittels
sophomorix-kill -u
versuchen die Nutzer einzeln zu löschen.
Welche Meldung kommt?

Schlimmere Verschränkungen hatte ich bisher immer selbst praktiziert,
weil ich das Notebook des NUtzers
maier
in der Workstations einfach
maier
nannte… es gab also einen Nutzer, der von zwei Seiten her benutzt wurde.
Aber auch das war lösbar.

LG

Holger

wirlich interessant, wie mir beim Schreiben dieses Posts klar geworden ist. Mein Problem gibt es schon ein paar Jahre, ich habe schon einmal -erfolglos - daran gedoktored. Jetzt habe ich auch endlich einen Sündenbock.

Je nach Nutzer:
ASchmidt D
AMeister E

ich kann sie mit sophomorix-user -K ASchmidt auf Status K setzten. Aber sophomorix-kill findet dann keine User zum killen. An dieser Stelle habe ich vor Jahr und Tag entnervt aufgehört.

So, das scheint zu funktionieren. Danke Thorsten. Das hat mir wahrscheinlich geholfen. Und jetzt ärgere ich mich. Weil ich mich erinnere:
man sophomorix-kill

–killuser user
Entfernt den Benutzer mit dem Loginnamen user aus dem System. Wird verwendet, um Klassenarbeitsbenutzer oder Computeraccounts zu löschen. Kann auch zur
Benutzerverwaltung von Lehrern und Schülern nur verwendet werden, um einen user schnell zu entfernen. Der User sollte dann auch aus den Konfigurationsdateien
entfernt werden.

Sorry, was macht diese Option?
– „aus dem System“: aus welchem? passwd/shadow? ldap? samba? postgress? allen? „Allen“ ergibt am meisten Sinn.
– „von Lehrern und Schülern nur verwendet?“ Was wird hier eingeschränkt?
– „Der User sollte dann auch aus den Konfigurationsdateien entfernt werden.“ ? Aus den Konfigurationsdateien? welche? passwd/shadow? postgressdb? ldapdb? schueler.txt? Es müssen ja mindestens zwei sein. Also ergibt passwd/shadow am meisten Sinn: Zwei Dateien für ein Authentifizierungssystem. Also ist oben doch nicht „Alle“ gemeint?

Weil all das unklar ist, habe ich diese Option nicht verwendet. Ihre Beschreibung ergibt weniger Sinn, als ihr sprechender Name. Und das ist, und hier ist jetzt mein Ärger, bei sophomorix oft der Fall. Was sophomorix macht oder wo und wie speichert, bleibt allzu oft im Dunkeln.

So auch:

man sophomorix-dump-pg2ladp sagt nichts über Backups. Und ein einfaches sophomorix-dump-pg2ladp schreibt nur den Inhalt der Postgressdatenbank in die LDAP-Datenbank. Holger, bist du vielleicht hier durcheinander gekommen?

Jetzt ist mir auch wieder klar, warum ich damals bei dem Gedanken verblieben bin, das Problem in der Postgresql Datenbank direkt manipulieren zu wollen. Nicht, weil es mit sophomorix nicht geht. Sondern, weil nicht klar ist, wie es mit sophomorix gehen könnte. Das Authentifizierungssystem von Linuxmuster ist ein Monster. Für die Admins ist es unzureichend dokumentiert.

Gruß
Frithjof

Hier die Lösung für mein Problem. Vielleicht hilft es dem Nächsten:

Mache die Benutzer mit

killable und kille sie mit

(sophomorix-kill ohne Parameter hat die Zombies bei mir nicht gekillt)

Da es bei mir über 50 Benutzer waren, hätte ich mir ein Skript schreiben können. Ich habe dann aber aus Trotz die Kettensäge weiter benutzt:
Folgendes hat bei mir funktioniert:

pg_dump -U ldap ldap >postgres_20180714.dump grep -v Meyer postgres_20180714.dump > postgres_20180714_ohne_Meyer.dump

<editieren der postgres_20180714_ohne_Meyer.dump und vor jedes CREATE TABLE Tabellenname ein DROP TABLE Tabellenname CASCADE; eingefügen>

psql -U ldap < postgres_20180714_ohne_Meyer.dump
sophomorix-dump-pg2ldapp

Meine Befürchtung, dass stored procedures oder andere SQL-Feinheiten dabei über Board gehen, waren unbegründet: Sie sind im Dump enthalten.

Es gibt noch eine Variante ohne die Drops einfügen zu müssen:

DROP SCHEMA public CASCADE;
CREATE SCHEMA public;

am Anfang der Dump-Datei sollte auch funktionieren. Ich habe aber nicht die notwendigen Rechte für das Schema. Ich habe das Passwort für die Datenbank sicher bei der Installation eingeben, aber ich weiß nicht wo es gespeichert wird.

Hallo Frithjof!

Erst einmal schön, dass du jetzt wieder Zombie frei geworden bist. Aber für alle die auch über diesen Thread stolpern: Ich halte es wie Holger was die Benutzerverwaltung der lmn betrifft.

An meine Benutzerdatenverwaltung lasse ich nur sophomorix!

Ich versuche mal deine gestellten Fragen zu beantworten:

Steht doch ganz oben in der man:

DESCRIPTION

sophomorix-kill  entfernt  Benutzer aus der sophomorix Benutzerdatenbank,
entfernt die Benutzer aus dem Authentifizierungssystem und
entfernt alle ihre Daten (im Moment Homeverzeichnis, ...
  • passwd/shadow scheiden aus, da dort gar keine schueler bzw lehrer drin stehen. (zumindest bei mir)
  • postgressdb / ldapdb sind Datenbanken und in deren Konfigurationsdateien sollten keine User auftauchen. Wenn ich mich nicht irre, um es mit Sam Hawkins zu sagen.
  • schueler.txt - Bingo und die lehrer nicht vergessen.

So würde ich deine Fragen beantworten, ob ich damit richtig liege kann @jeffbeck beantworten.

Checke mal ob deine Zombies ihre Zelte im Home abgebrochen haben!

Beste Grüße

Thorsten