Cygwin: chmod: don't drop default ACEs from directory ACLs
commitbc444e5aa4
introduced a call to get_posix_access() with a NULL pointer for the mode_t parameter because the value is not needed later on... entirely ignoring the fact that the mode_t bits are checked for the object being a directory. In turn, the get_posix_access() call never checked for default ACEs and returned only the standard ACEs. Thus, every chmod call on a directory dropped the default ACEs from its permissions, as well as the default NULL deny-ACE used to store specific bits. It got also impossible to set the sgid bit on directories. Fixes:bc444e5aa4
("Reapply POSIX ACL changes.") Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
283583c5f2
commit
9afd4c0558
|
@ -764,11 +764,12 @@ fhandler_disk_file::fchmod (mode_t mode)
|
||||||
aclent_t *aclp;
|
aclent_t *aclp;
|
||||||
bool standard_acl = false;
|
bool standard_acl = false;
|
||||||
int nentries, idx;
|
int nentries, idx;
|
||||||
|
mode_t attr = pc.isdir () ? S_IFDIR : 0;
|
||||||
|
|
||||||
if (!get_file_sd (get_handle (), pc, sd, false))
|
if (!get_file_sd (get_handle (), pc, sd, false))
|
||||||
{
|
{
|
||||||
aclp = (aclent_t *) tp.c_get ();
|
aclp = (aclent_t *) tp.c_get ();
|
||||||
if ((nentries = get_posix_access (sd, NULL, &uid, &gid,
|
if ((nentries = get_posix_access (sd, &attr, &uid, &gid,
|
||||||
aclp, MAX_ACL_ENTRIES,
|
aclp, MAX_ACL_ENTRIES,
|
||||||
&standard_acl)) >= 0)
|
&standard_acl)) >= 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,3 +9,6 @@ Addresses: https://cygwin.com/pipermail/cygwin/2023-January/252928.html
|
||||||
|
|
||||||
Create directories with correctly umask-filtered default ACEs.
|
Create directories with correctly umask-filtered default ACEs.
|
||||||
Addresses: https://cygwin.com/pipermail/cygwin/2023-February/253037.html
|
Addresses: https://cygwin.com/pipermail/cygwin/2023-February/253037.html
|
||||||
|
|
||||||
|
Don't accidentally drop the default ACEs when chmod'ing directories.
|
||||||
|
Addresses: https://cygwin.com/pipermail/cygwin/2023-February/253037.html
|
||||||
|
|
Loading…
Reference in New Issue