Melden Sie einen Benutzer ab und löschen Sie das Konto

8

Ich habe ein Problem auf dem Server (CentOS 6, Plesk 11.5), auf dem ein bestimmter Benutzer einen Massenmailer verwendet und unsere IP-Adresse auf die schwarze Liste setzt. Ich habe versucht, diesen Benutzer zu löschen, indem ich:

/usr/sbin/userdel test

Es wird jedoch die Meldung zurückgegeben, dass der Benutzer derzeit angemeldet ist. Ich dachte, ok, beenden Sie den Vorgang. Also habe ich versucht:

pkill -u test

und sperrte auch das Konto mit:

passwd -l test

Das wird ihn hoffentlich in Zukunft davon abhalten, sich im System anzumelden.

Der Benutzer ist immer noch angemeldet. Wie kann ich diesen Benutzer abmelden, damit ich ihn vom System löschen kann?

user1532468
quelle
1
Möglicherweise möchten Sie das Konto sperren, aber behalten Sie es bei. Dies könnte es einfacher machen, herauszufinden, was genau dieser Benutzer getan hat (insbesondere wenn rechtliche Schritte eingeleitet wurden).
Gilles 'SO - hör auf böse zu sein'

Antworten:

8

Grep zuerst den gesamten Prozess des 'Test'-Benutzers und töte -9 alle PIDs, dann lösche den Benutzer.

pgrep -u test
ps -fp $(pgrep -u test)
killall -KILL -u test
userdel -r test
msnfreaky
quelle
2
passwd -l <user>

stoppt nicht alle möglichen sshAnmeldemöglichkeiten . Wenn sie sich beispielsweise mit öffentlichen Schlüsseln anmelden, können sie sich trotzdem anmelden, da sie kein Kennwort benötigen.

Um die Benutzeranmeldung erneut zu stoppen, bearbeiten Sie die /etc/passwdDatei und entfernen Sie den Benutzer oder ändern Sie die 7. Spalte in /sbin/nologin.

Lauf:

ps -u <user>

um zu sehen, welchen Prozess der Benutzer noch verwendet, und alle zu töten. Möglicherweise müssen Sie Folgendes verwenden:

kill -s 9 <pid>

um den Prozess zum Stoppen zu zwingen.

garethTheRed
quelle
ps -u <Benutzer> gibt 21398 zurück? 00:00:01 sshd 21408? 00:00:08 sshd 21412? 00:00:03 sshd 21416? 00:00:00 sshd 21418? 00:00:00 sshd 21422? 00:00:01 sshd 21424? 00:00:03 sshd 21426? 00:00:03 sshd töte ich einfach jeden Prozess? danke
user1532468
Ja. Töte sie alle. Auch ps -AF | grep <Benutzer> zeigt möglicherweise einige weitere an, da Prozesse mit dem Benutzernamen in ihren Argumenten angezeigt werden.
GarethTheRed
Für diejenigen von uns, die Angst haben, /etc/passwddirekt zu berühren , sudo /usr/bin/chsh -s /sbin/nologin baduserfunktioniert auch ( chsh: Shell wechseln).
Ulrich Schwarz
2

passwd -l <user>Deaktiviert das Konto nicht. Wie bereits erwähnt, kann sich der Benutzer möglicherweise weiterhin mit einem anderen Authentifizierungstoken wie dem SSH-Schlüssel anmelden. Um dieses Konto zu deaktivieren, sollten Sie usermod --expiredate 1das Verfallsdatum des Kontos auf 1970 setzen. Jetzt sollten Sie alle Prozesse beenden, die der Benutzer gestartet hat. Laufen:

$pgrep -u Foodruckt alle Prozesse, die der Benutzer Foo gestartet hat. Laufen:

$kill -9 <pid>sendet ein SIGKILLSignal, das diesen Prozess beendet. Jetzt ausführen:

$pgrep -u Foo | xargs kill -9

Dadurch werden alle Prozess-IDs des Benutzers Foo abgerufen und alle beendet.

ODER:

$kill -9 -u Foo

amir jj
quelle
Das Usermod hat für mich gearbeitet. Ich hatte ein passwortloses Konto, das ich anfangs nicht löschen konnte. Ich habe ein Passwort hinzugefügt und konnte es immer noch nicht löschen. Immer wenn ich den Prozess des Benutzers abbrach, tauchte ein neuer auf und es schien endlos. Nachdem ich usermod verwendet und abgelaufen war, schien es zu verhindern, dass ein neuer Prozess erstellt wurde, und so konnte ich das Konto löschen.
Linstar
1

Haben Sie versucht, alle Prozesse des Benutzers mit dem SIGKILL zu beenden?

pkill -KILL -u username
Ziffer
quelle
Ich habe versucht, die von Ihnen vorgeschlagene Zahl zu verwenden, aber wenn ich den Befehl ps -u <Benutzer> ausführe, um zu überprüfen, werden die Prozesse noch ausgeführt. Danke
user1532468
Das ist komisch. SIGKILL und SIGABORT können nicht ignoriert werden. Ehrlich gesagt nicht sicher.
Ziffer
@ user1532468 - hast du die Befehle als root ausgeführt?
Wilf
@ Wilf ja ich laufe als root
user1532468
0
userdel -rf username 

Ein Fehler wird angezeigt, der den Benutzer jedoch dauerhaft löscht. Sie können es einchecken /etc/passwd.

Sonu Kumar
quelle
Dadurch wird der Benutzer nicht zuerst abgemeldet.
Kusalananda