Dlaczego chcesz to zrobić? MAXSYMLINKS jest zdefiniowany w nagłówkach systemu (np. W /usr/include/x86_64-linux-gnu/sys/param.hmoim systemie) i nie jest przeznaczony do modyfikacji przez użytkowników.
ire_and_curses
1
Konieczność wywołania readlink () ponad 20 razy, aby dostać się do prawdziwego pliku, nie będzie dobra dla wydajności.
jordanm
5
Uczęszczam na zajęcia z etycznego hakowania w szkole, co jest całkiem fajne. Jeden z HACKS nazywa się TOCTTOU, gdzie chcesz wpłynąć na wydajność, tworząc rozbudowany labirynt katalogów / linków symbolicznych.
grebwerd
Odpowiedzi:
16
W Linuksie (przynajmniej 3.5) jest on na stałe zakodowany na 40 (patrz follow_link()wfs/namei.c ) i zauważ, że jest to liczba linków użytych podczas rozwiązywania wszystkich składników ścieżki, możesz to zmienić tylko poprzez rekompilację jądra.
$ 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
/usr/include/x86_64-linux-gnu/sys/param.h
moim systemie) i nie jest przeznaczony do modyfikacji przez użytkowników.Odpowiedzi:
W Linuksie (przynajmniej 3.5) jest on na stałe zakodowany na 40 (patrz
follow_link()
wfs/namei.c
) i zauważ, że jest to liczba linków użytych podczas rozwiązywania wszystkich składników ścieżki, możesz to zmienić tylko poprzez rekompilację jądra.źródło