Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Dec 2002 19:49:27 -0800
From:      David Schultz <dschultz@uclink.Berkeley.EDU>
To:        Mark <admin@asarian-host.net>
Cc:        Ceri Davies <setantae@submonkey.net>, Andrew Cutler <andrew@1stelement.com>, freebsd-questions@FreeBSD.ORG
Subject:   Re: chown broken??
Message-ID:  <20021221034927.GA804@HAL9000.homeunix.com>
In-Reply-To: <200212201448.GBKEMQM99487@asarian-host.net>
References:  <1040390551.921.36.camel@localhost> <200212201412.GBKECSM91804@asarian-host.net> <20021220141504.GB6893@submonkey.net> <200212201448.GBKEMQM99487@asarian-host.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Thus spake Mark <admin@asarian-host.net>:
> ----- Original Message -----
> From: "Ceri Davies" <setantae@submonkey.net>
> To: "Mark" <admin@asarian-host.net>
> Cc: "Andrew Cutler" <andrew@1stelement.com>; <freebsd-questions@FreeBSD.ORG>
> Sent: Friday, December 20, 2002 3:15 PM
> Subject: Re: chown broken??
> 
> 
> > On Fri, Dec 20, 2002 at 03:12:17PM +0100, Mark wrote:
> >
> > > I must say, though, that while I understand this behaviour, one can
> > > argue on what exactly "recursive" is to mean here. Intuitively,
> > > the definition of "the current sub-directory and all sub-directories
> > > below the current directory (and that for each subdirectory)" seems
> > > the correct one. Which would exclude "..", as this is not a
> sub-directory
> > > of the current directory, but the parent.
> >
> > Not really.  It recurses through the directories named on the command
> > line, of which '..' happens to be one.
> 
> 
> Yes, "the directories named on the command line" within the CURRENT
> directory. Technically, "." and ".." are entries within the current
> directory (try: "od -c ."), and they have inode numbers too. But that does
> not deter me from deeming it a bit counter-intuitive to consider ".." a
> directory of the current directory. :) Especially in the context of
> recursion.

So you want 'chown foo ..' to fail, as a special case?  As I
mentioned before, rm gets away with this because you don't want to
remove the parent of the directory you're currently in.
(Actually, some rm implementations *will* let you shoot yourself
in the foot.)  But it's perfectly reasonable to chown '..', even
recursively, so chown can't make any assumptions.

I object to going around and documenting this caveat in the
manpages for every single utility that supports recursion through
a directory tree.  It doesn't really belong there, it belongs in a
``How to use the shell'' tutorial.  The way Unix traditionally
does parameter expansion makes it easy to shoot yourself in the
foot in at least a dozen ways, and this is just one of them.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




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