Come aumentare MAXSYMLINKS


10

In uno script Python, sto creando un mucchio di collegamenti simbolici concatenati.

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

Mi chiedevo come è possibile modificare il numero massimo di collegamenti simbolici per essere maggiore di 20?


5
Perché vorresti farlo? MAXSYMLINKS è definito nelle intestazioni di sistema (ad es. /usr/include/x86_64-linux-gnu/sys/param.hSul mio sistema) e non è destinato a essere modificato dagli utenti.
ire_and_curses,

1
Dover chiamare readlink () più di 20 volte per arrivare a un file reale non sarà buono per le prestazioni.
Giordania,

5
Sto frequentando una lezione di hacking etico a scuola, che è piuttosto interessante. Uno degli HACKS si chiama TOCTTOU, dove vuoi influenzare le prestazioni creando un labirinto di directory / link simbolici elaborato.
grebwerd,

Risposte:


16

Su Linux (almeno 3.5), è hardcoded su 40 (vedi follow_link()infs/namei.c ), e nota che è il numero di collegamenti seguiti quando si risolvono tutti i componenti di un percorso, puoi cambiarlo solo ricompilando il kernel.

$ 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.