Capabilities Beispiel readlogs: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(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,…“) |
|||
| Zeile 5: | Zeile 5: | ||
#include <stdlib.h> | #include <stdlib.h> | ||
| − | int main() { | + | int main(int argc, char *argv[]) { |
FILE *fp; | FILE *fp; | ||
char ch; | 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) { | if (fp == NULL) { | ||
perror("Error opening file"); | perror("Error opening file"); | ||
| Zeile 15: | Zeile 22: | ||
} | } | ||
| − | while((ch = fgetc(fp)) != EOF) | + | // Dateiinhalt ausgeben |
| + | while((ch = fgetc(fp)) != EOF) { | ||
putchar(ch); | putchar(ch); | ||
| + | } | ||
| + | // Datei schließen | ||
fclose(fp); | fclose(fp); | ||
return 0; | return 0; | ||
} | } | ||
| + | |||
</pre> | </pre> | ||
Version vom 12. Mai 2024, 13:13 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
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