Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Oct 2006 10:50:44 -0800
From:      Doug Barton <dougb@FreeBSD.org>
To:        Peter Jeremy <peterjeremy@optushome.com.au>
Cc:        freebsd-hackers@freebsd.org, perryh@pluto.rain.com, delphij@FreeBSD.org
Subject:   Re: [patch] rm can have undesired side-effects
Message-ID:  <45464984.1040602@FreeBSD.org>
In-Reply-To: <20061030083849.GB871@turion.vk2pj.dyndns.org>
References:  <20061029222847.GA68272@marvin.astase.com>	<20061030003628.42bc5f8d@loki.starkstrom.lan>	<45455f6a.yNcc0kkyEKpoRv3m%perryh@pluto.rain.com> <20061030083849.GB871@turion.vk2pj.dyndns.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Peter Jeremy wrote:
> On Sun, 2006-Oct-29 18:11:54 -0800, perryh@pluto.rain.com wrote:
>> I think a very strong case can be made that the *intent* of -P --
>> to prevent retrieval of the contents by reading the filesystem's
>> free space -- implies that it should affect only the "real" removal
>> of the file, when its blocks are released because the link count
>> has become zero.
> ...
>> In this interpretation, "rm -P" when the link count exceeds 1 is
>> an erroneous command.
> 
> I agree.  Doing "rm -P" on a file with multiple links suggests that
> the user is unaware that there are multiple links.  I don't think
> that just unlinking the file and issuing a warning is a good solution
> because it's then virtually impossible to locate the other copy(s)
> of the file, which remains viewable.  I believe this is a security
> hole.
> 
> Consider: In FreeBSD, it is possible to create a hardlink to a file if
> you are not the owner, even if you can't read it.  Mallory may decide
> to create hardlinks to Alice's files, even if he can't read them today
> on the off-chance that he may be able to circumvent the protections at
> a later date.  Unless Alice notices that her file has a second link
> before she deletes it, when she issues "rm -P", she will lose her link
> to the file (and her only way of uniquely identifying it) whilst
> leaving the remaining link to the file in Mallory's control.

I think Peter is right here. I recently patched the -P option to error
out if a file is unwritable. I think that is the correct behavior here
too. If the file is not removed, then it is correct for rm to exit
with an rc > 0. Another poster mentioned the case of using rm in a
script, or for a large directory where this kind of warning might get
missed, which is one of the reasons I think it needs to exit with an
error code.

My suggestion would be to change warnx() to errx(), and drop the
return(1); from that patch. If there are no objections I'll do it
myself if no one gets to it first.

In any case I think that this is a good addition to the code, and I'm
glad that this issue was raised.

Doug

-- 

    This .signature sanitized for your protection



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