Bagaimana Anda meningkatkan MAXSYMLINKS

10

Dalam skrip python, saya membuat banyak tautan simbolik yang dirantai bersama.

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

Saya ingin tahu bagaimana Anda dapat mengubah jumlah maksimum symlink menjadi lebih dari 20?

orang tua
sumber
5
Mengapa Anda ingin melakukan ini? MAXSYMLINKS didefinisikan dalam header sistem (mis. /usr/include/x86_64-linux-gnu/sys/param.hPada sistem saya), dan tidak dimaksudkan untuk dimodifikasi oleh pengguna.
ire_and_curses
1
Harus memanggil readlink () lebih dari 20 kali untuk mendapatkan file nyata tidak akan bagus untuk kinerja.
jordanm
5
Saya mengambil kelas peretasan etika di sekolah, yang cukup keren. Salah satu HACKS disebut TOCTTOU, di mana Anda ingin memengaruhi kinerja dengan membuat direktori rumit / labirin tautan simbolik.
grebwerd

Jawaban:

16

Di Linux (setidaknya 3.5), hardcoded ke 40 (lihat follow_link()difs/namei.c ), dan perhatikan bahwa jumlah tautan diikuti ketika menyelesaikan semua komponen jalan, Anda hanya dapat mengubahnya dengan mengkompilasi ulang 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
Stéphane Chazelas
sumber