Làm thế nào để bạn tăng MAXSYMLINKS


10

Trong một kịch bản python, tôi đang tạo ra một loạt các liên kết tượng trưng được xích lại với nhau.

ví dụ: link1-> link2-> link3 -> .......-> somefile.txt

Tôi đã tự hỏi làm thế nào bạn có thể thay đổi số lượng liên kết tối đa lớn hơn 20?


5
Tại sao bạn muốn làm điều này? MAXSYMLINKS được xác định trong các tiêu đề hệ thống (ví dụ: /usr/include/x86_64-linux-gnu/sys/param.htrên hệ thống của tôi) và không được người dùng sửa đổi.
ire_and_curses

1
Phải gọi readlink () hơn 20 lần để có được một tập tin thực sự sẽ không tốt cho hiệu suất.
jordanm

5
Tôi đang tham gia một lớp hack đạo đức ở trường, khá tuyệt vời. Một trong những HACKS được gọi là TOCTTOU, nơi bạn muốn tác động đến hiệu suất bằng cách tạo ra một mê cung thư mục / biểu tượng liên kết phức tạp.
grebwerd

Câu trả lời:


16

Trên Linux (ít nhất là 3,5), nó được mã hóa thành 40 (xem follow_link()trongfs/namei.c ) và lưu ý rằng đó là số lượng liên kết được theo dõi khi giải quyết tất cả các thành phần của một đường dẫn, bạn chỉ có thể thay đổi nó bằng cách biên dịch lại 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.