Зачем тебе это делать? MAXSYMLINKS определяется в системных заголовках (например, /usr/include/x86_64-linux-gnu/sys/param.hв моей системе) и не предназначен для изменения пользователями.
ire_and_curses
1
Необходимость вызова readlink () более 20 раз, чтобы получить реальный файл, не будет хорошей для производительности.
Иордания
5
В школе я беру уроки этического хакерства, что довольно круто. Один из ХАКОВ называется TOCTTOU, где вы хотите повлиять на производительность, создав сложный лабиринт каталогов / символических ссылок.
grebwerd
Ответы:
16
В Linux (3.5 , по крайней мере), это жёстко до 40 (см follow_link()вfs/namei.c ), и обратите внимание , что это количество ссылок , а затем при решении всех компонентов пути, вы можете изменить его только перекомпилировать ядро.
$ 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
в моей системе) и не предназначен для изменения пользователями.Ответы:
В Linux (3.5 , по крайней мере), это жёстко до 40 (см
follow_link()
вfs/namei.c
), и обратите внимание , что это количество ссылок , а затем при решении всех компонентов пути, вы можете изменить его только перекомпилировать ядро.источник