This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: (call-process ...) hangs in emacs


On Aug 27 08:52, Ken Brown wrote:
> On 8/27/2014 4:42 AM, Corinna Vinschen wrote:
> >On Aug 26 18:12, Ken Brown wrote:
> >>On 8/26/2014 2:55 PM, Achim Gratz wrote:
> >>>2) Files that have no POSIX permissions (filemode 0000) and where access
> >>>is granted via ACL only get always opened as "read-only" and you have to
> >>>C-x C-q them before saving.  It appears that this is Cygwin specific
> >>>since on Linux the same version copes with that situation correctly
> >>>(however, the mask bits in the ACL get displayed in the group portion of
> >>>the file mode, which I've never seen happen on Cygwin, so this may be
> >>>something that Cygwin needs to do -- maybe that'd even solve the
> >>>problems that Perl has in the same situation).
> >>
> >>AFAICT, emacs decides whether the file is writable via the system call
> >>faccessat.  (See the function 'check_writable' in src/fileio.c.)  This is
> >>not Cygwin specific.  So faccessat must be returning failure in the scenario
> >>you described.  I don't know if that's a Cygwin bug or not.
> >
> >faccessat/access/eaccess don't try to be intelligent by themselves.
> >Rather they just call a Windows function if the filesystem is mounted
> >with "acl" mount flags:
> >
> >- Fetch file's security descriptor
> >- Create process impersonation token.
> >- Call NtAccessCheck
> >- If NtAccessCheck returns "not allowed", check for backup/restore
> >   privileges via NtPrivilegeCheck.
> >
> >In "noacl" mode or on filesystems not supporting ACLs, access uses the
> >st_mode flags from stat() to figure out the permissions.
> >
> >The relevant parts of the implementation are the check_file_access and
> >subsequently called check_access functions in security.cc.
> >
> >If you see a bug there, please let me know.
> 
> Achim, could you send me a recipe for reproducing the problem so that I can
> test further?  Please be very detailed; I have no experience with ACLs.

I'd be interested in a way to reproduce this as well.  On *real* local
or remote NTFS, if possible.

> >>BTW, emacs on Cygwin doesn't directly check ACLs, because the relevant
> >>configure test fails.
> >
> >Works for vim.  Does the Emacs configure test only check for POSIX
> >ACL functions and not for Solaris ACL functions, by any chance?
> 
> I spoke too soon.  It does detect that Cygwin has certain ACL functions.
> But the feature that Achim was asking about seems to get used only on
> systems that have acl_get_file.  I guess that's a POSIX ACL function.

Yes, it is.  It's pretty much the same as the Solaris/Cygwin function

  int acl (const char *path, int cmd, int nentries, aclent_t *aclbufp);

See http://docs.oracle.com/cd/E23823_01/html/816-5167/acl-2.html for
a description.  We're only supporting the aclent_t type (funny, isn't it?)
which is pretty much based on POSIX ACLs and which is defined in
/usr/include/cygwin/acl.h.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

Attachment: pgp2xOk8ufyGg.pgp
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]