Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Aug 2004 08:44:47 +0930
From:      Greg 'groggy' Lehey <grog@FreeBSD.org>
To:        David Kelly <dkelly@HiWAAY.net>
Cc:        FreeBSD_Questions FreeBSD_Questions <freebsd-questions@freebsd.org>
Subject:   Re: hard links for directories ?
Message-ID:  <20040817231447.GM88156@wantadilla.lemis.com>
In-Reply-To: <6BDB5047-F05D-11D8-8B80-000393BB56F2@HiWAAY.net>
References:  <6.1.2.0.0.20040816220030.04148ec0@mail1.simplenet.com> <20040817052403.GE88156@wantadilla.lemis.com> <6BDB5047-F05D-11D8-8B80-000393BB56F2@HiWAAY.net>

next in thread | previous in thread | raw e-mail | index | archive | help

--xn9xNsWbHJd/50IB
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Tuesday, 17 August 2004 at  9:55:03 -0500, David Kelly wrote:
>
> On Aug 17, 2004, at 12:24 AM, Greg 'groggy' Lehey wrote:
>
>> On Monday, 16 August 2004 at 22:02:11 -0700, Tim Traver wrote:
>>
>>> This may be a stupid question, but is it possible to make hard links
>>> to
>>> directories ??? I know you can with files, and normally, you would do
>>> a
>>> soft link for directories, but is there any way to finagle this ?
>>
>> Sure, there are ways.  But why would you want to?
>>
>> A link to a directory makes it a subdirectory of the directory
>> containing the link.  If you have two links to a directory, where
>> should the directory's .. link point?  How would fsck know what to do?
>
> Root is the only one allowed to make hard links to directories.

This is not correct.  root has no special powers here.

> As Greg says, "How would fsck know which is the correct parent
> directory?"

To make it clearer: the term "hard link" is a misnomer.  It's just a
link, and there are lots of links to directories.  One is always
called ".", and all the others are called "..".  So when you create a
directory, it has a link count of 2.  Every time you create a
subdirectory of that directory, you add to the link count:

  $ mkdir new=20
  $ ls -dl new
  drwxr-xr-x  2 grog  wheel  512 Aug 18 08:42 new
  $ mkdir new/subdir
  $ ls -dl new
  drwxr-xr-x  3 grog  wheel  512 Aug 18 08:43 new
  $ mkdir new/subdir2
  $ ls -dl new
  drwxr-xr-x  4 grog  wheel  512 Aug 18 08:43 new

> Directories have only one parent. If a directory were to have two
> parents then you'd break the tree structure of the directory
> hierarchy.  You would

could

> create a loop in the tree branches which would place
> utilities such as "find" in an infinite loop.

Greg
--
When replying to this message, please copy the original recipients.
If you don't, I may ignore the reply or reply to the original recipients.
For more information, see http://www.lemis.com/questions.html
Note: I discard all HTML mail unseen.
Finger grog@FreeBSD.org for PGP public key.
See complete headers for address and phone numbers.

--xn9xNsWbHJd/50IB
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.0 (FreeBSD)

iD8DBQFBIpFnIubykFB6QiMRAu/4AJ9htHQP110mc/rzlBsAOZuxqdsFCACffdrs
As4reYJCc54aLaWEyQaKVl4=
=Yk2L
-----END PGP SIGNATURE-----

--xn9xNsWbHJd/50IB--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040817231447.GM88156>