Capabilities Beispiel readlogs: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 35: | Zeile 35: | ||
=Kompiliere dieses Programm (nehmen wir an, es heißt readlogs):= | =Kompiliere dieses Programm (nehmen wir an, es heißt readlogs):= | ||
| − | |||
*gcc readlogs.c -o readlogs | *gcc readlogs.c -o readlogs | ||
| + | =Oder hier runterladen= | ||
| + | *wget https://xinux.de/downloads/readlogs | ||
| + | *chmod +x readlogs | ||
=Festlegen der Capability= | =Festlegen der Capability= | ||
Version vom 12. Mai 2024, 13:25 Uhr
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