From owner-freebsd-bugs@FreeBSD.ORG Sun Sep 26 20:30:09 2010 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D2DC91065670 for ; Sun, 26 Sep 2010 20:30:09 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id A7B1E8FC1A for ; Sun, 26 Sep 2010 20:30:09 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id o8QKU9AF065301 for ; Sun, 26 Sep 2010 20:30:09 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id o8QKU9hM065296; Sun, 26 Sep 2010 20:30:09 GMT (envelope-from gnats) Date: Sun, 26 Sep 2010 20:30:09 GMT Message-Id: <201009262030.o8QKU9hM065296@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: Bruce Evans Cc: Subject: Re: misc/150972: symbolic link bug X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Bruce Evans List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Sep 2010 20:30:09 -0000 The following reply was made to PR misc/150972; it has been noted by GNATS. From: Bruce Evans To: "Kevin K. Han" Cc: freebsd-gnats-submit@FreeBSD.org, freebsd-bugs@FreeBSD.org Subject: Re: misc/150972: symbolic link bug Date: Mon, 27 Sep 2010 06:25:42 +1000 (EST) On Sun, 26 Sep 2010, Kevin K. Han wrote: >> Description: > Create a directory on the root folder, for example ("/whatever"). > Switch to user's home directory ("cd /usr/home/username") ... from now onwards, work in this directory: > Create a symbolic link from inside a user's home ("ln -s /whatever .") > Execute this: ("chown -R username:username whatever") Apparently you are still running as root after creating /whatever. This chown -R has no effect even as root. (A plain chown would change /whatever and chown -h would change the symlink.) > Try to delete it using ("rm whatever")... it will say it is a directory. It is still not deleted! I don't see this. It would be a bad bug. rm is required to not follow symlinks. A broken version of rm might stat() the symlink and decide that it is a directory, and then rewrite its name to "whatever/" for maximal brokenness (other utilities do need to append a slash sometimes, and this is not easy to get right); then unlink("whatever/") would say it is a directory. > Then, try to delete using ("rm -r -f whatever/"), no errormessage, BUT It is still there! This is how symlinks work. "whatever/" is whatever the symlink points to. It is "/whatever" here. So this commands removes "/whatever" and leaves the symlink untouched. > Then, again, try the same thing ("rm whatever")... It is GONE, INCLUDING the original at "/whatever" !!! Consistent with a broken rm stat()ing the symlink. The previous command removed "/whatever", so "whatever" is a dangling symlink and stat()ing it wouldn't see it as a directory. Bruce