如何在保留现有权限的同时使用setfacl赋予写权限?

我想给予一个特定的用户在一个特定的用户recursion写权限没有失去任何现有的权限,用户可能有。 我相信我可以使用这样的东西给用户的写权限:

setfacl -R -mu:user:w dir/* 

但是这个问题是它带走了用户可能已经拥有的任何现有权限。 例如,如果用户在执行setfacl命令之前具有执行权限,则将用写入权限replace执行权限。

如何在保留现有权限的同时向用户提供写入权限?

你想要什么被称为“相对权限”,这是一些setfacl实现提供的function ,基本上使用经典的chmod使用的“+/-”语法

但是,至less在RHEL7和Ubuntu 16.04 LTS上, setfacl不提供这样的function。 例如,如setfacl -m user:root:+r /root/返回一个错误,指出setfacl: Option -m: Invalid argument near character 11

如果你的setfacl实现没有这个特性,你有两种可能:

  • 使用getfacl所有 ACL输出到文件,编辑这样的文件以匹配您所需的访问权限,然后使用setfacl --restore加载/应用新的权限;
  • 创build一个脚本来迭代每个文件,读取当前的ACL并写入新的访问权限。