Dateizugriffsüberwachung

    Häufig müssen Benutzer und Systemadministratoren nachverfolgen, auf welche Dateien die Anwendung zugreift. Linux hat bereits alle Werkzeuge dafür, und umso überraschender ist es, ständig in den Foren zu hören, ob es eine Entsprechung zu Sysinternal Filemon gibt. In diesem Artikel werde ich die Verwendung des Dienstprogramms strace beschreiben und eine Reihe von Punkten berücksichtigen, die einigen Benutzern entgehen, die der Ansicht sind, dass Anwendungen die Leseberechtigungen einschränken müssen, z. B. den Mplayer- Zugriff auf den angezeigten Film einschränken .

    strace ist ein Tracer für Systemaufrufe und -signale. Um mit Dateien zu arbeiten, wird der Systemaufruf "open" verwendet , und dementsprechend ist es nur erforderlich, ihn zu verfolgen. Befehlsbeispiel:
    $ strace -xf -eopen -o /path/to/log /path/to/program

    Hier weisen wir Sie an, alle untergeordneten Prozesse zu verfolgen, nicht druckbare Zeichen durch eine hexadezimale Darstellung zu ersetzen und das Anrufprotokoll in der Datei / path / to / log zu speichern. Anschließend kann das empfangene Protokoll mit den entsprechenden Tools verarbeitet werden. Im Folgenden finden Sie Beispiele zum Extrahieren aller erforderlichen Informationen aus dem Protokoll.

    Überwachung von Nano-Texteditoren


    Schauen wir uns zunächst an, auf welche Dateien der einfachste Nano-Texteditor zugreift: Mit dem Befehl sed konvertieren wir das Protokoll zur besseren Lesbarkeit in ein kürzeres Format und sortieren die Zeilen. Infolgedessen sollte etwa Folgendes angezeigt werden: Sie können die folgenden Kategorien von Dateien unterscheiden, auf die das Programm zugreift:
    $ strace -xf -eopen -o out.log nano temp.txt
    $ sed -n 's/.*open(\(.*\))\s*=.*/\1/p' out.log | sort


    "/etc/ld.so.cache", O_RDONLY
    "/etc/nanorc", O_RDONLY
    "/home/nuald/.nano_history", O_RDONLY
    "/home/nuald/.nano_history", O_WRONLY|O_CREAT|O_TRUNC, 0666
    "/home/nuald/.nanorc", O_RDONLY
    "/lib/libc.so.6", O_RDONLY
    "/lib/libdl.so.2", O_RDONLY
    "/lib/libncursesw.so.5", O_RDONLY
    "/lib/terminfo/x/xterm", O_RDONLY
    "temp.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666
    "/usr/lib/gconv/gconv-modules.cache", O_RDONLY
    "/usr/lib/locale/en_US.utf8/LC_ADDRESS", O_RDONLY
    ... другие библиотеки для работы с локалью
    "/usr/lib/locale/locale-archive", O_RDONLY
    "/usr/share/locale/en/LC_MESSAGES/nano.mo", O_RDONLY
    ... другие файлы локализации
    "/usr/share/locale/locale.alias", O_RDONLY


    • Nanokonfiguration (nanorc, ~ / .nano_history)
    • Vom Programm verwendete dynamische Bibliotheken (libc usw.)
    • Lokalisierungsdateien
    • Und eigentlich die bearbeitete Datei

    Das heißt Dabei müssen Programme auf eine ausreichend große Anzahl von Dateien zugreifen, und die Einschränkung des Lesezugriffs wirkt sich nachteilig auf die Leistung von Programmen aus.

    Mplayer Video Player Überwachung


    Versuchen Sie nun, mplayer auszuführen und die Dateien zu überprüfen, in die nur geschrieben wird. Vielleicht gibt uns dies die Möglichkeit, das gewünschte sichere Profil des Programms zu erstellen. Hier haben wir die Ausgabe mit dem Befehl grep eingeschränkt und keine Dateien eingeschlossen, die mit dem Flag O_RDONLY (schreibgeschützt) geöffnet wurden. Wie Sie sehen, ist hier nicht alles so reibungslos - mplayer muss in andere Dateien schreiben, und möglicherweise führt eine Zugriffsbeschränkung zu einem Totalausfall, und es kann kein Video abgespielt werden. Die obige Idee, den Zugriff einzuschränken, ist also nicht so einfach umzusetzen und schon gar nicht in ihrem ursprünglichen Sinne.

    $ strace -xf -eopen -o out.log mplayer test.mp4
    $ sed -n 's/.*open(\(.*\))\s*=.*/\1/p' out.log | grep -v O_RDONLY | sort

    "/dev/3dfx", O_RDWR
    "/dev/fb0", O_RDWR
    "/dev/mga_vid", O_RDWR
    "/dev/mga_vid", O_RDWR
    "/dev/shm/pulse-shm-3056117003", O_RDWR|O_CREAT|O_EXCL|O_NOFOLLOW|O_CLOEXEC, 0400
    "/home/nuald/.mplayer/config", O_WRONLY|O_CREAT|O_EXCL, 0666
    "/home/nuald/.pulse-cookie", O_RDWR|O_CREAT|O_NOCTTY, 0600



    Fazit


    In diesem kurzen Aufsatz wurde nur ein Anwendungsbereich von strace angegeben . Dieses Programm hat viele großartige Fähigkeiten und kann Ihnen helfen, schlaflose Nächte loszuwerden, um nach Gründen für die Inoperabilität von Anwendungen zu suchen, auch ohne einen Debugger zu verwenden. Dies ist ein Tool, das jeder Linux-Entwickler kennen sollte, und ich hoffe, dass es Ihnen bei der Bekämpfung zahlreicher Fehler und der Verbesserung der Qualität der zu entwickelnden Software zugute kommt.

    PS Hier ist eine Liste anderer Tools, die für die Überwachung des Dateizugriffs nützlich sind:

    Jetzt auch beliebt: