是否有类似 getfacl/setfacl 的针对用户/组的工具?

是否有类似 getfacl/setfacl 的针对用户/组的工具?

我正在尝试将目录备份到云存储,但由于大多数解决方案本身不支持指定文件的用户/组,因此我想将用户/组保存到文件并备份该文件,以便在需要备份时可以恢复它们。

getfacl/setfacl可以用于 rwx 权限(如这里所述),但是有没有针对用户/群组的类似工具?

答案1

答案就在您链接的资源中。

这里

getfacl -R / >permissions.facl
setfacl --restore=permissions.facl

(在您的情况下,它将代替/some/dir/

进而man 1 setfacl[强调我的]:

--restore=file
恢复由或类似程序创建的权限备份getfacl -R。使用此机制恢复完整目录子树的所有权限。如果输入包含所有者注释或组注释,则setfacl尝试恢复所有者和所属组。[…]

请注意你需要CAP_CHOWN能力更改所有权。这适用于任何方法。


如果需要恢复仅有的用户+组(不触及 ACL)permissions.facl,至少有两个选项:

  1. 解析文件并动态构建包含多chmod行的脚本。我不会在这里构建解析器。注意文件名(即# file:条目)可能包含翻译的麻烦/无法打印的字符,您需要将它们翻译回来。
  2. 可能的解决方法(未经测试!):

    • getfacl -R用保存当前元数据current.facl
    • 删除所有拥有者评论和群组评论current.facl
    • 从中恢复元数据permissions.facl
    • 从 恢复元数据current.facl

    从 恢复current.facl将恢复从 恢复的所有操作permissions.facl,用户+组除外。最终只有用户+组将依赖于permissions.facl

相关内容