您如何增加MAXSYMLINKS


10

在python脚本中,我正在创建一堆链接在一起的符号链接。

例如:link1-> link2-> link3-> .......-> somefile.txt

我想知道如何将符号链接的最大数量更改为大于20?


5
你为什么想做这个?MAXSYMLINKS是在系统头文件中定义的(例如,/usr/include/x86_64-linux-gnu/sys/param.h在我的系统上),并且不能由用户修改。
ire_and_curses 2012年

1
必须多次调用readlink()才能获得真实文件,这对性能没有好处。
jordanm 2012年

5
我在学校参加道德黑客课程,这很酷,其中一种叫TOCTTOU,您想在其中创建一个精心制作的目录/符号链接迷宫来影响性能。
grebwerd 2012年

Answers:


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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.