Подтвердить что ты не робот

Ansible - режим 755 для каталогов и 644 для файлов рекурсивно

Я хотел бы разрешить всем пользователям перечислять и читать все файлы в моем дереве каталогов, но я не хочу, чтобы файлы исполнялись:

dir
  \subdir1
      file1
  \subdir2
      file2
  ...
  \subdirX
      fileX

Следующая задача делает мои каталоги и файлы доступными для чтения, но также делает все файлы исполняемыми:

- name: Make my directory tree readable
  file:
    path: dir
    mode: 0755
    recurse: yes

С другой стороны, если я выбираю режим 0644, то все мои файлы не исполняются, но я не могу перечислить свои каталоги.

Можно ли установить режим 755 для всех каталогов и 644 для всех файлов в дереве каталогов?

Спасибо.

4b9b3361

Ответ 1

Начиная с версии 1.8, Ansible поддерживает символические режимы. Таким образом, следующая задача выполнит требуемую задачу:

- name: Make my directory tree readable
  file:
    path: dir
    mode: u=rwX,g=rX,o=rX
    recurse: yes

Поскольку X (вместо x) применяется только к каталогам или файлам с хотя бы одним набором бит.

Ответ 2

Модули Ansible file/copy не дают вам детализации заданий разрешений на основе типа файла, поэтому вам, скорее всего, нужно будет сделать это вручную, выполнив что-то в этом направлении:

- 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 }} и изменению разрешений каждого файла или каталога на указанные разрешения.