14:23:42 # Life symbollic link 解決の制限. 実はLinux Kernelには,シンボリックリンクをたどる回数に制限がかかっている. ファイルをopenしようとした場合に カーネル空間でシンボリックリンクの先を解決することになる. その際に5段階までしかsymbollic linkをたどってくれない. これは,DoSなどを防ぐための制限のようだが,ちょっとださい気もする. ユーザ空間側からstatして解決してあげればなんとか回避できるような気もする. glibc側でopenするたびにstatをしてシンボリックリンクの解決をするだとか, アプリケーション側で毎回canonicalize_file_nameをよんでからopen するだとか回避策は考えられるのだけど,現実味がちょっとたりない. 意外と低いこの制限,はまりませんかね?
$ ls -l total 4 -rw-r--r-- 1 dancer dancer 5 Mar 25 15:49 a lrwxrwxrwx 1 dancer dancer 1 Mar 25 15:49 b -> a lrwxrwxrwx 1 dancer dancer 1 Mar 25 15:49 c -> b lrwxrwxrwx 1 dancer dancer 1 Mar 25 15:49 d -> c lrwxrwxrwx 1 dancer dancer 1 Mar 25 15:49 e -> d lrwxrwxrwx 1 dancer dancer 1 Mar 25 15:49 f -> e lrwxrwxrwx 1 dancer dancer 1 Mar 25 15:49 g -> f lrwxrwxrwx 1 dancer dancer 1 Mar 25 15:49 h -> g $ cat b test $ cat h cat: h: Too many levels of symbolic links $ realcsh.c REAL csh: #include <stdlib.h> REAL csh: #define _GNU_SOURCE REAL csh: printf("%s\n", canonicalize_file_name("h")); /tmp/t/a
16:13:43 # Life みつかさんのcannaパッケージをスポンサーしました. とりあえずアップロードだけしました.
$Id: dancer-diary.el,v 1.90 2006/01/31 11:16:16 dancer Exp $