Como você aumenta MAXSYMLINKS

10

Em um script python, estou criando um monte de links simbólicos encadeados.

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

Eu queria saber como você pode alterar o número máximo de links simbólicos para ser maior que 20?

grebwerd
fonte
5
Por que você quer fazer isso? MAXSYMLINKS é definido nos cabeçalhos do sistema (por exemplo, /usr/include/x86_64-linux-gnu/sys/param.hno meu sistema) e não se destina a ser modificado pelos usuários.
Ire_and_curses 28/10/12
11
Ter que chamar readlink () mais de 20 vezes para acessar um arquivo real não será bom para o desempenho.
Jordanm #
5
Estou fazendo uma aula de hackers éticos na escola, o que é muito legal. Um dos HACKS é chamado TOCTTOU, onde você quer impactar o desempenho criando um labirinto elaborado de diretório / link simbólico.
grebwerd

Respostas:

16

No Linux (pelo menos 3.5), ele é codificado para 40 (veja follow_link()emfs/namei.c ), e observe que é o número de links seguidos ao resolver todos os componentes de um caminho, você só pode alterá-lo recompilando o kernel.

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