delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2008/03/22/11:49:00

X-Recipient: archive-cygwin AT delorie DOT com
X-Spam-Check-By: sourceware.org
Message-ID: <47E5384E.3070503@x-ray.at>
Date: Sat, 22 Mar 2008 17:48:14 +0100
From: Reini Urban <rurban AT x-ray DOT at>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.8.1.12) Gecko/20080201 SeaMonkey/1.1.8
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: Building perl-5.10.0
References: <7634A226C4C245868140309A0F3A952F AT desktop2> <2kap83p6s5819lu66sr6kmrem6o5iqm180 AT 4ax DOT com> <56E5E10621694E4A860212458ECD1E1C AT desktop2> <015b01c7bf20$a3d3e4a0$2e08a8c0 AT CAM DOT ARTIMI DOT COM> <F3A6993B1B3741AD9B6A6D9688BB301D AT desktop2> <9ea6aaa80803172015i3adb46cq3af80a70fa7ff063 AT mail DOT gmail DOT com> <AD1B0F102FEA451BB4C3CB6F44F0B9F5 AT desktop2>
In-Reply-To: <AD1B0F102FEA451BB4C3CB6F44F0B9F5@desktop2>
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

--------------010404020503050501060703
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Sisyphus schrieb:
> ----- Original Message ----- From: "Matthew Persico" 
>> Well after a bit of googling around, the answer is this:
>>
>> 1) In a Windows cmd command prompt, cd where your cygwin lives - mine
>> is at c:\opt\cygwin
> Mine is at C:\cygwin.
> 
>> 2) cd ..
> I first ran 'attrib cygwin' to see what was already there:

Within cygwin you have better tools than the attrib or cacls.
Use your shell and the posix tools, and don't add additional ACL's by 
using the explorer!

> C:\>attrib cygwin
>             C:\cygwin
> 
>> 3) attrib -r cywgin - that removed the read-only bit. Don't try it in
>> Windows Explorer; it does not "stick"
 >
> I then ran 'attrib -r cygwin' (even though it doesn't appear to be 
> readonly to begin with).
> 
>> 4) Then in a Cygwin window, cd /
>> 5) chmod 777 .
> 
> That errors out as follows:
> 
> Rob AT desktop2 /
> $ chmod 777 .
> chmod: changing permissions of `.': Permission denied
> 
> After all that I get:
> 
> Rob AT desktop2 /
> $ ls -alrt
> total 165
> dr-xr-xr-x   1     0 root       0 Jan  1  1970 cygdrive
> dr-xr-xr-x   1 Rob   None       0 Dec  1  2006 proc
> d---r-x---+  7 admin Users      0 Mar 12 12:37 var
> d---r-x---+  2 admin Users      0 Mar 12 12:37 dev
> d---r-x---+  2 admin Users      0 Mar 12 12:37 tmp
> ----r-x---+  1 admin Users     57 Mar 12 12:38 Cygwin.bat
> drwxrwxrwx+  3 Rob   None       0 Mar 12 12:38 home
> d---r-x---+ 12 admin Users   4096 Mar 12 12:38 ..
> d---r-x---+ 12 admin Users   4096 Mar 12 12:38 .
> d---r-x---+ 11 admin Users   4096 Mar 12 12:50 etc
> d---r-x---+ 11 admin Users  12288 Mar 12 12:51 lib
> d---r-x---+ 16 admin Users   4096 Mar 12 12:51 usr
> d---r-x---+  2 admin Users 131072 Mar 15 21:20 bin
> ----r-x---+  1 admin Users   7022 Mar 15 21:20 Cygwin.ico

With such a mess, first fix your directories, than the files.
Or better start from scratch.

A sane initial permission concept for cygwin would help.
Your big problem is that cygwin has no write access, the user even no 
read access! d---r-x---+

The second problem is the +, the special Windows ACL, which should not 
be here on a plain new cygwin installation.
POSIX access() doesn't check the additional ACL's, just the underlying 
windows calls allow or deny access then. This can be right or this can 
be contradictive.

> and running 'make' terminates as before.

Besides the obvious not-writable lib/auto dir, note that Dynaloader 
requires the generated dll to be +x. Of course the blib/arch dir also as 
for every dir.

Module::Install had a recent bug in doing POSIX::access() checks for 
writable dirs, which is wrong for your cases. Without the +
(additional ACL's) it works fine.

> This is a fairly new installation of Cygwin, btw. (I stuffed up the old 
> one trying to install rsync and had to delete the lot.) So there could 
> be some additional stuff here that needs sorting out. I have, however, 
> already built some perl extensions using the 5.8.8 build that was 
> installed when I created this fresh build of Cygwin.
> 
> And the fact that I can build 5.8.8 from source, but not 5.10.0 leads me 
> to wonder whether this is instead a query that should be raised on p5p ?

I would rather blaim cygwin and esp. you. Module::Install is also faulty.
Note that perl 5.10 is a bit stricter, mainly in taint checking. Group 
writable is forbidden with 5.10 taint now.

> Thanks for the reply, Matthew ... appreciated.

I have a ACL sanifier in my /usr/local/bin/fixfacl,
which recursively removes first the additional ACL's for directories, 
and then for the files, and simply overwrites it with my preferred 
user/group.

But this a special hack just for me and my seperation into executable or 
non executable files. I don't care for the additional ACL's.
Don't touch symlinks with setfacl or chmod!

#!/bin/sh
if [ "$1"="." ]; then
   setfacl -f /etc/facl.dir .
   find -type d \! -name '.*' -exec setfacl -f /etc/facl.dir '{}' \;
   find -type f -executable -exec setfacl -f /etc/faclx.file '{}' \;
   find -type f \! -executable -exec setfacl -f /etc/facl.file '{}' \;
   exit
fi
if test -d "$1"; then
   setfacl -f /etc/facl.dir "$1"
   exit
fi
if test -f "$1"; then
   test -x "$1" && setfacl -f /etc/faclx.file "$1" && exit
   setfacl -f /etc/facl.file "$1"
   exit
fi

The simple and destructive way would be:
   find -type d -exec setfacl -f /etc/facl.dir '{}' \;
   find -type f -exec setfacl -f /etc/facl.file '{}' \;
This would destroy all executable bits.
-- 
Reini Urban
http://phpwiki.org/  http://murbreak.at/

--------------010404020503050501060703
Content-Type: application/x-director;
 name="facl.dir"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="facl.dir"

IyBmaWxlOiAuCiMgb3duZXI6IHJ1cmJhbgojIGdyb3VwOiByb290CnVzZXI6
OnJ3eApncm91cDo6ci14Cm1hc2s6cnd4Cm90aGVyOnIteAo=

--------------010404020503050501060703
Content-Type: text/plain;
 name="facl.file"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="facl.file"

# file: lines.png
# owner: rurban
# group: users
user::rw-
group::r--
mask:rwx
other:r--

--------------010404020503050501060703
Content-Type: text/plain;
 name="faclx.file"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="faclx.file"

# file: .
# owner: root
# group: users
user::rwx
group::rwx
mask:rwx
other:r-x


--------------010404020503050501060703
Content-Type: text/plain; charset=us-ascii

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/
--------------010404020503050501060703--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019