¿Cómo aumentar MAXSYMLINKS

10

En un script de Python, estoy creando un montón de enlaces simbólicos encadenados.

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

Me preguntaba cómo puede cambiar el número máximo de enlaces simbólicos para que sea mayor que 20.

grebwerd
fuente
55
Por qué querrías hacer esto? MAXSYMLINKS se define en los encabezados del sistema (por ejemplo, /usr/include/x86_64-linux-gnu/sys/param.hen mi sistema) y no está destinado a ser modificado por los usuarios.
ire_and_curses
1
Tener que llamar a readlink () más de 20 veces para obtener un archivo real no va a ser bueno para el rendimiento.
jordanm
55
Estoy tomando una clase de piratería ética en la escuela, lo cual es bastante bueno. Uno de los HACKS se llama TOCTTOU, donde quieres impactar el rendimiento creando un elaborado laberinto de directorio / enlace simbólico.
grebwerd 01 de

Respuestas:

16

En Linux (3.5 al menos), está codificado a 40 (ver follow_link()enfs/namei.c ), y tenga en cuenta que es el número de enlaces seguidos al resolver todos los componentes de una ruta, solo puede cambiarlo volviendo a compilar el núcleo.

$ 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
fuente