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 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.

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.

Ken

--
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


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