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
