创建子目录时 ACL 设置未被正确继承

创建子目录时 ACL 设置未被正确继承

我正在尝试将 ACL 扩展到正在父级下创建的子目录,但由于某种原因,我的一个组被切换到 #effective rx,并且掩码正在更改。有什么想法吗?是否有一些默认的 umask?

Administrator@MyServer ~
$ setfacl -m d:u:Someuser:r-- somedir

Administrator@MyServer ~
$ getfacl somedir/
# file: somedir/
# owner: Administrator
# group: None
user::rwx
group::r-x
group:user1:r-x
group:user2:rwx          
mask:rwx
other:r-x
default:user::rwx
default:group::r-x
default:group:user1:r-x
default:group:user2:rwx
default:mask:rwx
default:other:r-x

-mkdir /somedir/somedir

Administrator@MyServer ~
$ getfacl somedir/somedir
# file: somedir/somedir
# owner: Administrator
# group: None
user::rwx
group::r-x
group:user1:r-x
group:user2:rwx      #effective:r-x       
mask:r-x
other:r-x
default:user::rwx
default:group::r-x
default:group:user1:r-x
default:group:user2:rwx
default:mask:rwx
default:other:r-x

答案1

您是否绝对确定您曾经使用过mkdir somedir/somedir和没有使用过-p类似的选项mkdir -p somedir/somedir

由于mkdir -p在 2014 年之前发行的版本(coreutils < 8.22)上有一个严重的错误,请参见ACL 和 umask 之间的冲突

适用于子目录的 ACL 条目是default:mask

$ getfacl somedir/
default:group:user1:r-x
default:group:user2:rwx
default:mask:rwx
default:other:r-x

默认值:掩码:rwx,因此子目录本来应该

group:user1:r-x
group:user2:rwx
mask:rwx

但是mask是mask:r-x,所以权限降低到rx:

group:user2:rwx      #effective:r-x  
mask:r-x

为了更好地理解 Unix 组权限和 ACL 之间的关系,请阅读为什么组上的 chmod(1) 会影响 ACL 掩码?

结论

  • mkdir -p使用 ACL 时不要使用(除非您运行 Debian/Jesise、RHEL7……)
  • chmod g+w somedir/somedir使用或修复您的问题setfacl -m mask:rwx somedir/somedir

相关内容