Capabilities Beispiel readlogs
Version vom 12. Mai 2024, 13:25 Uhr von Thomas.will (Diskussion | Beiträge) (→Kompiliere dieses Programm (nehmen wir an, es heißt readlogs):)
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(int argc, char *argv[]) {
FILE *fp;
char ch;
// Überprüfen, ob das Programm mit einem Dateipfad als Argument aufgerufen wurde
if (argc != 2) {
fprintf(stderr, "Usage: %s <file_path>\n", argv[0]);
return EXIT_FAILURE;
}
// Versuch, die Datei zu öffnen
fp = fopen(argv[1], "r");
if (fp == NULL) {
perror("Error opening file");
return EXIT_FAILURE;
}
// Dateiinhalt ausgeben
while((ch = fgetc(fp)) != EOF) {
putchar(ch);
}
// Datei schließen
fclose(fp);
return 0;
}
Kompiliere dieses Programm (nehmen wir an, es heißt readlogs):
- gcc readlogs.c -o readlogs
Oder hier runterladen
- wget https://xinux.de/downloads/readlogs
- chmod +x 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