ansible - Ansible 递归设置目录权限
问题描述
我正在尝试为列表中的目录设置权限。下面是一个示例列表,我希望dirA
、dirB
和获得许可。dirC
dirD
o-w
"__cronjob_paths": [
"/dirA/dirB",
"/dirC/dirD",
]
file
模块有recursive
选项,但它也设置目录中文件的权限,所以它不是一个选项。
正则表达式或过滤器是解决此问题的最佳方法吗?也许过滤掉/
并将目录保存到另一个列表中,我可以循环访问并设置权限?
我还需要记住,系统中可能有其他目录具有与列表中的目录同名的目录(不应该得到o-w
)
解决方案
创建子目录和索引的列表,例如
- set_fact:
_paths: "{{ _paths|d([]) + [{'dir': _dir, 'idx': _idx}] }}"
loop: "{{ __cronjob_paths }}"
vars:
_dir: "{{ item.split('/')|select() }}"
_idx: "{{ range(1, _dir|length + 1) }}"
给
_paths:
- dir:
- dirA
- dirB
idx:
- 1
- 2
- dir:
- dirC
- dirD
idx:
- 1
- 2
现在,您可以迭代idx子元素并加入子目录,例如
- debug:
msg: "chmod o-w /{{ item.0.dir[:item.1]|join('/') }}"
with_subelements:
- "{{ _paths }}"
- idx
给
msg: chmod o-w /dirA
msg: chmod o-w /dirA/dirB
msg: chmod o-w /dirC
msg: chmod o-w /dirC/dirD
如果这是您想要的,请继续使用命令或文件模块。
推荐阅读
- visual-studio-code - 选择多行时的 VS Code 键盘快捷键
- jquery - 将项目添加到 Select2 级联
- java - 如何从 Android 中的应用程序设置中选择语言?
- python - DJANGO - 使用按钮调用 TKINTER 程序
- elasticsearch - 弹性搜索边缘 ngram 未返回所有预期结果
- css - CSS 媒体查询适用于桌面大小
- swiftui - SwiftUI 在选项卡之间导航的正确方式
- javascript - 用于在 html oninput 中添加多个数组的 Javascript
- git - 如何使用 git filter-repo 同时考虑其文件路径和数据来修改 blob?
- android - 如何在每个活动或片段的底部显示 exoplayer 的迷你控制器?