首页 > 解决方案 > 仅更改文件的权限

问题描述

假设我有多个目录,其中包含多个需要可执行权限的文件。我尝试使用以下 yaml,它确实将所有文件权限更改为 744,但它也更改了文件夹filesbin744。有什么方法可以只更改文件,而不更改目录?

- name: chmod
  ignore_errors: yes
  file: 
    path: '{{ item.path }}'
    state: '{{ item.state }}'
    owner: '{{ item.owner }}' 
    group: '{{ item.group }}'
    recurse: '{{ item.recurse }}'
    mode: '{{ item.mode }}'
  with_items:
    - { path: '/opt/files', state: directory, owner: dummy, group: dummy, recurse: true, mode: 744 }
    - { path: '/opt/bin', state: directory, owner: dummy, group: dummy, recurse: true, mode: 744 }

标签: ansible

解决方案


您可以编写如下所示的内容。尽管可能需要进行一些调整,但尚未执行代码。

- name: Find files
  find:
    paths:
      - /opt/files
      - /opt/bin
    recurse: yes
  register: file_list

- name: chmod
  ignore_errors: yes
  file: 
    path: '{{ item.path }}'
    owner: 'dummy' 
    group: 'dummy'
    mode: '744'
  with_items:
    - “{{ file_list.files }}”

推荐阅读