Comment augmentez-vous MAXSYMLINKS


10

Dans un script python, je crée un tas de liens symboliques enchaînés.

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

Je me demandais comment vous pouvez changer le nombre maximum de liens symboliques pour qu'il soit supérieur à 20?


5
Pourquoi voudriez-vous faire ça? MAXSYMLINKS est défini dans les en-têtes du système (par exemple /usr/include/x86_64-linux-gnu/sys/param.hsur mon système) et n'est pas destiné à être modifié par les utilisateurs.
ire_and_curses

1
Devoir appeler readlink () plus de 20 fois pour accéder à un vrai fichier ne sera pas bon pour les performances.
jordanm

5
Je prends une classe de piratage éthique à l'école, ce qui est assez cool.Un des HACKS s'appelle TOCTTOU, où vous voulez influer sur la performance en créant un répertoire / labyrinthe de liens symboliques élaboré.
grebwerd

Réponses:


16

Sous Linux (3.5 au moins), il est codé en dur à 40 (voir follow_link()dansfs/namei.c ), et notez que c'est le nombre de liens suivis lors de la résolution de tous les composants d'un chemin, vous ne pouvez le changer qu'en recompilant le noyau.

$ 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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.