From: Greg Freemyer <greg.freemyer@gmail.com>
To: Linda Walsh <cygwin@tlinx.org>
Cc: "cygwin@cygwin.com" <cygwin@cygwin.com>
Subject: Re: cygwin potentially corrupting permissions?
Date: Thu, 24 Sep 2015 16:13:00 -0000 [thread overview]
Message-ID: <CAGpXXZJeWs33BJi7qROduZEhTx1pXXXseTbfXu+QP8+cf_r5hQ@mail.gmail.com> (raw)
In-Reply-To: <560366EE.5020207@tlinx.org>
Linda,
We seem to travel the same mailing lists. This is my first time to cygwin's.
I saved your script as "lsacl.txt". Then I used "cp lsacl.txt it" to
make a copy.
The copy is permission denied for reading. Basic ls -l shows no
difference (as expected)
$ ls -l lsacl.sh it
----rwx---+ 1 gaf None 1630 Sep 24 12:05 it
----rwx---+ 1 gaf None 1630 Sep 24 12:00 lsacl.sh
But your script does show a difference:
$ ./lsacl.sh lsacl.sh it
[u::---,g::---,g:root:rwx,g:Authenticated
Users:rwx,g:SYSTEM:rwx,g:Users:r-x,m:rwx,o:---/] lsacl.sh
[u::---,g::r-x,g:root:rwx,g:Authenticated
Users:rwx,g:SYSTEM:rwx,g:Users:r-x,m:rwx,o:---/] it
My user id is "gaf".
fyi: I thought I knew how to read an ACL, but the above makes little
sense to me. Note I can cat out "lsacl.sh", but I can't cat out "it".
Greg
--
Greg Freemyer
www.IntelligentAvatar.net
On Wed, Sep 23, 2015 at 10:58 PM, Linda Walsh <cygwin@tlinx.org> wrote:
> Greg Freemyer wrote:
>>
>> All,
>>
>> I've noticed on 2 different machines that if I copy (cp) a file I can
>> read with cygwin, I don't have permission to read the copy.
>
> ---
> What does the acl say?
>
> (Attached a script, lsacl, that I use -- it works
> with linux or cygwin and allows wildcards).
>
>
> #!/bin/bash
>
> ## $Id: lsacl,v 1.5 2015-08-02 10:29:25-07 law Exp law $
> # Version 2 -- try to work with getfacl on cygwin
> #
>
>
> shopt -s expand_aliases
> alias int=declare\ -i sub=function string=declare
>
> gfacl=$(type -P getfacl)
>
> if ! type -f cygwin 2>/dev/null ; then
> _un_=$(type -P uname)
> if [[ $_un_ ]] ; then _os_=$($_un_ -o);
> elif [[ -e /proc/sys/kernel ]]; then _os_=Linux;
> else _os_=Cygwin;
> fi
> if [[ $_os_ =~ Cygwin ]]; then function cygwin () {
> return 0; }
> else function cygwin () { return 1; }
> fi
> unset _un_ _os_
> export -f cygwin
> fi
>
> if cygwin 2>/dev/null ;then
> [[ $gfacl ]] || { printf "FATAL: Cannot find getfacl in path\n";
> exit 1; }
> sub gfacl () { "$gfacl" "$@"; }
> else
> ## linux version has broken semantics requiring "-p"
> sub gfacl () { "$gfacl" -p "$@" ; }
> fi
>
> export -f gfacl
>
>
> sub facl2str {
> string fn=${1:?"Need pathname"}
> string s1='/^\#.*$/d; /^\s*$/d; s/\s*#.*$//;
> s/^(.)(ser|roup|ask|ther):/\1:/; y/\n/,/'
> string facl=$(gfacl -a "$fn"|sed -r "$s1"|tr "\n" ",")
> facl=${facl%,}
> string dacl=$(gfacl -d "$fn"|sed -r "s/^default://; $s1"|tr "\n"
> ",")
> dacl=${dacl%,}
> printf "[%s/%s]\n" "$facl" "$dacl"
> }
>
>
>
> int acllen=0 maxfnln=0
> #for fn in "$@" ; do if ((maxfnln<${#fn})); then maxfnln=${#fn}; fi ; done
>
> sub acl_str () {
> if cygwin ;then
> perm=$(facl2str "$fn")
> else
> qfn=$(printf "%q " "$fn")
> out="$(chacl -l "$fn")"
> perm="${out#$qfn}"
> fi
> printf "%s\n" "$perm"
> }
>
>
> for fn in "$@"; do
> int max=40
> perm=$(acl_str "$fn")
> int len=${#perm}
> if ((len>_acl_len_)); then acllen=len; fi
> if ((acllen>max)); then acllen=max; fi
> printf "%-${acllen}s %s\n" "$perm" "$fn"
> done
>
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
next prev parent reply other threads:[~2015-09-24 16:13 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-23 22:58 Greg Freemyer
2015-09-24 2:59 ` Linda Walsh
2015-09-24 16:13 ` Greg Freemyer [this message]
2015-09-24 18:06 ` Linda Walsh
2015-09-24 18:53 ` Greg Freemyer
2015-09-24 19:22 ` Ken Brown
2015-09-25 2:39 ` Greg Freemyer
2015-09-24 19:28 ` Linda Walsh
2015-09-25 2:18 ` Greg Freemyer
2015-09-25 3:06 ` Linda Walsh
2015-09-24 18:50 ` Andrey Repin
2015-09-24 19:26 ` Linda Walsh
2015-09-25 1:50 ` Andrey Repin
2015-09-25 2:45 ` Greg Freemyer
2015-09-25 2:56 ` Linda Walsh
2015-09-25 8:35 ` Andrey Repin
2015-09-25 8:48 ` Linda Walsh
2015-09-25 2:31 ` Greg Freemyer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAGpXXZJeWs33BJi7qROduZEhTx1pXXXseTbfXu+QP8+cf_r5hQ@mail.gmail.com \
--to=greg.freemyer@gmail.com \
--cc=cygwin@cygwin.com \
--cc=cygwin@tlinx.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).