Ansible:为文件和目录设置 ACL

Ansible: Set an ACL to files and directories

我知道如何在ansible中使用acl模块。效果很好,但并不完全符合我的要求。

我有一个 log_dir 变量,其中包含日志文件的确切路径。我的目标是为文件设置一个 ACL,并且只为父目录设置一个基本目录。

例如:

日志文件:/some/highly/fancy/secured/file

日志路径:/some/highly/fancy/secured

现在我想要一个 ACL 到 /some 但不是(例如):

/some/otherDirectory 或 /some/highly/fancy/A/file

你知道怎么处理吗?

感觉超级 hacky,但像这样的东西会起作用。不过,我确实希望有一个更优雅的解决方案。

  vars:
    file: /some/highly/fancy/secured/file

  tasks:
    - acl:
        path: "/{{ file.split('/')[1:index+2] | join('/') }}"
        # <snip>
      loop: "{{ file.split('/')[1:] }}"
      loop_control:
        index_var: index

基本思路是利用文件路径拆分成列表来计算循环多少次。然后在循环内再次将文件路径拆分为一个列表,并将其从基本文件夹切片到循环索引,然后再次将其加入文件路径。我们跳过列表中的第一个条目,因为它是空白的,所以需要调整列表切片中的索引值。