So löschen Sie einen Benutzer unter Linux (und entfernen jede Spur)

Die Löschung eines Benutzerkontos in einem Linux-System ist komplexer als es auf den ersten Blick scheint. Für Systemadministratoren ist es essenziell, alle Spuren eines Kontos und dessen Zugriffsmöglichkeiten vollständig zu beseitigen. Die folgenden Schritte zeigen, wie dies effektiv bewerkstelligt werden kann.

Wer lediglich ein Benutzerkonto von seinem System entfernen möchte und keine Bedenken hinsichtlich laufender Prozesse oder anderer Aufräumarbeiten hat, kann direkt zu den Anweisungen im Abschnitt „Löschen des Benutzerkontos“ springen. Hierbei wird der Befehl `deluser` für Debian-basierte Systeme und `userdel` für andere Linux-Distributionen benötigt.

Benutzerkonten in Linux-Systemen

Seit den Anfängen der Time-Sharing-Systeme in den frühen 1960er Jahren, die es mehreren Benutzern ermöglichten, gleichzeitig an einem Computer zu arbeiten, war die Trennung und Isolation der Dateien und Daten jedes einzelnen Benutzers unerlässlich. Daraus entwickelten sich Benutzerkonten und Passwörter.

Benutzerkonten sind jedoch mit einem Verwaltungsaufwand verbunden. Sie müssen erstellt werden, wenn ein Benutzer erstmals Zugriff auf das System benötigt und wieder entfernt werden, sobald dieser Zugriff nicht mehr erforderlich ist. Unter Linux ist ein methodisches Vorgehen notwendig, um einen Benutzer, seine Dateien und sein Konto vollständig zu entfernen.

Als Systemadministrator liegt diese Aufgabe in Ihrer Verantwortung. Im Folgenden wird der korrekte Ablauf erläutert.

Szenario

Es gibt verschiedene Gründe für die Löschung eines Benutzerkontos. Ein Mitarbeiter kann das Team wechseln oder das Unternehmen verlassen. Ein Konto kann für eine temporäre Zusammenarbeit mit einem Gast angelegt worden sein. Kooperationen sind besonders in der akademischen Welt üblich, wo Forschungsprojekte Abteilungen, Universitäten und kommerzielle Institutionen umfassen können. Nach Projektabschluss ist es Aufgabe des Systemadministrators, diese Konten zu entfernen.

Der schlimmste Fall tritt ein, wenn ein Mitarbeiter aufgrund eines Fehlverhaltens schnell das Unternehmen verlassen muss. Solche Ereignisse sind meist unerwartet und erfordern ein sofortiges Sperren, Schließen und Löschen des Kontos. Dabei sollte eine Sicherungskopie der Dateien für mögliche forensische Untersuchungen angelegt werden.

In diesem Beispiel gehen wir davon aus, dass ein Benutzer namens Eric einen Vorfall verursacht hat, der seine sofortige Entfernung erfordert. Er ist noch eingeloggt und arbeitet. Sobald das Signal gegeben wird, wird er von Sicherheitskräften aus dem Gebäude begleitet.

Alle Vorbereitungen sind getroffen. Ihre Handlungen sind entscheidend.

Überprüfung der Anmeldung

Zunächst prüfen wir, ob Eric tatsächlich angemeldet ist und wie viele Sitzungen er aktiv hat. Der Befehl `who` zeigt alle aktiven Sitzungen an.

who

Eric ist einmal angemeldet. Wir prüfen nun, welche Prozesse er ausführt.

Überprüfung der Benutzerprozesse

Der Befehl `ps` zeigt die Prozesse eines Benutzers an. Mit der Option `-u` (Benutzer) filtern wir die Ausgabe und zeigen nur die Prozesse des Benutzers Eric an.

ps -u eric

Eine detailliertere Ansicht der Prozesse erhalten wir mit dem Befehl `top`. Auch `top` verfügt über eine Option `-U` (Benutzer), um die Ausgabe auf die Prozesse eines bestimmten Benutzers zu beschränken (beachten Sie das große „U“).

top -U eric

