Capabilities Beispiel readlogs

Aus Xinux Wiki
Version vom 11. Mai 2024, 10:43 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=Erstelle ein einfaches Programm= Wir erstellen ein einfaches C-Programm oder ein Skript, das versucht, eine Systemlog-Datei zu lesen, z.B. /var/log/messages,…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Erstelle ein einfaches Programm

Wir erstellen ein einfaches C-Programm oder ein Skript, das versucht, eine Systemlog-Datei zu lesen, z.B. /var/log/messages, die normalerweise auf vielen Systemen beschränkt ist.

#include <stdio.h>
#include <stdlib.h>

int main() {
    FILE *fp;
    char ch;

    fp = fopen("/var/log/messages", "r");
    if (fp == NULL) {
        perror("Error opening file");
        return EXIT_FAILURE;
    }

    while((ch = fgetc(fp)) != EOF)
        putchar(ch);

    fclose(fp);
    return 0;
}

Kompiliere dieses Programm (nehmen wir an, es heißt readlogs):

  • gcc readlogs.c -o readlogs

Festlegen der Capability

Setze die cap_dac_read_search Capability auf das Programm, um ihm zu erlauben, auf Dateien zuzugreifen, zu denen es normalerweise keinen Zugang hat.

  • sudo setcap cap_dac_read_search+ep ./readlogs