Subject: Re: chown, quotas and security
To: I can teach you how to fish... <greywolf@autodesk.com>
From: Greg A. Woods <woods@kuma.web.net>
List: current-users
Date: 11/07/1994 15:37:41
[ On Mon, November 7, 1994 at 11:35:10 (-0800), I can teach you how to fish... wrote: ]
> Subject: Re: chown, quotas and security
>
> Well, this has certainly opened an array of pointers to arrays of cans of
> worms...
;-)
> That's the key, right there. The set?id bits set the *effective*
> {user,group} ID [as appropriate], not the real uid. If they set the
> real (possibly as well as the effective) ID, there would be no need
> for sete?id, setr?id, set?id to be separate calls, let alone the need
> for them to be called once the program is executed.
>
> In actuality, suser(), which is called by most system calls, looks at
> cr_uid, which is the effective user ID (cr_ruid is the real user ID).
>
> This has been since time immemorial. Nothing is broken.
GAK!
Of course set?id files set the *effective* ?id. [[RTFM!]]
Which means chown'ing /usr/sbin/chown to root and making it setuid
completely obliviates anything any one/doc says about it! ;-)
And it is the way it has to be too, otherwise setuid prgms wouldn't be
of much use, would they [[he says thinking out loud!]].
And it also creates a hole big enough for a freight train being pushed
sideways!
Which is yet another reason why I like the idea of chown(2) supporting
non-super-user functionality for filesystems defining it (eg. a ufs
without quotas enabled).
I guess the real question might be: "Would such functionality break
POSIX conformance?"
--
Greg A. Woods
+1 416 443-1734 VE3TCP robohack!woods
Planix, Inc. <woods@planix.com>; UniForum Canada <woods@uniforum.ca>