Wir können die Speicher- und CPU-Auslastung jedes Prozesses sehen und nach verdächtigem Verhalten suchen. Da wir seine Prozesse gewaltsam beenden werden, sollte man diese kurz prüfen, um sicherzustellen, dass keine anderen Benutzer beeinträchtigt werden.

Es scheint, als würde er lediglich eine Datei anzeigen. Wir können fortfahren. Bevor wir jedoch seine Prozesse beenden, sperren wir das Konto, indem wir das Passwort deaktivieren.

Sperren des Kontos

Das Konto wird gesperrt, bevor die Prozesse beendet werden, da dies den Benutzer automatisch abmeldet. Wenn das Passwort bereits gesperrt ist, kann er sich nicht erneut anmelden.

Verschlüsselte Benutzerpasswörter werden in der Datei `/etc/shadow` gespeichert. Normalerweise wären diese Schritte nicht notwendig, aber um zu zeigen, was in der Datei `/etc/shadow` passiert, wenn ein Konto gesperrt wird, machen wir einen kurzen Umweg. Mit folgendem Befehl zeigen wir die ersten beiden Felder des Eintrags für das Benutzerkonto eric an:

sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow

Der Befehl `awk` analysiert und manipuliert Felder aus Textdateien. Die Option `-F` (Feldtrennzeichen) teilt `awk` mit, dass die Felder durch einen Doppelpunkt `:` getrennt sind. Wir suchen nach Zeilen, die das Muster „eric“ enthalten und geben für diese Zeilen das erste und zweite Feld aus. Dies sind der Kontoname und das verschlüsselte Passwort.

Der Eintrag für das Benutzerkonto eric wird ausgegeben.

Um das Konto zu sperren, verwenden wir den Befehl `passwd` mit der Option `-l` (lock) und dem Benutzernamen des zu sperrenden Kontos.

sudo passwd -l eric

Eine erneute Überprüfung der Datei `/etc/shadow` zeigt die Änderung:

sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow

Ein Ausrufezeichen wurde am Anfang des verschlüsselten Passworts hinzugefügt. Es ersetzt nicht das erste Zeichen, sondern wird nur hinzugefügt. Dies verhindert, dass sich der Benutzer an diesem Konto anmelden kann.

Nachdem der Benutzer an einer Neuanmeldung gehindert wurde, können seine Prozesse beendet und er abgemeldet werden.

Beenden der Prozesse

Es gibt verschiedene Wege, die Prozesse eines Benutzers zu beenden. Der hier verwendete Befehl ist weit verbreitet und eine moderne Alternative. Der Befehl `pkill` findet und beendet Prozesse. Wir übergeben das Signal `KILL` und verwenden die Option `-u` (Benutzer).

sudo pkill -KILL -u eric

Wir kehren ohne weitere Meldung zur Eingabeaufforderung zurück. Um zu überprüfen, ob tatsächlich etwas passiert ist, führen wir erneut den Befehl `who` aus:

who

Seine Sitzung ist beendet. Er wurde abgemeldet und seine Prozesse gestoppt. Die Situation hat damit an Dringlichkeit verloren. Wir können uns entspannen und die restlichen Aufräumarbeiten durchführen, während die Sicherheitskräfte Eric zu seinem Schreibtisch begleiten.

Archivierung des Home-Verzeichnisses

Es ist möglich, dass in Zukunft noch Zugriff auf die Dateien des Benutzers erforderlich ist. Sei es im Rahmen einer Untersuchung oder einfach, weil sein Nachfolger auf seine Arbeit zugreifen muss. Wir verwenden den Befehl `tar`, um sein gesamtes Home-Verzeichnis zu archivieren.

Die verwendeten Optionen sind:

c: Erstellt eine Archivdatei.
f: Verwendet den angegebenen Dateinamen für das Archiv.
j: Verwendet die `bzip2`-Komprimierung.
v: Ausführliche Ausgabe, während das Archiv erstellt wird.

sudo tar cfjv eric-20200820.tar.bz /home/eric

Viele Ausgaben werden im Terminalfenster angezeigt. Um zu überprüfen, ob das Archiv erstellt wurde, verwenden wir den Befehl `ls` mit den Optionen `-l` (lange Formatierung) und `-h` (lesbare Größe).

ls -lh eric-20200802.tar.bz

