Wie erhöhen Sie MAXSYMLINKS

10

In einem Python-Skript erstelle ich eine Reihe symbolischer Links, die miteinander verkettet sind.

Beispiel: link1-> link2-> link3 -> .......-> somefile.txt

Ich habe mich gefragt, wie Sie die maximale Anzahl von Symlinks auf mehr als 20 ändern können.

grebwerd
quelle
5
Warum willst du das tun? MAXSYMLINKS wird in Systemheadern (z. B. /usr/include/x86_64-linux-gnu/sys/param.hauf meinem System) definiert und darf nicht von Benutzern geändert werden.
ire_and_curses
1
Wenn Sie readlink () mehr als 20 Mal aufrufen müssen, um zu einer echten Datei zu gelangen, ist dies nicht gut für die Leistung.
Jordanm
5
Ich nehme an einem ethischen Hacking-Kurs in der Schule teil, was ziemlich cool ist. Einer der HACKS heißt TOCTTOU, wo Sie die Leistung beeinflussen möchten, indem Sie ein ausgeklügeltes Verzeichnis / symbolisches Link-Labyrinth erstellen.
Grebwerd

Antworten:

16

Unter Linux (mindestens 3.5) ist es fest auf 40 codiert (siehe follow_link()infs/namei.c ). Beachten Sie, dass es sich um die Anzahl der Links handelt, die beim Auflösen aller Komponenten eines Pfads verwendet werden. Sie können es nur ändern, indem Sie den Kernel neu kompilieren.

$ ln -s . 0
$ n=0; repeat 50 ln -s $((n++)) $n
$ ls -LdF 39
39/
$ ls -LdF 40
ls: cannot access 40: Too many levels of symbolic links
$ ls -LdF 20/18 10/10/10/6
10/10/10/6/  20/18/
$ ls -LdF 20/19 10/10/10/7
ls: cannot access 20/19: Too many levels of symbolic links
ls: cannot access 10/10/10/7: Too many levels of symbolic links
Stéphane Chazelas
quelle