Mail Archives: cygwin/2008/03/22/11:49:00
--------------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 -