Was Sie suchen, ist ein Tool, das zeigt, wie ein Programm mit dem System (genauer gesagt mit dem Kernel) interagiert. Programme interagieren mit dem System über Syscalls. Beispiele für Systemaufrufe sind:
open
- zum Öffnen einer Datei verwendet;
read
und write
- zum Lesen / Schreiben von / in einen Dateideskriptor verwendet wird;
connect
- zum Verbinden eines Sockets mit einem Peer;
- viele, viele andere (siehe
man syscalls
).
Der Punkt ist: Syscalls können mit verfolgt werden ptrace(2)
. Sie suchen also im Grunde nach Werkzeugen, die darauf basieren ptrace
. Eines dieser Tools ist strace(1)
eine Terminalanwendung, die einen Befehl als Argument verwendet und Folgendes ausgibt:
- Das System ruft das Programm auf.
- die Argumente, mit denen die Systemaufrufe ausgeführt wurden;
- das Ergebnis der Systemaufrufe.
Die Ausgabe erfolgt in C-Form. Hier ist ein Beispiel:
$ strace cat test
execve("/bin/cat", ["cat", "test"], [/* 55 vars */]) = 0
/* ... */
open("test", O_RDONLY) = 3
/* ... */
read(3, "hello\n", 32768) = 6
write(1, "hello\n", 6) = 6
read(3, "", 32768) = 0
/* ... */
Dort sehen Sie, dass cat test
eine Datei mit dem Namen geöffnet test
, deren Inhalt ( hello
) gelesen und in die Standardausgabe eingefügt wird.
strace
kann viel Ausgabe produzieren, lesen Sie also unbedingt die Manpage ( man strace
), insbesondere die Dokumentation der -e
Ausgabe, mit der Sie nur die Syscalls sehen können, an denen Sie interessiert sind.
Leider sind mir keine grafischen oder benutzerfreundlichen Alternativen bekannt. Wenn Sie nach ihnen suchen möchten, ptrace
sollte eines Ihrer Suchbegriffe sein.
Über die Isolation gibt es viele Technologien. Am häufigsten werden Chroots, Linux-Container (die derzeit entwickelt und unvollständig sind), Software-Virtualisierung und Paravirtualisierung verwendet. Dies ist jedoch ein Thema, das viel zu groß ist, um es zu diskutieren. Ich würde vorschlagen, eine neue Frage zu öffnen, wenn Sie weitere Details wünschen.
sandbox somebinary
und das imaginäresandbox
Programm würde allesomebinary
gelesenen oder geschriebenen Dateien protokollieren IPs / Ports verbunden, Daten übertragen usw. Das wäre eine nützliche Sache, ich würde auch gerne wissen, ob so etwas existiert (und ohne ein solches Tool wäre es sinnlos, ein Programm zu beobachten, das in einer VM ausgeführt wird, wie Sie kann sowieso nicht sagen, was es dort macht). Gute Frage.