答案1
答案就在您链接的资源中。
从这里:
getfacl -R / >permissions.facl setfacl --restore=permissions.facl
(在您的情况下,它将代替/some/dir
)/
。
进而man 1 setfacl
[强调我的]:
--restore=file
恢复由或类似程序创建的权限备份getfacl -R
。使用此机制恢复完整目录子树的所有权限。如果输入包含所有者注释或组注释,则setfacl
尝试恢复所有者和所属组。[…]
请注意你需要CAP_CHOWN
能力更改所有权。这适用于任何方法。
如果需要恢复仅有的用户+组(不触及 ACL)permissions.facl
,至少有两个选项:
- 解析文件并动态构建包含多
chmod
行的脚本。我不会在这里构建解析器。注意文件名(即# file:
条目)可能包含翻译的麻烦/无法打印的字符,您需要将它们翻译回来。 可能的解决方法(未经测试!):
getfacl -R
用保存当前元数据current.facl
;- 删除所有拥有者评论和群组评论
current.facl
; - 从中恢复元数据
permissions.facl
; - 从 恢复元数据
current.facl
。
从 恢复
current.facl
将恢复从 恢复的所有操作permissions.facl
,用户+组除外。最终只有用户+组将依赖于permissions.facl
。