質問: Linuxを勉強しはじめたど素人です。 一般Userによる「ディレクトリのハードリンク」を禁止している理由について、ご教授ください。 意図しない無限ループが発生するのを防ぐためと、様々な場所で説明されていますが、今一つ理解がおよびません。 「ln /Sample /Sample/Dir」ができると「/Sample/Dir/Dir/Dir....」と無限に作成されていくという記述を見かけますが、その過程(なぜ配下にdirが無限にできていくのか、なぜひとつで止まらないのか)をわかりやすくご説明いただけないでしょうか。 視点を変えて、もしも上記のようなハードリンクが存在していると、 「ls -F」などでサブディレクトリを含めてファイル情報を取得しようとすると tmp ⇒ dir ⇒ tmp ⇒ dir ....と無限ループになりそうなことは理解できるのですが、どうしても「無限に作成されていく」部分のイメージが理解できません。 よろしくお願いいたします。
回答: ln コマンドで無限に「作成」されることはないはず。 ls -R で無限ループになる場合があるのはその通りなので、それを言っているのでは? なぜディレクトリに対するハードリンクが禁止されているのかですが、確実な理由は不明です。思いつくのは; (1) ls -R で無限ループになる (さまざまな場所の説明?でも本質的な問題じゃないような) (2) ".." が親ディレクトリを指さなくなる (というか親ディレクトリが複数あるけど一つしか指せない。これは困るような気がする)