Hallo Robert,

On Wed, Apr 06, 2011 at 08:10:03 +0100, Robert wrote:

> vs2801:~# ps ax|grep buum
> 21820 pts/8    S+     0:00 grep buum
> 
> vs2801:~# ps -eaf | grep bumm
> root     11967   765  0 08:03 pts/8    00:00:00 grep bumm

Okay, ein kleiner Test mit Debian Lenny in qemu-kvm:
User "dummy" ist eingerichtet, dieser loggt sich auf tty2 ein, startet
eine screen-Sitzung, darin startet er top.

lentest:~# grep dummy /etc/passwd
dummy:x:1001:1001:Crash T. Dummy,,,:/home/dummy:/bin/bash

lentest:~# ps aux | grep dummy
dummy     2418  0.0  2.2   5492  2796 tty2     S    09:22   0:00 -bash
dummy     2453  0.0  0.7   4104   980 tty2     S+   09:22   0:00 screen
dummy     2454  0.0  0.8   4236  1116 ?        Ss   09:22   0:00 SCREEN
dummy     2455  0.0  2.1   5488  2752 pts/0    Ss   09:22   0:00 /bin/bash
dummy     2466  0.1  0.8   2388  1072 pts/0    S+   09:23   0:00 top
root      2479  0.0  0.5   3140   748 tty1     S+   09:33   0:00 grep dummy

Nun versucht root, den User dummy zu loeschen.

lentest:~# userdel dummy
userdel: Benutzer dummy ist derzeit angemeldet

lentest:~# pkill -KILL -u dummy
(Uebrigens, erst -TERM und dann -KILL ist besser, dazu spaeter mehr)

lentest:~# userdel dummy
userdel: Benutzer dummy ist derzeit angemeldet

lentest:~# deluser dummy
Entferne Benutzer dummy ...
Warning: group `dummy' has no more members.
userdel: Benutzer dummy ist derzeit angemeldet
/usr/sbin/deluser: `/usr/sbin/userdel' dummy gab den Fehlercode 8 zurueck. 
Programmende.

lentest:~# grep dummy /etc/passwd
dummy:x:1001:1001:Crash T. Dummy,,,:/home/dummy:/bin/bash

lentest:~# last | head -n 3
dummy    tty2                          Wed Apr  6 09:22 - 09:38 (00:15)
dummy    tty2                          Wed Apr  6 09:22 - 09:22 (00:00)
root     tty1                          Wed Apr  6 09:20   still logged in

Laut last ist der User dummy nicht mehr eingeloggt. Na sowas.

Dass /var/log/wtmp bei Dir fehlt, koennte damit zusammenhaengen, dass
es ein vserver ist (oder interpretiere ich den hostnamen "vs2801"
falsch?). Auch das hier muesste vserver-spezifisch sein:
vs2801:~# fuser -k buum
  Cannot stat file /proc/1/fd/10: Keine Berechtigung

Aber zurueck zu userdel.

lentest:~# strace -o log userdel dummy

Untersuchen der strace-Ausgabe in log zeigt, dass userdel die Datei
/var/run/utmp oeffnet. Diese Datei zeigt die momentan eingeloggten User,
waehrend /var/log/wtmp die Login-History speichert. Aus /var/run/utmp
bezieht auch pinky (rein lokal arbeitende Version des Kommandos finger)
seine Information. Auch pinky zeigt den User dummy noch als
eingeloggt an:

lentest:~# pinky
Login    Name                 TTY      Idle   When         Where
root     root                *tty1            Apr  6 09:20
dummy    Crash T. Dummy      ?pts/0    ???    Apr  6 09:22 :tty2:S.0

Das Problem ist also, dass der Login-Status aus /var/run/utmp nicht
korrekt entfernt wurde. Und jetzt kommen wir zurueck zum pkill -KILL.
Prozesse immer gleich mit Signal 9 (SIGKILL) zu beenden ist Mist,
typisches Halbwissen aus Webforen. SIGKILL hindert den jeweiligen Prozess
daran sich geordnet zu beenden, Temporaerdateien zu loeschen, etc.

Statt gleich mit pkill -KILL Rambo zu spielen, erstmal SIGTERM
und _danach_ SIGKILL schicken, dann klappt's auch mit /var/run/utmp.

lentest:~# pkill -TERM -u dummy
lentest:~# pkill -KILL -u dummy
lentest:~# pinky
Login    Name                 TTY      Idle   When         Where
root     root                *tty1            Apr  6 09:20

lentest:~# userdel dummy

Na geht doch.

Ansonsten willst Du Dir die Manpage von userdel durchlesen,
speziell die Option -f wird Dich interessieren.

Gruss,
  Chris
-- 
Christian Perle                                    chris AT linuxinfotag.de
010111                                              http://chris.silmor.de/
101010                          LinuxGuitarKitesBicyclesBeerPizzaRaytracing

_______________________________________________
Lug-dd maillist  -  [email protected]
https://ssl.schlittermann.de/mailman/listinfo/lug-dd

Antwort per Email an