X-Recipient: archive-cygwin AT delorie DOT com DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:subject:message-id:reply-to :references:mime-version:content-type:in-reply-to; q=dns; s= default; b=RY7wp57LUoT44Ae6WOv1m62oTKXS6IuU/aAvFBX59jU7F2b4wRvus oCIjsT5GEImOnkWlUKVKROdrayWN+tdvOiHocjOsZWM6ghimOmEo0L9X21v0ShXi pomgs8hUzzyxPtbpoIA4d4eAkQViFD6WF4RkyH2DgvHJfHXHbm++Bo= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:subject:message-id:reply-to :references:mime-version:content-type:in-reply-to; s=default; bh=q7NVTJlw7rJWq3PnyV0PNMMNdPM=; b=fuW2MJGp6m6pRBoEkY9o94twOHv+ raddRm43hdR2304bOyUvb6DhyzsEFrMEhFQKaoRNeDzAxA1clyZ80qro2rRN7SDK 9bGOEc7Exzqc8X6wWZ7bWi/fA+GoCRjGaTEm9UQ43SV7kepsLIlym0FTsoyBtYY4 WQPSiyqLrA/Ix6A= Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-5.9 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.2 X-HELO: calimero.vinschen.de Date: Thu, 24 Jul 2014 15:52:22 +0200 From: Corinna Vinschen To: cygwin AT cygwin DOT com Subject: Re: The eternal uid issue Message-ID: <20140724135222.GD12212@calimero.vinschen.de> Reply-To: cygwin AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com References: <53CF6CEC DOT 6D68E485 AT boland DOT nl> <20140723091409 DOT GH27005 AT calimero DOT vinschen DOT de> <53CF9E0F DOT F596FC60 AT boland DOT nl> <20140723152357 DOT GA24446 AT calimero DOT vinschen DOT de> <53D0AD3A DOT 1FDF0B3F AT boland DOT nl> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="z4+8/lEcDcG5Ke9S" Content-Disposition: inline In-Reply-To: <53D0AD3A.1FDF0B3F@boland.nl> User-Agent: Mutt/1.5.23 (2014-03-12) --z4+8/lEcDcG5Ke9S Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Jul 24 08:52, D. Boland wrote: > In your previous mail, you propose the following function to check for 'r= oot' > privileges, which an upstream maintainer could put in his code: >=20 > int > is_admin (uid_t uid) > { > #ifdef __CYGWIN__ > return [getgrouplist(uid, ...) contains group 544]; > #else [other platform] > return [different test]; > #else > return uid =3D=3D 0; > #endif > } >=20 > But this only introduces a new function which she has to put into multipl= e locations > of the original code. So again, why not just modify the 'getuid' function= in > cygwin1.dll to return '0' if the current user is actually SYSTEM or one o= f the > administrators? >=20 > Then you have rock-solid emulation. I would not have to modify a single l= ine of > code. You're kidding, right? What about code like this: struct stat st; stat("foo", &st); if (st.st_uid !=3D getuid ()) /*error*/ else /*do something*/ I'm not saying that this is overly elegant coding, but just as you expect that getuid() returns 0 for any admin, other applications will expect that getuid() reflects reality. Why don't you just override getuid in your application to serve the applications needs? #ifdef __CYGWIN__ #define getuid() CYG_getuid() #endif [...] #ifdef __CYGWIN__ #undef getuid uid_t CYG_getuid () { /* Return 0 for any admin user. */ if (/*getgroups() contains group 544*/) return 0; return getuid (); } But be careful. Just because there are multiple users with admin permissions, that doesn't mean they all want their mail in the same mailbox for user 0... Corinna --=20 Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat --z4+8/lEcDcG5Ke9S Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJT0Q+WAAoJEPU2Bp2uRE+gVgsP/3Y5oszxoinHlVPYHSRmlojX hlGDygk7bUB3czGtH7+TGd71h2qMhK75aycehPMXq4URGh4j2/bh7D6ja87l3A+b EKEzSRJ2y0tz+FGccwfbQQTrpJKpwgmF8SBj4aIVKM+hVodKb7hviov1IsWVAYde ytYJdihLwdrp5zIEaX5LyKa8FoiIyNuuSeZjyNnc21Ak5WoaQ+0s19PHvDhqAebL MlAQA4qWVhZDHpYDt3lwgGrArQ/bFBB1mK6kq6YPJis7w66Gs+/guIpJYyYTD4iH d4LgJ2pL+EwqsgZLlYheHf60jJx3TsgcBISYIs7bCsGBSmnY9Sih+How1Y8SqNtF T++PuR+pFeoOQLk+5TNYuhvvDMccpulRwEZZjqIGsJwm8Ios2eSZD7jOHvCeTYIi 49i70ksLegQL/U+ji2AKBSQv3dBoYICeJN6ntzAh9XxtMWw71HLwbW2iqM7z8Dnn 6k+LXv2mlbtUqNI4hljewHFlYww15l1HlO87LKVhuebdKdeBdhDVB77ydMhyig+1 UAUsszrLZ+CqOo8tXaBT8jS1GZaGU+HDBbbUcnhFktq/tAQh7TFfnacWrrEhweAd VbsYkrIqOPf2KSKYWeOyQQy93H+YS9AQx/Yxr5btSvocIIQXUvPb7zMDVF6ydfVE rQOoAzY1Q2KhOL5N/BlK =Chzj -----END PGP SIGNATURE----- --z4+8/lEcDcG5Ke9S--