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
/usr/include/x86_64-linux-gnu/sys/param.h
sur mon système) et n'est pas destiné à être modifié par les utilisateurs.Réponses:
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.la source