Regarding Hard Link

前端 未结 5 1958
谎友^
谎友^ 2021-02-14 09:50

Can somebody please explain me why the kernel doesn\'t allow us to make a hard link to a directory. Whether it is because it breaks the rule of directed acyclic graph structure

5条回答
  •  醉酒成梦
    2021-02-14 10:16

    In addition to the possibility of getting cycles (much like with symlinks, by the way, but these are easier to detect and handle), there is a second reason I can think of.

    On UNIX, there is a common assumption in use by many programs, that will assume that all directories will have a link count of 2+number of child directories. This is due to the POSIX standard directory entries '.' and '..' which link to the directory or it's parent.

    (After verification, I can say that the root (/) is not an exception).

    This is especially useful as a performance optimization to detect leaf directories when recursing, but many applications will exist that have found other uses for it

    Clarifying By allowing 'userdefined' hardlinks to directories, these invariants so to say will no longer hold, and any dependent applications might stop working correctly. The element of surprise is why you need root permissions (and some good design (re)thinking) in order to force creation of directory hardlinks

提交回复
热议问题