[linux-l] shellbefehle loggen

Olaf Radicke olaf_rad at gmx.de
Mo Mai 13 13:10:48 CEST 2002


On Mon, May 13, 2002 at 11:43:27AM +0200, Steffen Dettmer wrote:
> * Olaf Radicke wrote on Fri, May 10, 2002 at 13:51 +0000:
> > On Fri, May 10, 2002 at 09:46:15AM +0200, Ruwen Poljak wrote:
> > >    ich suche ein tool welches shellebefehle in eine logdatei
> > >    schreibt. wichtig wäre, das nur bestimmte shellbefehle mitgeloggt
> > >    werden, also bsp. rm, oder mv, das müßte dann über eine
> > >    configdatei steuerbar sein. 
> >  
> > Für jede offene Shell wird ein Divice angelegt. Das kann man
> > auslesen wie eine Datei. 
> 
> Wie meinst Du das? Meinst Du, daß man stdio durch eine named FIFO
> umlenkt und der Shell die FIFO als stdio gibt? Oder was für ein
> Device soll er anlegen?
Das Device wir von alleine angelegt.
Also:
1.) Drücke Strg-Alt-F1 und logg dich als User ein.
2.) Drücke Strg-Alt-F2 und logg dich als root ein.
3.) Dann gib "w" ein und du erhältst etwas diese Meldung:
--schnipp--
 10:43am  up  2:14,  7 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU  WHAT
ol       tty1     -                10:24am  5:03   0.14s  0.14s  -bash 
root     tty2     -                10:24am  3:34   0.15s  0.04s  bash 
--schnapp--
4.) Dann gib als root auf tty2 " cat /dev/tty1" ein
5.) Dann Drücke Strg-Alt-F1 und gib z.B. ein "Das liest der root".
6.) Drücke Strg-Alt-F2 da wird dann jetz stehen "Das liest der root".

Klappt aber auch nur manchmal - weiß der Teufel warum.

> 
> > Denkbar währe also ein Perl-Skript das im ersten Schritt per
> > Bashbefehl "w" guckt wer ist eingelockt, wer hat welches 
> > Divice.
> 
> Na ja, bloß dann hat die Shell ja i.d.R. ein Terminal, da kann
> man ja dann nichts mehr dazwischen hängen.

Schein bar doch.

> > Als Zweites, in das Divice guckt und alles verwirft bis 
> > "Mein-Schlüssel-Word" kommt und dann mitschreibt ...
> 
> Das wird verdammt kompliziert zu parsen. Ich kann mir nicht
> vorstellen, daß man auf dieser Ebene Kommandoabhängig filtern
> kann. Du kannst ja schreiben:
> ls="rm" && $ls filename
> und sowas. Oder ein Script starten. Ganz toll ist immer der
> Eintrag "mc" in solchen logs.
> 
> > Es wird aber sehr knifflig die Fehler ab zu fangen. 
> 
> Ja, wieso?
> 

Um einen Fehler abzufangen muss man erstmal eine Annamme
devinieren. Aber es kann ziemlich komische Dinge passiern
wenn man mit dem Divice rummurckst. Sieh Beispiel oben.

> > Der andere Weg könnte sein, die ".bash_history" auszuwerten.
> 
> Die wird nur beim Beenden der Shell geschrieben, und das kann man
> auch einfach umgehen.
> 
> Kommt auch sehr darauf an, was Du machen möchtest. 

Ganz meine Zustimmung...

>Möchtest Du
> ein Log, falls ein Admin Mist macht (und man wissen möchte, wer
> es war)

Na wenn Admin "root" ist können wir uns das Alles sparen.

Mfg Olaf




Mehr Informationen über die Mailingliste linux-l