Eine Datei mit 722 MB wurde erstellt. Diese kann zur späteren Überprüfung an einen sicheren Ort kopiert werden.

Entfernen von Cron-Jobs

Wir sollten überprüfen, ob für das Benutzerkonto eric Cron-Jobs geplant sind. Ein Cron-Job ist ein Befehl, der zu bestimmten Zeiten oder Intervallen automatisch ausgeführt wird. Wir können überprüfen, ob solche Jobs für das Konto geplant sind, mit folgendem Befehl:

sudo ls -lh /var/spool/cron/crontabs/eric

Wenn sich an diesem Ort eine Datei befindet, bedeutet das, dass Cron-Jobs für dieses Konto geplant sind. Wir können diese mit dem Befehl `crontab` entfernen. Die Option `-r` (Entfernen) entfernt die Jobs und die Option `-u` (Benutzer) spezifiziert welche Jobs entfernt werden sollen.

sudo crontab -r -u eric

Die Jobs werden ohne weitere Meldung gelöscht. Es ist ratsam, diesen Schritt durchzuführen, da Eric möglicherweise einen schädlichen Job eingerichtet hätte, wenn er seine bevorstehende Entfernung geahnt hätte.

Entfernen von Druckaufträgen

Es ist möglich, dass der Benutzer noch Druckaufträge hat. Daher löschen wir vorsichtshalber alle Druckaufträge, die mit dem Benutzerkonto eric in Verbindung stehen. Der Befehl `lprm` entfernt Aufträge aus der Druckwarteschlange. Mit der Option `-U` (Benutzername) können wir Aufträge eines bestimmten Benutzers entfernen.

lprm -U eric

Die Aufträge werden entfernt und Sie kehren zur Eingabeaufforderung zurück.

Löschen des Benutzerkontos

Nachdem die Dateien im Verzeichnis `/home/eric/` gesichert wurden, können wir nun das Benutzerkonto und das Verzeichnis `/home/eric/` gleichzeitig löschen.

Der zu verwendende Befehl hängt von der verwendeten Linux-Distribution ab. Für Debian-basierte Linux-Distributionen verwenden wir den Befehl `deluser`. In allen anderen Linux-Distributionen wird der Befehl `userdel` verwendet.

Unter Ubuntu sind beide Befehle verfügbar. Man könnte erwarten, dass einer ein Alias des anderen ist, aber es handelt sich um unterschiedliche Binärdateien.

type deluser
type userdel

Obwohl beide Befehle vorhanden sind, wird empfohlen, `deluser` zu verwenden auf von Debian abgeleiteten Distributionen:

„`userdel` ist ein Low-Level-Dienstprogramm zur Entfernung von Benutzern. Auf Debian sollten Administratoren normalerweise `deluser(8)` verwenden.“

Dies ist eindeutig. Daher verwenden wir auf diesem Ubuntu-Rechner den Befehl `deluser`. Da wir auch das Home-Verzeichnis löschen möchten, verwenden wir die Option `–remove-home`:

sudo deluser --remove-home eric

Für Nicht-Debian-Distributionen verwenden wir `userdel` mit der Option `–remove`:

sudo userdel --remove eric

Alle Spuren des Benutzerkontos Eric wurden gelöscht. Wir überprüfen, ob das Verzeichnis `/home/eric/` entfernt wurde:

ls /home

Die Gruppe eric wurde ebenfalls entfernt, da das Benutzerkonto eric der einzige Eintrag darin war. Dies können wir überprüfen, indem wir den Inhalt von `/etc/group` filtern:

sudo less /etc/group | grep eric

Zusammenfassung

Eric ist aufgrund seiner Vergehen entfernt worden. Die Sicherheitskräfte begleiten ihn immer noch aus dem Gebäude und Sie haben bereits seine Dateien gesichert, archiviert und sein Konto restlos vom System entfernt.

Genauigkeit sollte immer Vorrang vor Schnelligkeit haben. Stellen Sie sicher, dass Sie jeden Schritt überdenken, bevor Sie ihn ausführen. Sie wollen nicht, dass jemand an Ihren Schreibtisch kommt und sagt: „Nein, der andere Eric.“