Nowe posty

Autor Wątek: bash_history  (Przeczytany 3067 razy)

sulas

  • Gość
bash_history
« dnia: 2011-12-07, 20:22:45 »
Witam,
jak wiadomo w pliku bash_history znajdują się polecenia wydawane przez danego użytkownika. Mój problem polega na tym, że potrzebuję znać WSZYSTKIE polecenia, które wydał dany użytkownik. Nie jest to takie proste, bo wystarczy, że zamiast pisać te polecenia w konsoli, utworzy on skrypt, w którym zamieści te polecenia. I wtedy nie wiem jakie polecenia on wykonał. W pliku bash_history pojawi się tylko polecenie wykonania tego skryptu. Wiem, że niby mogę podejrzeć, co jest w tym skrypcie, ale jak mam w pliku bash_history rozpoznać, że dane polecenie to skrypt. Czy da się, żeby polecenia zawarte w tym skrypcie, były również w pliku bash_history???

  • Gość
bash_history
« Odpowiedź #1 dnia: 2011-12-07, 21:45:02 »
Masz jakiś pomysł, jak rozróżnić skrypt do którego użytkownik wpisał polecenia od programu /usr/bin/libreoffice albo jednego z innych kilkuset skryptów powłoki które znajdują się w /usr/bin? Chyba że założenie, które przyjmuję (o tym, że polecenia ze skryptów niestworzonych przez użytkownika Cię nie interesują), jest błędne.

Wątpię żeby dało się zrobić to, co chcesz. Choćby dlatego, że plik .bash_history nie służy do inwigilacji użytkowników. Wystarczy sobie do ~/.bashrc dopisać unset HISTFILE i cały plan weźmie w łeb.

sulas

  • Gość
bash_history
« Odpowiedź #2 dnia: 2011-12-07, 23:18:13 »
No właśnie nie da się tego odróżnić w pliku bash_history...

Tak jak podejrzewałem, nie da się żeby wszystkie polecenia (łącznie z tymi ze skryptów i programów) były zapisywane w pliku z historią.
Ale dzięki za odpowiedź.

P.S. To nie ma służyć inwigilacji użytkowników tylko pisaniu pracy licencjackiej bazującej na analizie wprowadzonych komend ;P

  • Gość
bash_history
« Odpowiedź #3 dnia: 2011-12-07, 23:50:01 »
Może ktoś byłby w stanie Ci coś sensownego doradzić, gdybyś napisał, czego ta praca ma konkretnie dotyczyć. Bo może być tak, że do problemu podchodzisz z niewłaściwej strony.

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
bash_history
« Odpowiedź #4 dnia: 2011-12-08, 01:09:46 »
Możesz odpalać shella w ten sposób:
$ strace -f -o ~/log.txt sh
Odpal na tej powłoce jakiś skrypt, który odpala kolejne polecenia. Potem zakończ proces shella (exit albo Ctrl+D).
Potem:
$ grep " exec" ~/log.txt
I masz listę wszystkich odpalonych programów wraz z parametrami. Nawet tych odpalonych przez inne programy, a nie tylko skrypty. Wszystkich poza "echo" i innych poleceń wbudowanych w daną powłokę.

sulas

  • Gość
bash_history
« Odpowiedź #5 dnia: 2011-12-08, 10:57:52 »
Co do pracy licencjackiej to na pewno dobrze podchodzę do problemu. Potrzebne mi są wszystkie wydane przez usera komendy, które są potem poddawane analizie.

Narzędzie "strace" na pewno się przyda. Dzięki.