[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#17810: 24.3.91; file-acl does not return ACL on Mac OS X
From: |
YAMAMOTO Mitsuharu |
Subject: |
bug#17810: 24.3.91; file-acl does not return ACL on Mac OS X |
Date: |
Thu, 19 Jun 2014 19:39:14 +0900 |
User-agent: |
Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (Shijō) APEL/10.6 Emacs/22.3 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI) |
On Mac OS X >= 10.5, the directory ~/Desktop has ACL, but (file-acl
"~/Desktop") returns nil.
$ ls -lde ~/Desktop
drwx------+ 4 mituharu staff 136 6 11 12:04 /Users/mituharu/Desktop
0: group:everyone deny delete
A comment in lib/qcopy-acl.c and lib/qset-acl.c says:
# if !HAVE_ACL_TYPE_EXTENDED
/* Linux, FreeBSD, IRIX, Tru64 */
...
# else /* HAVE_ACL_TYPE_EXTENDED */
/* Mac OS X */
/* On Mac OS X, acl_get_file (name, ACL_TYPE_ACCESS)
and acl_get_file (name, ACL_TYPE_DEFAULT)
always return NULL / EINVAL. You have to use
acl_get_file (name, ACL_TYPE_EXTENDED)
or acl_get_fd (open (name, ...))
to retrieve an ACL.
On the other hand,
acl_set_file (name, ACL_TYPE_ACCESS, acl)
and acl_set_file (name, ACL_TYPE_DEFAULT, acl)
have the same effect as
acl_set_file (name, ACL_TYPE_EXTENDED, acl):
Each of these calls sets the file's ACL. */
So, the following lines in src/fileio.c seems to always result in
returning Qnil.
acl = acl_get_file (SSDATA (absname), ACL_TYPE_ACCESS);
if (acl == NULL)
return Qnil;
If I change the above ACL_TYPE_ACCESS to ACL_TYPE_EXTENDED as an
experiment, then I get the following string as a result of (file-acl
"~/Desktop"):
"!#acl 1
group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:delete
"
And I could pass it to set-file-acl to set ACL of another file.
YAMAMOTO Mitsuharu
mituharu@math.s.chiba-u.ac.jp
- bug#17810: 24.3.91; file-acl does not return ACL on Mac OS X,
YAMAMOTO Mitsuharu <=