Ansible – 模式755的目录和644的文件recursion
我想允许任何人列出并读取我的目录树中的所有文件,但我不想让这些文件成为可执行文件:
dir \subdir1 file1 \subdir2 file2 ... \subdirX fileX
以下任务使我的目录和文件可读,但它也使所有文件都可执行:
- name: Make my directory tree readable file: path: dir mode: 0755 recurse: yes
另一方面,如果我select模式0644,那么我所有的文件都不可执行,但我无法列出我的目录。
是否有可能为目录树中的所有目录设置模式755并为所有文件设置644?
谢谢。
自1.8版以来,Ansible支持符号模式。 因此,以下将执行您想要的任务:
- name: Make my directory tree readable file: path: dir mode: u=rwX,g=rX,o=rX recurse: yes
因为X(而不是x)只适用于至less有一个x位设置的目录或文件。
Ansible文件/复制模块不会为您提供基于文件types的指定权限的粒度,因此您可能需要按照以下方式手动执行此操作:
- name: Ensure directories are 0755 command: find {{ path }} -type d -exec chmod -c 0755 {} \; register: chmod_result changed_when: "chmod_result.stdout != \"\"" - name: Ensure files are 0644 command: find {{ path }} -type f -exec chmod -c 0644 {} \; register: chmod_result changed_when: "chmod_result.stdout != \"\""
这些将通过{{ path }}
recursion并将每个文件或目录的权限更改为指定的权限。