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